AB Arboga U2508: adding a “z-axis” digital indicator

The U2508 quill only has a rather coarse indicator, merely, a printed scale (which I had to replace with a new scale, because the old one was completely worn). Still, the quill can be adjusted quite precisely by using the handwheel that will allow a rather precise adjustment, with 2 mm pitch per turn.

The machine has not enough space for a glass scale, and this would be an overkill anyway. Looking around, I found this Wabeco model 11371 digital caliper, 0.01 mm resolution, and usually accurate to within 0.08 mm – most are better than that. The price is quite reasonably, found one set for EUR 38.99, delivered.

For such price, don’t expect too much precision – the mounting holes were quite off-position, and Wabeco confirmed that this is quite common for these units… well, you have to machine the bracket to the caliper’s mounting dimensions, but we aren’t going to produce these brackets in series anyway.

To connect the indicator to the quill rod, a quite sophisticated piece was machined from a scrap piece of high-tensile aluminum alloy.

A few holes drilled and tapped, and – it’s working quite fine.

Another view…

For the mounting of the readout unit, a simple strip of brass was found to be good enough, mounted with two M3 screws to the U2508 – so it can be easily removed, in case the future owner of the U2508, if any, doesn’t like the addition.

Some tests were done, and within 20-30 mm of travel, I could not find any measurable deviation. Don’t have any long gage blocks here but may check it later in case I need super accuracy for some special work.

AB Arboga Maskiner U2508: a simple DRO (linear glass scale readout)

Recently, I have moved a U2508 milling/drilling machine to my Ludwigshafen workshop (from the remote workshop, where there is more space for heavy machinery). It’s a really good machine, slim, but very well built and useful for all kinds of drilling and milling work. It has an automatic feed in in one direction, and the dials are usually quite accurate.

Still, it will be a great advantage of time saving and some accuracy improvement to add a linear scale, at least in the manually-moving direction, so I can mill shoulders and similar features to a very high level of precision and repeatability.

Also the quill will get an electronic readout – but this will be covered later.

Luckily, I had a simple readout around, dating back to 2007, based on an ATmega8515, with some logic, and MAX7219 display drivers.

The case was made from melamine composite boards, these are oil and grease resistant – excellent for workshop use.

Here, the schematic of the input section. The sampling frequency of the counter is about 62.5 kHz, so the TTL signals from the glass scale first pass through a ~160 kHz low pass filter, and are then squared up by Schmitt triggers, 74LS14.

The main processor is running at 16 MHz, and very few extra parts are needed to drive the LED 7-segment displays, using two MAX7219 in chain configuration. The LED segment displays are much preferred for workshop and DRO use, because speed and clarity is everything for this application, and nothing can really replace the good old LED 7-segment displays here.

The power section, note that the regulator will need a heatsink of about 10~15 K/W capacity
– the unit is drawing up to 0.5 Amps at 5 Volts.

The input section…

The drivers…

The wiring, all quickly soldered together with some copper wire.

The code – it uses a gray code approach with continuous sampling of the A/B inputs. This approach is easily coded, and has very deterministic timing, and noise immunity. Any errors found (like, if both lines change state within on sampling cycle) will be indicated by a red LED.


Now, I only need to mount the glass scale (found one that fits in may parts collection…), and replace the “minus” LED (a 3 mm LED) with a minus bar-shaped LED, just for the better looks.

Note that the software has provisions for a matrix key-pad, but for the present application, the “zero” buttons are all that is needed.

Chuck tender/Bug Filet: Just let it soften in the oven

The chuck tender, also called “bug filet” or “fake filet” in German, is ideally suited for slow cooking. Here my favorite recipe (most just to remember myself, but you may give it a try as well!).

Bug filet marked in red:

Step (1): prepare/wash/dry the meet, about 3-3.5 pounds are ideal.

Step (2): roast all around in hot oil, in a large pot. When almost finished, add about 4 onions, cut into mid-size pieces, and roast further

