HP Agilent Keysight: missing instrument feed mystery

There is one thing that has always been inriguing me: why are most of the HP Agilent intruments that I am getting my hands on missing feet?

missing instrument foot

This is a picture from the recenty fixed HP 8782B. It has 3 feet installed, 1 missing –
HP Part No 5040-7201, 5041-8801, about USD 14 (each!) at Keysight.

Maybe, some sellers take them off, and sell them separately at xbay – same what is happening to the manuals. And in fact, some offers are posted, but by no means enough to explain all the missing feet everywhere.

Also, if equipment is rack mounted, sure, the feet are taken off and stored somewhere in a drawer at one of the big test labs army bases or corporations, but many of the intruments have never been rack-mounted…

Maybe some of the test engineers just can’t let go and hold back at least one of the feet! Well, I’m glad they don’t take out one of the transistors…

hp instrument feet

So in the end, if you happen to find a bag of these somewhere, please forward them to me…. to put them back where they belong.

HPAK (HP Agilent now Keysight) 8782B Vector Signal Generator: an easy fix

The 8782B is a quite powerful generator to simulate digital signals, not considering the power in dBm, but the support of all the common digital modulation schemes, BPSK, QPSK, 8PSK, 16/64/256 QAM, at exeptional signal integrity.
Frequency range is 0 to 250 MHz, actually, it works to 370 MHz – but this instrument is mainly intended to generate complex IF signals, which can then be used to test the IF chain of a receiver, or, you just add a mixer, another generator for the LO, and a filter, if needed, to get the signal up into the GHz region.

This unit arrived in a HUGE box, it just fits the car!

All frequencies are derived from a HP 10811E ovenized oscillator, which is held by a shock-absorbing mount, and is extremely stable (better than 0.5 ppb per day!), and low phase noise, resulting in below -125 dBc at 1 kHz from the carrier, and below -130 dBc further out.

The symptoms:

(1) The right LCD display is missing partial digits. Seems to be related to the mounting/contact of the LCD with the board.
8782b display defect

(2) Output is 30 dB down, but otherwise working just fine.
Quick look at the output amplifier – a real marvel of RF engineering.
8782b a10a2 output amp assy

(3) It’s in good condition, but will benefit from a bit of de-dusting and cleaning.

The repair:

(1) After taking off the front panel, the LCD is a separate assembly, seems to be made by HP (which test equipment company would nowadays still make their own LCD displays?), and easy to remove. And, the defect, readily found. One of the side bars holding the assembly together and pressing the glass display to the control board, to make contact via an elastic strip, it had slipped off. The root cause – somebody must have used nail clippers to fabricate a piece of acrylic that is used to protect the LCD surface – maybe it was broken or scratched. And with the uneven edges, it caused tension on the display unit, pushing off the side bar.
8782b display protector
Well, Let’s just straighten out things and put it back together. No surprise, the LCD is working again just great.

(2) The level control. According to the description of the sender, the output is about 30 dB down. Most likely, something with the attenuator, 08780-60093 = 33322GC, 110 dB, 10 dB step. So, the attenuator, easily removed, and the non-attenuated signal directly fed to the dated but very trustworthy HPAK 8565A spectrum analyzer available here at the bench. Now there is plenty of signal, but it isn’t accuarate at all, even relative steps, like 1 dB steps, give variable response, anything from 0.5 to 2 dB steps… The level spec of the 8782B isn’t all that great, but I know from earlier work with such units, the performance is much better than spec, and 1 dB step, should be 1 dB. Turns out, just a little pitfall, the 8782B has a calibration routine, also for the level, and somehow, this unit seems not to have been calibrated for a while. Well, easy enough, just pushed the “CAL” button, and after a few minutes, you bet, the levels are spot-on, and, within 0.1 dB or so.
Just a quick fix on the attenuator control circuit, and, the level is back.

(3) For cleaning, don’t use anything too harsh on these instruments, they use different plastics and pains compared to earlier HP models. I get good results with about 20-25% isopropylic alcohol (1 part of the alcohol, 3 parts of distilled water).

