Yet Another Clock project: Using Arduino Pro Mini, a 28BYJ-4b geared stepper motor, a RTC clock chip, and an Easydriver board.
The clock keeps perfect time as long as I keep the Easydriver board powered up. But that eats my batteries.
When I keep the Easydriver board powered down until (once a minute) I need to move the pointer, the clock starts losing time gradually - like, 2 minutes every 15.
I power down the Easydriver with a high-side MOSFET transistor, because disable mode on the Easydriver still uses too much current, and sleep mode still drifts (hmmm... I think....).
I'm careful to give the Easydriver board 100msec to wake up fully before I start to drive it.
I also wait 100msec after it's done before I power it down.
The more frequently I wake it up, the worse the drift gets.
It could be that when I power the board down, the stepper motor's magnets flip to the nearest comfortable detent. But I'm using full-step mode, so wouldn't it always stop at a natural detent? And even if it didn't, wouldn't it randomly move a hair forward sometimes, and a hair backward other times, cancelling out the effect?
It could be that there's some mechanical tendency moving the mechanism while the stepper motor is asleep. But it's a 64-1 gear ratio in the motor, physically hard to turn, and a reprap-type belt drive and gear which almost certainly has no slip. And there's no weight or pressure tending to turn it one way or the other.
It could be that the mechanism has some inertia. But I use the Accelstepper library to decelerate it.
So I'm stumped. My next idea is to put a very long arm (like, a giant second hand) on the motor so I can actually see how the rotation differs when it stays powered up vs when it wakes up and moves.
Anybody have other thoughts?