Step (3): put the meat into a roaster, or other container that is fire-proof and has a lid.

Step (4): add a mixture of about 200 mL of water, 50 mL balsamic vinegar to the onions in the pot, stir thoroughly to remove and dissolve all residue from the pot, and add the liquid to the roaster. You may add some other root vegetables, carrots etc.

Step (5): cover the meat with a mixture of mustard, salt and pepper. Cover.

Step (6): put into the preheated oven, at about 130~140°C. Let cook for about 4 hours. Usually no need to touch, open, etc. – provided the roaster is tightly closed. You can also cook it at 120°C for 5 hours. Under no circumstances use a temperature above 140°C, or any type of short cooking with this meat – it will be tough, and can’t develop the flavor.

Step (7): take the meet from the roaster (check core temperature if you wish, should be about 80°C). Let it rest for 10 minutes. In the meantime, bring the liquids in the roaster to a boil, add some salt, as needed, and add a bit a mixture of starch and water (while boiling and stirring) to give the sauce some texture.

Step (8): cut the meet into rather this slices. Serve with some mashed potatoes.

This dish can be easily stored in the freezer, and re-heated any time. The meet even improves in tenderness and taste.

Steamed dumplings: Dampfnudeln (original Swabian German type and recipe)

These are really delicious. In case you want to try, here is the recipe.


70 mL milk
60 g sugar
1 pck active dry yeast (or 1/2 cube of yeast)
300 g wheat flour
2 eggs
60 g butter

Prepare a soft dough, let rise for about 1 hour or double size.

Then, knead properly and form 7 pieces, and let rise for about 15 minutes.

In a deep (or medium-deep) pan heat a mixture of 100 mL milk, 30 g sugar, and 20 g butter.

Put the 7 pieces into the pan, and immediately close with a tight-closing lid (never open until done!!). Bring to a strong boil, for just a moment, and then regulate down the heat to mid-head (best done on induction or electric stove, may be hard to avoid burning the crust on a gas stove). For my local stove, I use setting 4 of 8 (max).

After about 20~25 minutes, the dumpling will fill the pan, and are done.

Best served with vanilla sauce, strawberry sauce, or similar.

EIP 545A Microwave Counter: Option 04, a dead eprom, and a noisy fan

Another one of the EIP 545A counters, that are for some reason very frequently seen at my workshop. The reason for this instrument being here on the bench is simply for the fact that I found it on ebay, for a very reasonable price, non-working, but with the 04 OCXO option.

The option 04 provides 10^-9 level frequency stability, per day.

The actual OCXO unit is an Ovenaire 49-38c model 10 MHz oscillator. Very similar OCXOs are used in various HP equipment of the time.

The first item to fix – the very noisy fan. An ETRI model 126-LF-182. Fortunately, a very common 115 V model.

Replacing fans, you can’t just go for the flow rating, but you also need to consider flow direction, static pressure (mostly related to the blade shape and RPM), noise level, lifetime, and bearing type (ball bearing).

Found a very similar NMB fan, which is available from new production, at a reasonable price.

For comparison, the ETRI data put into the NMB pressure vs. flow characteristics, as red dots. Indeed, quite similar.

When changing the cable, from the old to the new fan (EIP uses a special connector, so I needed to re-use the old connector) – seems EIP didn’t trust their crimping, the cable was additionally soldered to the crimp pin.

