A Bode plot you can trust in the audio band: each point settled, checked and averaged

Asked by TimFox on the EEVblog forum, 9 October 2026. Thank you: here is what we have built so far.

being built · DHO800/900, MHO900

What was asked

I bought a DHO914S because of the built in AWG, intending to use the Bode Plot function to measure gain/phase of amplifiers, mostly below 1 MHz.
Gain and phase of amplifiers and filters below 1 MHz, with the built-in generator.
I found the measurements in the 1 to 100 kHz region of a simple R-C low pass filter to be useless, which I believe was due to insufficient time spent at each frequency (not user adjustable) to get an acceptable measure of gain and phase.
No ripple from point to point on a simple RC low-pass between 1 kHz and 100 kHz (his stock sweeps rippled about 2 dB and 3 to 7 degrees peak to peak, and a plain cable straight through read +-0.3 dB and +-2 degrees).
For automated measurement, a long total time is acceptable, and probably mandatory.
The time spent on each point set by the user, however long the sweep takes.
At low frequencies, I could get reasonable data manually, but had to wait at each point.
The automated sweep as good as a careful manual one: wait for each point to settle, average until the reading is steady.

What NovaOS does now

Each point settled, checked and averaged

At every point the sweep first lets the circuit settle for a number of periods of the new frequency. It then checks that the input channel really carries that frequency, read from how the tone's phase advances across the record, so a frame still holding the previous point's frequency is skipped instead of measured. A single-bin DFT of a few periods cannot tell the two apart, which is one way a sweep ends up rippling from point to point. Gain and phase are then averaged as a vector over at least the periods and frames you ask for, and the sweep stays on the point while the average is still moving. In and Out always come from the same acquisition, so the generator's own drift cancels.

You choose the time on each point

The Bode window's Per point row has Fast, Normal and Precise, or Settle (periods), Cycles (periods measured) and Avg (frames averaged) set one by one, up to 10000, 100000 and 1000. The sweep's expected length is shown beside them before it runs, and the time left while it runs. The choice is kept across power cycles and can be set over SCPI: :NOVAos:BODeplot:SETTle, :NOVAos:BODeplot:CYCLes and :NOVAos:BODeplot:AVERages.

Each point's uncertainty in the report

Save .csv writes the stock's Bode file, every point. The HTML report also lists each point's standard error in gain and in phase, from the spread of the frames averaged, and the per-point settings it was taken with. Up to 300 points a decade.

Where it stands

What we need from you

To check it end to end on your own setup, not only ours:

Try it and tell us what to change: reply on NovaOS's thread on the EEVblog forum. Every release is listed in the changelog.