Use a DVM to directly digitize low-frequency noise (Part 2)
Use What You Have - Overlooked Capabilities Might Really Simplify Things
Introduction to Part 2
Last month (see Part 1) we discussed how a modern, benchtop DVM could be used as a low-frequency waveform analyzer with sampling rates of over 1000 readings/second. This month we take a look at verifying the performance of the Agilent 34401 DVM in this application.
Verification is the Key
Measuring and verification of any test setup is important. The first thing to measure is the basic instrumentation noise floor.
I shorted the input to the 34401 with the input set to 100 mV full scale and I measured 401 points over 10 seconds at a sampling rate of 40 samples/second (Figures 1 and 2). An added feature of directly digitizing the result and manipulating that data later in the PC is the ability to do “really, really” true RMS calculations mathematically with no errors due to input waveform shape or crest factor.
Figure 1: With the inputs to the 34401 shorted, the basic instrument noise floor was measured to be right around 2.5 uV peak to peak. The Mathematically Calculated RMS noise from these samples is 430 nV RMS. The DC offset in the measurement is easily taken care of in the measurement code by subtracting the average offset from the individual data points.
Figure 2: A histogram of the noise data from figure 1 shows that the 34401 with its inputs shorted has a nice Gaussian nature to the noise.
As with any very-low-frequency measurement, the entire test setup must be warmed up and allowed to thermally settle for several hours prior to measurement. Otherwise you will just be measuring thermal drift which masks itself as low-frequency noise very well, but gives totally wrong information. This warmup period isn't all wasted time as it allows time to get the first cut at the analysis code in good running order.
To measure the noise spectral density I used the code published earlier for making DFT Spectrum plots  and I then made a 401-point DFT with 800 averages to reduce the noise variation and converted the noise to nV/rt-Hz as shown in Figure 3.
Figure 3: The input noise of the 34401 with a shorted input after making 800 averages of a 401 point DFT and converting and correcting the data to nV/rt-Hz. The wideband noise floor is about 60 nV/rt-Hz. In an actual measurement, we would use an ultra low noise preamp with a gain of 100 to 1000 in front of the DVM that would have an output noise many times greater than the DVM input noise making the DVM input noise insignificant in the final measurement.
As a verification of math calculations and scale factor of Figure 3, I integrated this noise using well known techniques  to determine the theoretical RMS noise, which resulted in a RMS value of 439 nV RMS. Recall that Figure 1 showed a real value of 430 nV RMS – The results are within 2% of each other.
The final test was to feed a 9-Hz sine wave at 200 mV p-p into the 34401 to see that the DFT results were really valid and calibrated correctly.
I checked the sine wave with my scope and the reading results of the 34401 for a final sanity check. A 200-mV p-p sine wave is -23 dB Volts, which came out exactly right on the DFT Spectrum plot (Figure 4). The Noise floor is about -115 dBV in a 0.1-Hz bandwidth which gives a dynamic range of some 92 dB. That's pretty respectable performance for a benchtop DVM working as a digitizer. Who would have guessed that it would be that good?
Figure 4: With a 9-Hz, 200-mV peak-to-peak input to the 34401 and running a Hanning Windowed 401-point DFT, we can see that overall using the 34401 as a low-frequency digitizer produces really excellent results. Even the spurious signals are greater than –77 dBc below the input level!
Figure 3 and figure 4 also show some spurious peaks in the DFT that are about -77 dBc full scale in Figure 4. These appear to be spurious signals in the 34401 itself, but are so low and only 1 DFT bin wide so they won't be a real concern in any practical measurement.
All this 1/f noise measurement is pretty fun as I have never looked this closely at the noise performance of any DVM before. It's relatively easy and fast once you have all the code base in place .