In my first blog about calibration (Calibration, Part 1), I discussed calibrating inputs using techniques that tolerated offsets by simply including them in the measurements. In this blog I will look at nullifying the offsets.
The initial approach is to build in references to the circuitry and allow the system to self-calibrate. One issue would be that the calibration is then not traceable back to some standard, but let's ignore that and consider the circuit in Figure 1, where the input signal is first measured, and then the multiplexer is switched and the reference voltage is then checked.
When measuring VIN , the voltage measured at the ADC is VIN + VOFFSET1 + VNOISE1 . Similarly the voltage measured for VREF is VREF + VOFFSET2 + VNOISE2 . In some circumstances you can argue that the offset and noise are equal in both cases, so if you subtract the two readings you are left with VIN – VREF , and if VREF is known then you have VIN . Seems simple, but you have to consider a few other things.
Firstly, is the noise in fact equal? You can mitigate the noise variation by using signals that change slowly, but there is more to consider. VIN and VREF need to be that same order of magnitude, or you will need different amplifier settings, which will negate this approach. Further, unless your reference is significantly more accurate than the signal, it will contribute to inaccuracy as well, through noise and drift.
Cypress refers to this technique as “correlated double sampling” (CDS), which seems to have taken its name from a similar approach in the charge coupled device (CCD) sphere. It is possible to improve on the arrangement of Figure 1 if you can configure a setup as in Figure 2, where you measure the signal differentially and introduce the VREF into the signal measurement. This is very similar to ratiometric measurements, where the reference of the ADC also drives the sensor, and so the changes in the reference cancel out.
Going back to the current loop I discussed in my last blog, I have introduced a resistor in series with the load resistor. The reason is that I am trying to get the VREF input voltage above 0V. If you have had experience with so-called “rail-to-rail” analog inputs you will know that it is still a good idea to get use margin between the input voltage extremes. I could have used an amp with negative supplies, but if the amp is internal to the micro you will have to resort to some level shifting techniques. In Figure 2 the voltage measured for VIN is VSIGNAL + VREF + VOFFSET1 + VNOISE1 , and for the lower side of the input VREF + VOFFSET2 + VNOISE2 . Now if we subtract them (and provided the noise is equal) we are left with VSIGNAL only.
According to Cypress, you can apply signal processing techniques as well to reduce the effect of the 1/f noise component.
The LMP90100 ADC has built-in self-calibration that resolves most of the issues. To top it all, it does it in the background. TI does not give a name to the calibration techniques that it uses, so I have no idea if it is CDS, but whatever it is, I hope that this is the beginning of a trend.
What do you do with a non-linear relationship? You could linearize the curve (in hardware or software) before applying the calibration techniques. More simply, you could calibrate many points and do a piecewise linearization of the curve.
There is no reason you can't use CDS together with calibration. CDS does not give you the gain of the system, so you don't know what the ADC conversion actually corresponds to, so it is definitely beneficial unless you are measuring ratios.
So, what calibration techniques do you use?