Some quick tests – all self tests passed OK – and here, a BPSK signal:

8782b bpsk test

Level accuracy, all well within spec (measured with a Micro-Tel 1295):
8782b level accuracy test

And, with the 8782B the boring times in the lab are over, Thank’s to the build-in game – everyone will be looking at you, working hard, pushing the buttons!
8782b special function 600 game

The best solution, most likely: let the nonlinearities (INL) cancel out

After putting a bit more thought into this, let’s have a look again at the kind of nonlinearity observed for the ADS1211. We only know three points where there will be no error due to non-linearity: the zero point (because that will be covered by the zero point calibration), and the plus (and minus) voltage, at which the gain calibration is carrier out. The gain will be calibrated both for the positive and negative direction, simply by reversing the same calibration voltage, most likely, about 7.x volts, supplied by a LTZ1000.

Again, from the datasheet:
nonlinearity ADS1211

Now, what if we measure not just with one ADC, but with two, of the same kind, and hopefully, with the same non-linearity, but, with the polarity reversed. I.e., because of the fully differential nature, we can measure, simultaneously, the same voltage, both in the positive and negative direction. Doing this adequately should cancel out most of the (integral) nonlinearity. Furthermore, if use two independent references, for the two ADC we will also gain noise margin – because some of the noise in non-correlated and will cancel out – also, we will acquire the same signal independently, and do the averaging digitally! For non-correlated noise, this means about 3 dB gain, about half a bit!

inversion averaging ADC scheme

It only means that finally, we will need to put in 8 ADCs to measure two voltages, but, well, who cares – the given application can handle this, specialized equipment, and no relation to the total cost. And, with some luck, it will result in linearity errors of better than 1 ppm, and 7 digits resolution, with pretty fast data rates.

inversion averaging ADC nonlinearity cancellation
The solid line: non-linearity of ADC1, the dashed line – non-linearity of ADC2, both ADC are running fully synchronized, same control codes to both ADCs. Two digital outputs – and, one output will be fully inversed, directly in the ADC controller (an ATmega32L), to yield the average of the ADC1 reading, and the complementary of ADC2. Sure the difference to 0 V can also be analyzed, to check how far off the individual values are.
The ATmega32L will also do some decimation, from 60 Hz, to maybe 5 Hz or 1 Hz (independent of the mains frequency), and sent the data to the main controlled, via an optoelectronic isolator (the full ADC section design with fully floating digital and analog grounds). 1200 or 2400 baud will be plenty to get the data out. 60 Hz 6 bytes would be 360 bytes per second, about 3600 baud (need to count start and stop bit), but with decimation, we don’t need any fast couplers, etc.

Sure, this is currently an idea, and will need a closer look, but I assume, it will do the trick, at reasonable cost.
If it works out, maybe we go one step back in the final implementation – the ADS1211 has a 4 to 1 MUX, and rather than sampling simultaneously – we might just give up the noise advantage, and sample consecutively, once with positive polarity, and then, via another channel, in inverse polarity. But hey, Texas Instruments will be happy to sell a few more ADCs.

Finally, not sure if it is better to run both ADC from the same 10 MHz clock, or from separate clocks – some of the jitter induced noise might average out only, if the jitter sources are independent. So many, option, but quite easy to find out!

HPAK (HP Agilent now Keysight) 3562A: power supply repair

Somehow, all 3562As in the Greater New York City Area seem to fail these days… This one arrived completely dead. Didn’t take a long time to find the issue – a defective A18 power supply assembly.

This power supply design can only be recommended to anyone interested in electronics. It is build with multiple controls, overcurrent, overvoltage protection, and build quality-robustness is not far from being able to power life support devices, or moon landing vehicles from from. Still, this one had failed.

A quick look at the board revealed two blown resistors. Framed red in this snipplet of the schematic.
3562a pwr supply schematic

However, these are the gate drive resistors – there must be a reason why they failed, and this reason was quickly found in the MOSFETs, Q400, Q401, HP part number 1855-0473. Looking around, no real equivalent found in the HP cross reference table. However, an IRF450 (500 V, 12 A, 150 W) appears suitable, and 4 pieces (2 spare, just in case) were easily sourced.

