After 5 months, the prototype is still running fine w/o replacing batteries. Under 30 min. refresh interval, it will survive the next 3+ months with the three 2000 mAh NiMH batteries.
Also I pushed some minor updates to the repo. https://github.com/likeablob/slow-movie-player-7c
1. Zero-power battery voltage monitoring
When measuring battery voltage with a uC, placing a simple two register voltage divider in between ADC and V_BAT is one of the most common way to scale the voltage. However, since the divider are just two resisters between V_BAT and GND. it consumes current constantly at uA~nA scale. And that leak current is HUGE when we want to keep the device running over months or years.
Instead of adding two or more P/N FETs or a 8-pin OP-amp to the circuit, [JEELABS] shows a clever trick to reduce the current to (literally) zero with a single N-ch MOSFET.
In the above schematic, +BATT to be measured is about 4V and it's divided by 3k/1k registers. So ADC (BAT_V_MON) senses 1V (=4V/4) typically. To turn the MOSFET on, we have to apply a voltage to its Gate (1) several volts higher than the Drain (3). The condition is satisfied since BUS_POWER is at 3.3V regulated when the device is awake. Of course the MOSFET is turned off when BUS_POWER is kept at 0V during the device sleeping. (see details)
The firmware has also been updated to monitor the battery voltage and show a low battery notification when the voltage goes under 3.5V.
2. Battery holder improvement
Added some overhangs for holding batteries better.
And... one more thing.