Use a DVM to directly digitize low-frequency noise (Part 3)
As mentioned many times before, I am really careful about letting calibration errors creep into my measurement algorithms. I have found that it is all too easy to lull oneself into a false sense of security because some plot “looked the way I thought it should look” but wasn't right. The solution is to instead carefully check everything out.
So with this in mind, I went on to measure my white noise source against the DVM noise floor that was shown in part 2 of this article. Figure 2 shows the result of that experiment.
Figure 2 – The results of my first attempt to compare the previously measured DVM's noise floor (Blue Trace) to a measurement of my White Noise calibration source (Orange Trace). The measurement looks good at high frequencies, but at low frequencies the orange trace should have intersected the blue trace at around 0.15 Hz and then followed the 1/f noise of the DVM up from there. Instead there is a pronounced offset between the two traces. See the text to find out what went wrong with this measurement.
All is good in Figure 2's plot at high frequencies, but at the lower frequencies where the orange trace of my white noise test source should have intersected the blue trace of the DVM's previously measured noise floor – it didn't. Instead there is a constant separation of the traces. That's wrong!
My first thought was that I had managed to break some gain scaling code somewhere, but I didn't change any of that code at all. The other perplexing thing was that the high-frequency measurement was in the ball park, it was again just the low-frequency end that was in error.
Another coffee and email break and it came to me. Duh! This added low-frequency noise is the result of me not letting the test setup warm up long enough. I had only let the measurement of my white source and DVM test warm up for perhaps 30 minutes, not for many hours as I had done before.
In my early testing I had left the DVM on for days at a time, but recently I had been turning the DVM on only as I needed it and clearly hadn’t allowed the test setup time enough to really stabilize. That low-frequency warmup drift manifests itself as low-frequency 1/f noise!
To test this theory out I ran two more tests and compared the results. As can be seen in figure 3, I measured my white noise source with the test setup just turned on for ten minutes, then waited two hours and made another ten minute measurement, comparing the results. Sure enough the cold start measurement has more apparent 1/f noise than does the test setup when it has been run for two hours.
Figure 3 – To verify the cold versus warm noise theory I made two measurements 10-minute measurements of my white noise source. The Blue trace is a measurement of the test setup from a cold start. The orange trace is a duplicate 10-minute measurement after the test setup was on for two hours.
Dumb mistake – but I won't ever forget or make light of how important it is to let the test equipment and the measured source warm up thoroughly before trying to make a calibrated measurement.
The other thing I learned is that for this particular test setup and for the DVM especially there isn't much drift at all in the 0.1 to 20-Hz region, even from a cold start. In fact it had shown much less sensitivity than I would have guessed.
Results of our hard work
I went through this learning process just because I wanted to extend the low-frequency limit of my noise measurement application to a decade lower in frequency. Not only did this code change show me that I had an algorithmic error, it showed the increasing importance of a temperature stabilized and fully warmed up measurement when making very-low-frequency measurements and how everything starts to look like 1/f noise at really low frequencies. Useful things to know for sure. This is the same sort of scaling error that happens all the time in engineering . At least this time a bridge didn't collapse because of my scaling errors!
Finally my noise measuring application code reached my goal of: Not only measuring lower in frequencies, but all the while not sacrificing the 0.1 to 20-Hz measurement's speed and averaging. When I stitched together my multiply averaged 10-second plots and the longer 100-second plots I ended up with what I wanted – the hybrid plot shown in figure 4. I just took some dumb detours on the way to this result and I learned some things about the warm-up behavior of the measurement system too.
That's the best way to really learn, isn't it?
Figure 4 – My desired hybrid noise plot. This is the result of making 10 each, 10-second-long time records and averaging the resulting DFTs together, then stitching those 10-second-long time records together and taking a DFT of that 100-second time record, and then stitching together the resulting DFTs together. What I get is very good and fast noise averaging of the higher frequencies while at the same time I get a decade lower in frequency – specifically to 0.01 Hz.
Note: the stitch was done here at 1 Hz to show a more dramatic change in the noise due to the changing calculation/averaging rate. With a 10-second record I could have actually made the stitch at 0.1 Hz instead – but the plot would have not illustrated the effect as much.
 Henry Petroski, “To Engineer Is Human: The Role of Failure in Successful Design,” 1992, ISBN-13: 978-0679734161
 Maxim Integrated Circuits Application Note AN4527, White-Noise Generator Has No 1/f Component