The resistors, R404 and R410, are of more concern. CMF60-64 type. These are 0.5 W resistor fuses (fusible resistors). In contrast to other resistors that can easily start a fire and develop a short when overloaded, these go open circuit, and are flameproof.
Unfortunately, a value of 3k9 seems impossible to source in any reasonable quantity – but 3k3 should work perfectly fine. Digikey offers the Vishay NFR25H series, also 0.5 Watts.

Spare parts
3562a pwr supply irf450 3k3 fusible

Note – why did HP use a fusible resistor? Why not replace with a regular resistor? Please, never even consider it, unless you it’s a client that doesn’t pay the bill… it’s a serious risk of fire, and it is not just a bodge but an unacceptable safety hazard.

That’s why… the red trace is 400 VDC at multiple Amps, and imagine the Q40x have a gate-drain short…
3562a pwr supply schematic detail

Didn’t take long to replace the IRF450s and the two resistors – and, to everyone’s full satisfaction, the 3562A powers up, no issue. Not sure what caused the defect in the first place – maybe some overvoltage in the power line? We might never find out.

ADS1211 evaluation: a bit of shielding goes a long way…

Following-up on earlier analysis, the ADC performance observed at small decimation (like 1 s averages, with 60 Hz data rate – 60x decimation) left something to be desired – quite a few bits lost due to mains (and/or other) sinusoidal noise.

Look at 1 hour worth of data (60x decimated; each sample: 1 s worth of data), at higher magnification than before – ticks every 15 minutes:
ads1211 zero dec=60 noise

Obiously, there are some bursts. And these are almost certainly not related to the ADC or anything internal to the circuit. Maybe the power supply, but added quite a few decoupling capacitors…

So, if the noise source is external, a bit of shielding might help – great to have a little metal box (even a steel box) at hand!

ads1211 in shielded box

Note the 2 BNC cables – rather than one – feeding the test signals from a fully-differential source, to avoid ground loops.

ads1211 zero shielded noise

Well, not much to add! Amazing what a little metal box can do!

Studying the local characteristics of the ADS1211: ADC differential nonlinearity, missing codes

To qualify the ADS1211 for the given application, or at least, to gain some confidence in it, a test – not the for overall non-linearity (i.e., non-linearity over the full range, aka integral nonlinearity INL), but for the more detailled view at the ADC’s precision.

Local deviation of an ADC from linearity are called differential linearity, and this can be some slight deviation, or can go so far that there are even “missing codes”. A missing code is caused by a local non-linearity that is larger than 1 LSB, to the ADC will jump 2 steps, even if the voltage is only increased by 1 LSB equivalent.

First, the test setup: still the ADS1211, running at 4 MHz, 16 turbo mode, 60 Hz data rate. Connected by fully-differential coax to a (floating) source, an HPAK 8904A signal generator. This is programmed for a 5 DV output, with 20 mVpp (intentional) sine ripple, 13 Hz. The selection of the frequency is rather critical, don’t let it be anywhere close to a subharmonic or harmonic of the data rate!
The HPAK 8904A is actually really great for this purpose, you can add and mix any signals, up to 4 channels, and modulations, as desired, into one channel!

Alternatively, you could feed DC-biased noise, but these noise signals can be troublesome, and you never now what to expected in terms of amplitude, flatness, etc, unless you have really specialized gear.

Having everything set up, several hours of data were collected. Virtually no drift, so the DC component-the average ADC code (nearest integer) was subtracted from the data, and the results analyzed.

Full data, +-2000 counts is more or less +-10 mV (20 mVpp), as expected. 1 LSB is about 4 µV. There is dot for every count, even if no sample was recorded, at the given count (then, the dot is at 0 samples…).

histogr 13 hz 10 mv full

The probability density function (PDF) corresponds to that of a sine function. That’s a good start.
Some key observations – there seem to be 3 “populations” of sample counts – codes that are “0”, i.e., missing codes; codes that have counts that are somewhat in-between (the majority), and double-counting codes. This needs some more investigation.

