I knew that batteries have a discharging voltage “lazy-S-curve”, but did not realize the voltage fluctuates so much with load variations.
In preparation for investigating 3S1P BMS protected Li-Ion batteries, I have jury-rigged a battery test station based on a Raspberry Pi 3B processor, the Pi Droid Alpha MCP3208 12 bit ADC and a 3:1 voltage reduction battery tap.
Part of my “education” was learning about the voltage drop from the “5 volts” at a USB power adapter through various short USB-A to USB-micro cables, and while I understood everything has a resistance, and voltage drops in relation to the current flow, I did not expect the load of a Raspberry Pi to vary based on whether or not I placed a sleep or not in my programs.
In prior testing I had seen that measured battery voltage jumped around a bit, regardless of what method I used to measure the voltage (High Impedance Multi-meter, USB Power Meter, Arduino internal ADC, or MCP3208 ADC). It just never sunk in how much variation there is.
Adding to the actual VSS variation, using that VSS as the voltage reference for an ADC compounds measuring battery voltage variation.
And if that was not bad enough, I discovered that batteries are a “low impedance” source, while the MCP3208 functions best with a “high impedance” source.
All in all my VSS ends up varying +/- 10 mv and the actual battery voltage is varying by as much as 200 mv (2%). I just did not expect the voltage delivered from a battery to be varying that much.