2
\$\begingroup\$

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.

Thanks, Barry Calibration Switching Circuit

\$\endgroup\$
7
  • \$\begingroup\$ What you propose would in principle work, once you add the other missing circuitry ... But "... included with the RV is not very accurate" how inaccurate is the original, is it really that bad ? Don't forget the state of battery charge is a function of battery voltage and this varies with battery temperature ... \$\endgroup\$
    – citizen
    Commented Dec 21, 2022 at 8:26
  • 1
    \$\begingroup\$ Having a more accurate battery voltage reading will not give you a better "remaning state of charge" reading, unless you have some battery coulomb counter in series with your battery etc. \$\endgroup\$
    – citizen
    Commented Dec 21, 2022 at 8:28
  • 2
    \$\begingroup\$ Why are you wanting to measure a battery to 0.01V accuracy? The votlage of the battery will vary by more than that with temperature changes, let alone when you draw any power from the battery. If you want an accurate battery state of charge, you'll need to use a charge/coulomb counter as well as battery votlage monitor. \$\endgroup\$
    – Puffafish
    Commented Dec 21, 2022 at 8:34
  • \$\begingroup\$ I have two battery banks, one house and one engine. There is a high amperage relay which can connect the two banks when connected to shore power and when the engine's alternator is running so that both banks can stay "fully charged". \$\endgroup\$ Commented Dec 21, 2022 at 20:01
  • \$\begingroup\$ I want to hack my battery bank connect relay which has too much hysteresis for my liking. It lets SOC drop to 80% before connecting banks so that the inverter/charger or alternator can charge both battery banks together. I have a shunt and SOC meter for house batteries but can't get the SOC directly, it's calculated by proprietary module. Also, inverter/charger monitors house battery temperature. AGM battery banks. The engine batteries have no SOC or temp monitoring currently. Have mfg curves for resting volts vs. SOC and SOC vs. time & discharge amps. \$\endgroup\$ Commented Dec 22, 2022 at 0:27

1 Answer 1

0
\$\begingroup\$

While I think this will get the me (more) accurate on-the-fly, non-resting voltages, I think I will try to get myself an I2C battery fuel gauge IC and play with that. They can be configured for AGM chemistry batteries, have battery temp compensation using common NTCs, and with adding a shunt, will report a fairly accurate SOC which will be much better than my originally proposed non-resting battery voltage. Thanks for the encouragement not to go down the OP path.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.