DSO 150 : Calibration ? Nah, not really


Both the official DSO firmwares and my own offer a "calibration".
But actually, it is not a real calibration. It is a zero offset calibration.

If we look at the schematic, we have several amplifying stages.
The last stages is a bit special : It is also a shifting stage.


Not only does it multiply the input by 1+1000/130 = 8.7, but it also shifts the input by +1.6 volt

Why ?

Because until now we were in AC mode, so the voltage could be in AV- / AV+ range (i.e ~ +-5V)
After that last stage, we are in MCU mode, with a voltage between 0 and 3.3 v

So,  the input is shifted by half of it (i.e. 3.3/2=1.6 v) to be able to sample negative AND positive voltages. -Vmax becomes zero, and +Vmax becomes 3.3v.

We lose one bit of accuracy in the process to deal with the "sign".

When you do a "calibration", you short circuit the inputs to get a zeo there and then the firmware reads what is the actual zero in the ADC, for each voltage range.

In theory, in a perfect world, it would be 4096/2=2048 (it is a 12 bits ADC). But it can be slightly off due to errors, components tolerance, temperature, etc...

So what the "calibration" actually does is only "calibrate the zero volt level".

The actual voltage is computed using "perfect" values, very close to the one you are using, but not EXACTLY the same. For example, a 1k resistor could be  actually 1.001k, and those errors accumulate.

So in Git:master , you have a new feature called "Fine Calibrate", where you feed the scope with exact and known values (10V, 5v, 2.5v, 1V) and it computes the real amplification for that voltage range.

That  improves accuracy significantly. 

The accuracy depends on the voltage range. Assuming with have 10 divisions range and a 12 bits ADC, we have the following accuracy

5V / Div => 10mv
2V/ Div =>  5mv
1V/Div  => 2.5 mv

( The error is actually much higher due to noise. )
Result :



7.70 vs 7.71,nice :)
It is not always that good, but is not a multimeter after all.

Update : 
After fixing some bugs, the accuracy is now in the 1% range

Update 2:
Between old analog board and new analog boards,  the last stage gain is not exactly the same (7.7 vs 8.7), so without manual calibration one firmware cannot work the same on both, unless you detect the board type)





Comments

Popular posts from this blog

Component tester with STM32 : Part 1 ADC, Resistor

Fixing the INA3221

INA3221, weird wiring