The new fan installed, make sure to use some insulation tubing (not present in all EIP counters, but was present in this one, and a good idea, because the fan cable runs directly underneath the top cover, and over time, could be damage and expose mains voltage to the case (not a good thing!).

Next fix – a broken tantalum on the front panel (capacitor was OK, but one wire broken off) – fortunately, it could be soldered from the top, because disassembling the from panel is quite a time consuming task.

Finally, all these things fixed, but still a non-working EIP. It would not even count low frequency, or show any reaction on the display. All voltages OK. That’s strange – most likely something with the CPU, data bus, or similar. So, swapped the main CPU/control board with a know-good assembly, and the EIP came back to life. After some checking and probing, found one EPROM that had corrupted data – no wonder it didn’t start up.

While cleaning the power supply (removed the card from the main board), another issue showed up: EIP didn’t use sufficient thermal grease to make good contact of the assembly cage (used as a heat sink), and the heat conductor of the power supply assembly. All screws were tight, but no contact.

So I cleaned up everything, and added some more generous amounts of a good thermal compound.

This is the top view: you can see the OCXO auxiliary power supply to the left, and the OCXO in the right upper corner.

Also quite interesting, this unit has seen some pretty famous owners, including, Bell Labs, AmerSatCo, and Verestar, Inc. – probably, it has seen good use, also judging from the noise fan, which has 50 khours+ lifetime.

One all had been fixed and confirmed running, I could not resist to also add the 02 option Power Meter Upgrade to this unit, it is in the end just few eproms, and some additional parts for the A107 assembly.

… counting at 10 GHz, and showing the power.

EIP 545A Microwave Counter: El Salvador’s brittle leg disease

One more EIP 545A made it to my workshop, all in good shape, but not counting any microwaves, or other signals. The “gate” LED stays on permanently, and no counting also with the test function 01, which directs a 200 MHz signal to the counter chain.

Looking at the schematics (fortunately, there is a full service manual available), the issue needs to be with the A107 gate generator assy. And, easy find, no 100 kHz signal present. So something must be wrong with the 10 MHz to 100 kHz divider. Soldered a wire to some of the signal points, and needed to go all the way back to pin 1 of the 1st divider, which is a decade counter. No signal present.

The EIP 545A has all-socketed ICs, so pulled the IC from the socket, and 1 leg missing! The leg number 1 that needs to take the 10 MHz and put it into the silicon chip. Temporarily soldered a wire onto the IC, and it solves the issue, but not a good permanent solution.

Also the other pins are very brittle, when you touch them, and bend a little bit, they break off, rather than bend. This is quite common for some old Texas Instrument TTL chips, not quite sure way – maybe some precipitation hardening of the copper material they used, or an interaction of the copper core with the tin/lead top layer. We don’t know, but it seems to be particularly common with El Salvador’s chips.

Here, a close-up of an (intentionally) broken leg.

Also the LS175 on the same board, although it was all good electrically, shows quite severe brittleness. I replaced with right away (with a 1977 date coded LS175, also from Texas Instruments!).

The LS490, unfortunately, none to be found in my basement storage of all kinds of electronics parts. Many counter TTLs, but no 490. An the offers, they are pretty pricey, and I want this instrument to be fixed today, rather than waiting days for some overprices NOS TTL ICs to be delivered.

Looking at the datasheet, and schematic, it is a simple :10 divider, there are many of these – including the much more common LS390, and the pin arrangement is almost identical.

We only need to route the output of the 1st divider (a :2 divider) to the input of the next stage – and the LS390 will work like a LS490. The red lines show the additional connection needed (you need to bend up the pins, because they are grounded on the EIP A107 board).

…A107 board with the LS390 installed.

With these fixes, the 100 kHz signal came back! And the gate LED flashing!!

Tested with the test function 01 for some hours, and with some shaking and bending of the boards – just to be sure that the repair is permanent – all counting along fine. Also in band 3, no issues, and very good sensitivity all the way up to 18 GHz.

The last thing to do to before the unit will leave the workshop – adjusted the TCXO to the right frequency, it was only off by a few Hz, after many years of aging.

Oil Temperature Measurement Ni50: several meters of very thin wire

This is a short post about a very complicated and difficult repair. The function of the device is simple, it is an oil thermometer, of an old Deutz Locomotive, based on a resistance thermometer. Nowadays, virtually all resistance thermometers use platinum elements, but at the time, nickel was preferred for some applications, because nickel has a higher temperature coefficient of its resistance, giving about 62 ohms increase, per 100 ohms at 0°C, vs. only about 38.5 ohms, for platinum.

Moreover, the device used is a 50 ohms Ni resistance thermometer (Ni50), which is even less common than 100 ohms (Ni100). To add to the difficulty, also the thermometer itself is faulty, the pointer missing, the front glass damaged. All a bit rusty.

That’s the formula to calculate the resistance at any temperature – this is what we need to get.

Now, we have several approaches to fix this.

(1) Put in an electronic meter, to show the temperature – don’t want to do it, because it doesn’t fit to the locomotive’s age, and probably will fail soon with all the noise, oil, moisture, and vibration.

(2) Use a modern Pt100 element with some extra resistance to get the readings approximately right – this could work, but the electro-mechanical resistance thermometer indicator uses a pretty large test current, about 20~30 mA, much more than the rating of current thin film Pt100 elements, and wire-wound Pt100 are very expensive, especially, the larger sizes.

(3) Buying a Ni50 element, or two Ni100 elements. I tried, good luck, maybe for EUR 1000 you can get a couple made by some specialized company, custom order.

Well, all these options can’t really work, so I decided to wind my own Ni50 elements. Fortunately, I had some Ni wire, 0.065 mm diameter, of a reputable supplier around in my workshop from another project (has been there for about 20 years!), so let’s give it a try.

Some calculation quickly shows that a single layer or wire will be enough. Such wire will easily work with the measurement current.

Winding of course needs to be done with a machine, at about 0.2 mm pitch, you can’t do this by hand.

The elements were then measured to get the resistance corresponding to the workshop temperature, about 56 ohms, and fixed the wire in-place on the machine, with some super glue. Afterwards, the wire was further covered with high-quality epoxy, and fitted into a thin-walled aluminum cylinder, for added protection, and thermal equilibration.

The old sensor housing had still some stuff in it (the old Ni wire, and some stinky resin), and almost impossible to re-use the old mounting case for the sensor. Fortunately, we have a CNC lathe around, so quickly machined a new case as well.

A layer of Capton tape wound around the protected element, just in case of some leakage current developing over time.

The element was then put in the mounting case with some silicon-base thermal compound.

Finally, the sensor completed, connected to the old, steel wire braided cable.

For test, a litte fixture was made, which can be heated up with a 4 ohms, “100 watt” resistor. Well, it easily gets up to 150 degrees C.

As you can see, all working pretty well!

Some hours later, also the instrument fixed, dial and case sandblasted and painted, etc.


Field test!!

Length Endcoder Interface: reading the Heidenhain

This little post may help those that are dealing with rotating or linear encoders, and have been wondering how to build a circuit that actually works, and with a degree of reliability useful for industrial applications. Around machine tools, and similar equipment that rely on such encoders, there is a lot of electric (and audible!) noise, so most hobby circuits that just take some TTL signals and do some quick stuff and calculations won’t work. Let’s try with a real circuit and some good code.

Here is the device, it’s a Heidenhain ST1278, 10x interpolated TTL output micrometer.

According to the datasheet, it has a 20 micron grating, which will lead to a 2 micron signal period, allowing us to get 0.5 micron resolution.

After carefully opening the plug, which has the Heidenhain logo, and secret Heidenhain electronics inside, I can tell you, Heidenhain uses a 75ALS194 line driver, to drive the RS422 output.

We will be using a DS26C32ATM line receiver, to get the differential signal converted back to TTL level.

The differential lines is terminated in 120 Ohms (watch out for their dissipation, if you consider building this in SMD), and has two 220 pF capacitors to absorb and high frequency noise. This thing is running at 100 kHz max.

The output of the DS26C32 is going right to a ATmega328P, sitting on a Arduino nano clone, for convenience. This uses the common CH340G seriell to USB converter to talk to a host computer.

This is the full board. USB power is enough, even for the Heidenhain, and a HX711, which is also used in this device, for other purposes.

How to get the Heidenhain signals decoded into position. Well, we follow a sampling approach here, rather than using any of the rising edges, triggers, etc. – we just sample the two Heidenhain lines at 125 kHz, and compare the sampling result to the last result (of sample N-1), to determine if the Heidenhain moved forward, backwards, or not at all. If both lines change status -we know that something went wrong (e.g., if Heidenhain is moving to fast, or if some noise comes in despite all the effort to keep the noise controlled by the high current differential line).
The 125 kHz sampling is running on a timer-triggered interrupt routine. The duration of the interrupt can be monitored -at least in debug mode- by watching a test pin of the mega328P, by setting the test pin high when the interrupt is called, and clearing it once the service has been completed.

The initial software still used more then 4 microseconds for the sampling, a bit too much, this can be reduced to 2.4 microseconds, even without any special tricks.

Below, you can see the effect of a sampling error (introduced by very quickly pushing the sensor arm inwards), it takes slightly more time to handle the error.

Finally, all that remains is to communicate with the host – this is done at a data rate of 12 Hz, plenty for this application. The data interval is triggered by the HX711 load cell converter, and the the full dataset, including, current encoder reading, error count, load call reading, and time-stamp are transmitted to the host all in one packed, as hex encoded data, and at 19200 baud. All pretty fail-safe and slow, but working just fine, and still a lot of idle time on the line (see transmission pattern on the scope below)!

Below, the avr-gcc code performing all these wonderful tasks.

hhenc hx711 _180128.c

HP 85685A: another mains filter failure – Schaffner FN 376

With the 85685A repair complete, the instrument was subject the an extensive test, to make sure all is in good order and working stable. Well, it did work well for a while, then – PUFF! The mains filter blew, one of the infamous Schaffner filters that is designed to blow up after about 20 years of service. Schaffner is one of the only companies I stay away from for any design – it is a Swiss enterprise, but too many of their devices failed in my hands – their filters are often the first parts to fail, in high grade test equipment.

The 85685A, like most other HP gear, has the mains filter combined with a voltage selector switch.

Cutting it open, you can see the Wima MP3 cap, 47 nF, 250 VAC. The MP3 are metallized paper capacitors, rated for X2 (mains) service. All embedded in some black resin.

Copper wires of the choke showing trough.

New filters that match the FN 376 are hard to find, and new-old-stock, well, these filters might fail again. So I decided to go for a new filter, a Schaffner-free solution.

This will be the new filter – a ID-10AC-S, available for little money, and seem to be pretty good for their current rating.

The internals… the filter elements are nicely encapsuled in a two-shell plastic case. No potting compound!

The X2 capacitor, and the choke…

Transplanted to the Schaffner filter body… and wrapped with Cu tape, soldered closed, for EMI shielding. All well grounded!

From the datasheets, you these filter should have 20-30 dB loss at 1 MHz. Let’s put it to a test!

For the new assembly, tested with a 3585A, about 12 dB loss at 100 kHz, 30 dB loss at 1 MHz, should be good, and no modification necessary to the 85685A.

HP 85685A Preselector Repair: faulty attenuation

The HP/Agilent/Keysight 85685A Preselector is a great addition to any 8566B or 8568B spectrum analyzer. The preselector converts the analyzer into a test receiver, by increasing its dynamic range by 30 dB, down to very low noise levels.

Recently, I got a 85685A for repair, only knowing that it doesn’t work as it should. With some checks, it was very quickly evident that there must be a issue with the RF attenuator, or its driver.

This defect is clearly seen when looking at a test signal at various attenuation levels of the 85685A. The signal should stay at the same level, irrespective of the attenuator setting, but as soon as you go from 10 dB to 20 dB, the signal vanishes almost completely. This is not good.

This is the RF attenuator, a Wavetek OEM part. Unfortunately, there is no service manual for the 85685A available, so we need to figure it out by ourselves.

First, determined the switch matrix for the attenuator controls, by probing the control inputs at various attenuation settings. Pretty clear, there are 10 dB – 5 dB – 20 dB – 20 dB segments inside, which are activated by pulling the respective control input low. Easy enough.

After some disassembly of the case (removing the rear panel), you can get access to the four screws holding the attenuator to the case.
Notably, the case of the 85685A uses Torx screws, unlike most other HP equipment using this style of enclosure.

Underneath the label, there is now hidden screw to get to the internals of the attenuator, all is glued closed and sealed with silver epoxy. To break it open without destruction, I milled a small slot from the side of the unit. Probably could have milled a bit shallower, and a bit less, but OK.

With the slot, the lid is easily removed using a screw driver. Make sure not to bend the lid too much.

Looking inside, it is pretty obvious that someone must have fired a lot of power into the unit, when set a 20 dB input attenuation. Checked all other segments with a 8752A network analyzer, and all good, except for one of the 20 dB segments, as expected.

How does a 20 dB attenuator work? There are several topologies, Wavetek used a so call pi-arrangement of resistors. Only two of the resistors are blown, the output resistor is OK (this is also clear from the fact that most power is dissipated in the left two resistors).

The switching of the attenuator segments is done with miniature RF relais, similar to these. At over EUR 40 a piece – glad these are all good.

The relais are DPDT switches, soldered flush to the board (which is a PTFE composite board), for best RF performance.

For repair, we need to replace the resistors with good new parts – but there are hard to come by, with not even a Wavetek datasheet available for the attenuator, let alone, these parts.

Several attempts were made to get the best (lowest) SWR, and the best flatness, at very close to 20 dB attenuation.

First, used a combination of 1206 SMD resistors to get close to the values needed.

This is the flatness of the “good” 20 dB segment:

This is the flatness of the “1206 repaired” 20 dB segment:

Another style of repair, with the same parts, now soldered directly between the legs of the relais:

… no improvement, still quite some reduction of attenuation above 2 GHz.

Now, tried with a series arrangement of 0805 resistors for the 250 Ohm resistor (giving lower stray capacitance).

… quite some improvement!

Red is the good attenuator section, blue is the repaired section, at 0.2 dB/div scale!

I would call it good enough!

A quick SWR test (non-calibrated) for “through” and “actuated” setting of the repaired segment (and terminated in a 15 dB precision 18 GHz rated attenuator at the output) showed low SWR (keep in mind, the 85685A will only work up to 2 GHz anyway).

All sealed up with silver epoxy – a bit old stuff around here, but still working. And, used some Cu tape (with conductive glue, 3M type 3313), to make sure all is sealed well and forever.

Now, with the attenuator fixed and working, one more thing to consider – the power handling capacity. The 85685A is rated for up to 30 dBm (1 Watt) average power. Not sure if the SMD resistors used can handle it – they are a bit smaller than the original Wavetek parts. So I decided to swap the control lines for the two 20 dB segments. This way, the “good”=Wavetek segment No. 3 will always take most of the power, and the repaired section (SMD resistors) will only be needed for the highest attenuations, and never see any more than 10 dBm of power, even at the maximum allowable input. Still, I will keep a search going on a spare 0955-0235 programmable attenuator, for a reasonable price (some of these being offered for USD 100, which is a bit more than I want to spend for a 25 year old part of unknown nature and condition).

Finally, all assembled back together, and performed a flatness/attenuator test, by supplying a signal at -40 dBm from a 8642B generator. Measured amplitude at 1 kHz resolution BW is pretty flat over all attenuator settings and frequencies.

Let me know in case you have any 85685A units for repair….

SimonsDialogs – A wild collection of random thoughts, observations and learnings. Presented by Simon.