I am trying to make a voltage monitor for my RV battery as the one included with the RV is not very accurate. I would like the result to be accurate to +/-0.01V and intend to use an ESP32 and Adafruit 16 bit ADC. I believe the ADC will have 14+ bit resolution on this single sided measurement. I may add an RC filter to the inputs to reduce noise, or average readings in the MCU.
What I propose is to calibrate the system on the fly as conditions change, temperature being the greatest concern. The calibration procedure would be to "occasionally" switch out the battery and switch in a 10V "precision" reference and record the counts at 10V, then switch in ground, again record the counts, then generate a linear equation from counts to volts. My thinking is that such a routine would compensate for all variations in ADC internal reference, resistances and op amp, leaving only: ADC linearity from 10V-15V, Precision 10V reference variations. The reference I am looking at is the LM4040AIZ.
The switches I propose are P and N channel MOSFETS. The RDSon of the MOSFETS is negligible compared to the resistance of the voltage divider. Probably will choose a different lower RDSon, lower IGSS N channel MOSFET for switching ground.
Obviously, the attached does not show the gate drive circuits or uC or fusing or any of those details, much of which I still need to work out. My question is whether the concept seems appropriate or justified or whether the desired accuracy can be achieved more simply or with lower/cheaper parts count.