Taking all these data, and the know PDF of sine (of the form, 1/(x*(1-x), “bathtub curve”), the PDF was fit to the data, using least squares.
histogr 13 hz 10 mv pdf fit

Green line shows the fit-this makes sense, and the residuals were calculated.

histogr 13 hz 10 mv missing counts residuals full

We are only interested in the center part, where the errors due to drift are minimal. A close up:
histogr 13 hz 10 mv pdf fit residuals closeup
histogr 13 hz 10 mv missing codes

We can cleary see a pattern: DxMMxxMMxxMMxxMMDxMMxxMMxxMMxxMMD…
D – double code, M – missing, x – intermediate.

What seems dramatic, it’s acutally not. There aren’t any deviations more than +-1 LSB, and there will be noise and averaging anyway, to get beyond even 22 bit resolution.

Harrison HP 6202B Power Supply – revisited

After doing a quick repair yesterday – a sleepless night, because of the out of spec ripple. Well, not quite that bad. But typically, all HP instruments hold up to standard, it would be a big surprise if this one can’t be brought back into spec.

First, desoldered all of the capacitors (they used a lot of solder!), and checked them – surprisingly enough, they still work perfectly fine, all 1967 vintage.
Next item, the recifier diodes – some might be leaky. Therefore, just replaced them with “modern” 1N4004. But this didn’t cure the ripple.

Next item, the 6202B has a reference circuit, and, the output had 10 mV noise – ripple. That’s far too much, and did not fully feed through to the output.
What caused this issue? – the defective capacitor (see earlier post) is the filter cap for the reference. Seems the replacement cap doesn’t give the same filtering – just added a bigger capacitor in parallel.

The result – at about 50% load (2 mV per DIV, sorry, don’t have a better scope here)
6202B improved noise

About 0.8 mVpp, estimated 0.25-0.3 mVrms. Amazing. Fully working again.

Noise: external and internal

A quick – 9 hour test – of the ADS1211: at 60 Hz data rate, 16x turbo mode. About 2 million samples.

According to the datasheet, every sample will yield about 22 bits noise free data, according to the datasheet (red circle shows setting used):
ads1211 effective resolution

That’s what has been obtained.
ads1211 zero code distribution

Clearly visible, higher density of codes at the left and right end. Really suspicious – almost certainly, nothing else than a bit of mains feed-through, about 175 µVrms. Seems we get >20 bits, more or less, otherwise we would not be able to see the distribution (note that some counts have a positive deviation – due to non-linearity!).
But all this, with some 60 Hz noise on top…
Assuming that this noise is constant, it can be eliminated either by futher digital filtering, or by averaging/further decimation of the data, which will be done anyway. As a rule of thumb, decimation by half will give an extra 0.5 bit of data, for random noise – and a bit more for constant 60 Hz.

Here, a quick look at the decimated data (note that the sample axis ticks correspond to 2 hours time intervals):
ads1211 zero test decimated

In these diagrams, “full scale” corresponds to 20 V – the current configuration can hande up to 60 V differential signal, at 1 LSB equal 4 µV. So there is still room for improvement of resolution, like 1 LSB equal 2 µV – but this only provides useful data, if we can get noise down well below 2 µV, which will be tough anyway.

Also, quick statistical analysis, of the 10 s average – 600 sample average data:
ads1211 dev 10 s histo

Standard deviation, 0.71 LSB equals 0.71 LSB RMS noise, equals 3 µV. Quite reasonable!
Still visible are the two maxima of the distribution, due to the mains noise.

NFB vs decimation

Comparing to a random-noise based decimation-improved resolution (noise free bits), it seems that the converter is yielding about 20 noise free bits, at 60 Hz data rate. Not quite the 22 bits mentioned in the datasheet. This is not surprising, the last 2 bits, at the fast rate, we will only be able to get this with a better, ultra low noise reference, a low-noise bias supply, and low noise analog power supply (currently using the build-in reference, and build-in bias supply, and 5 V supply from USB bus…). But fair enough, about 24 noise free bits (7.5 digits!), at 10 s averaging, and 9 hours zero point drift of less than 0.4 ppm, this might already be good enough.

Harrison HP 6202B Power Supply

A quick repair job – an old but trustworthy Harrison (HP) 6202B powder supply. 0-40 Volts, 0-0.75 A.
This is quite a useful range, has overrange to about 45 V, and a good compagnion for a 6200B supply that I have been owning for a long time.

This is it:
harrison 6202B

A suspicious label:
6202B label

It worked well, but had excess noise and some oscillation, when loaded. BTW – no fancy dummy load here:
dummy load

The inner workings –
620BB circuit

After some clearing, more or less washing it with isopropyl alcohol, I found this capacitor, date code 6708 – February, 1967, not quite 50 years.
6202B defective capacitor

After a few hours of test run, under about 50% load, a quick check – at various loads, with and with out current limitation. That’s the kind of noise I’m getting. It is mainly 60 Hz ripple, about 2-2.5 mV p-p; maybe 1 mVrms – a bit more than the 0.2 mVrms specified by Harrison – but still in the same range as the Vrms noise of modern power supplies.
6202B noise

Ultralinear ADC – some mathematical review

Working a bit deeper in the topic of ADC calibration, and doing some math some preliminary conclusions reached so far:

(1) Analyzing the ADC noise, requirements to suppress mains noise, and the effective number of bits available from the ADS1211, I figure that running the ADC at 60 Hz data rate would be the best choice (50 Hz in Europe, will be factory-settable in the final apparatus), and a data volume that can be managed easily. To get the best ENOB per reading, the ADS1211 is run in 16x turbo mode, 2083 decimation, 4 MHz clock (will be 16 MHz:2 later, running on one clock with the controller, just lacking a 8 or 10 MHz crystal atm).
59.98 Hz resulting frequency, close enough. For 50 Hz, we will run at 2499 decimation, and get exactly 50 Hz data rate.
With a 4 MHz clock, about 22 bits effective resolution, with 10 MHz, even 23. Not bad, but I’m sure the test setup will be a bit worse (better reference, shielding, improved power supply needed, for the analog supply -low noise, will be based on LM723 – which is actually still a very well performing circuit, and much lower noise than the common 78xx regulators).

(2) Calibrating an ADC, to, say, 21 bit effective resolution, which two million noise-free counts, 128 dB SNR, with a sine wave by generating a histogram: it will take a long time. A very long time. 60 Hz means 5 million samples a day, would need to collect readings for several day – doesn’t seem practical.

Next steps:

(1) Noise characterization, shorted, and with a somewhat noise signal – this will tell us a bit about the nature of the local non-linarities, by comparing the noise histogram, with Gaussian noise. Will also show missing codes, if any.

(2) Do an in-depth characterization of linearity for one exemplary ADS1211, might need above-mentioned improments to reduce noise effects in the test setup, and also needs low jitter clock source (current crystal should be low jitter, but might want to change to 8 MHz before going to a lot of trouble with characterization. Key question is, for the ppm-level linearity – is this locally worse at certain codes-in certain small code regions, or evenly spread over all codes, just needing a few “pin points” for a correction algorithm, to get the linearity down to 1-2 ppm level.
After review of the literature, a method of fitting sine-wave data (similar to histogram method, but rather than just counting the bins, fitting the data – voltage vs time – to an ideal sine wave, with a 4 parameter fit, and using the residuals for non-linearity estimation; fit might be done piece-wise, for big datasets, to allow for some small frequency drift of the sine source; might also cut-off the uppermost and lowermost bins, minimum and maximum voltages).

(3) Decide, based on the data of item (2) how many measurements/level will need to be measured to continuously monitor the performance and adjust correction constant. In the final system, a 16-bit ultrahigh precision DAC/programmable voltage source. Such kind of circuit can be build from discrete low-drift low-tempco resistors like Alpha Electronics MA series, and a precision low noise/low drift reference like the LTZ1000 or LM399, and a few opams, like LTC1051.
It would be fairly easy to sample these 16 voltags with the proposed 4-ADC scheme, and calculate corrections coefficients, at the 16 points, to compensate the the major part of the non-linearity.