A small update on the ADC with a few crude INL tests:
The early test here showed quite some self heating effect. So directly using the current ADC would result in rather poor INL (expect some 10 ppm of INL error). To circumvent the self-heating effect I use a fast gain measurement. This is not a new Idea, but was already used in old DMMs like the Keithley 19x series. So the ADC measures a sequence of input signal, zero and 7 V reference (LM399). The result is than
U = (U_signal - U_0) / (U_7 - U_0)
This improves the gain stability and INL, but adds a little to the noise, effectively adding the ADC noise to the reference. Because the ADC itself is very low nose this is not much compared to the LM399.
For INL-tests I use a simple LM399 based reference source with an amplifier to some 9,3 V, divider with 12 equal resistors and buffer. So there are 2 buffered outputs: one at 9.3 V and one selectable voltage from some 0.775 to 9.3 V. The reference is powered from a separate old style 12 V wall wart.
For choosing the signal voltages a simple mechanical SPDT switch for one side (ground of the ADC) and the MUX on the ADC board for the other side are used. A sequence consists of 4 voltage readings, that includes 1 or 2 zero readings. Ideally the sum of 2 readings minus the 2 other readings should be zero if the ADC is linear - a deviation indicates an INL error.
The first test is the classical turn over test, measuring the external reference in both polarities and 2 zero readings to compensate for possibly input dependent offsets. At 9,3 V and 7 V the turn over errors turns out to be small somewhere in the 1 µV range.
The next INL test is measuring 2 voltages that in the sum make up the fixed 9.3 V level.
Andreas describes such a test here:
https://www.eevblog.com/forum/metrology/dmm-linearity-comparison/msg1351979/#msg1351979So far the tests show an error of some 5-15 µV for the sequence (tested at 4.65 V, 3.88 V and 3.1 V so far). This corresponds to an INL error of some 0.3 - 1 ppm. This is not as good as hoped for, but still good for a low cost ADC.
There still seem to be some EMI issues, as the exact position of the cables and shielding makes a difference. Offsets of the nominal zero readings (up to some 6 µV) seem to be more due to higher frequency effects effects than thermal EMF. Also the bootstrapping of the buffer is not yet working well and loading the inputs quite a bit on switching. Before more INL tests (more points and more repeats to get lower uncertainty) these 2 weak points should be addressed first.