Fish Feeder using Arduino Mini Pro - battery/sleep question

Hello everyone -

I have done all the googling but need some advise. I am making a DIY fish feeder -

Hardware

  • Arduino Mini Pro 5v
  • Battery power
  • TowerPro SG90 Micro Servo (a plastic tube rotates to dispense food)

I am somewhat new to Arduino but have mostly everything working.

My question is what can I do to make the battery last a long time?

  • I only need to run the Servo 1-2 times a day as that is all the food the fish needs. For example 9 AM and 9 PM every day. I can start counting 12 hours when the Arduino is powered on (plug it in at 9 PM) so there isn't a need for actual time.
  • I read that the watchdog library has a max sleep of 8 seconds.
  • I would rather not buy an additional RTC module to add to the bulk. I understand some battery would need to be sacrificed if I don't go this route - which is fine.
  • It is okay if the timer is not to the second.

With the above assumptions, what is my best option to extend the battery life? Code examples would be great. I am not looking for the best possible way to extend the battery life to 5 years. Somewhere in the middle which is not the best but also not the worst will do.

Remove the power LED. If at all possible, pull the voltage regulator off too and run the board straight off the battery (I'd have used an 8mhz 3.3v one, and then you'd be in spec - that said, I've yet to see a 5v pro mini that won't run off LiPo voltages (3.7~4.2v).

The power LED alone often uses 10mA - as much as the processor does if not using any power management.

Will have to measure idle power consumption of your servo - hopefully you don't have to turn off power to it, but you might.

Use WDT to wake and count how many times it wakes it.

Read Nick Gammon's tutorial on Arduino power saving, if you haven't already. It gives a really great review of how that stuff works.

That all said, quite frankly, if you only need 24 hrs, you can rambo it and just put a better battery on it. A 3000mAh panasonic 18650 (not 3000mAh chinese ripoff - the cheapo 18650 don't even approach their specs) will probably power it for 24 hrs easy, probably without even pulling parts off the pro mini.

Sorry, I didn't mean I need to run it for 24 hours only. I mean't the "servo" connected to Arduino only need to move once every 24 hours. I am hoping the battery can run for a few months. I am now trying to do the power down 8 seconds at a time in a loop...

void enterSleep(int numberOfCycles)
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN); /* EDIT: could also use SLEEP_MODE_PWR_DOWN for lowest power consumption. SLEEP_MODE_PWR_SAVE*/
sleep_enable();

int cycles = numberOfCycles;
while (cycles > 0)
{
// Now enter sleep mode.
sleep_mode();

// First thing to do is disable sleep after awaken
sleep_disable();

cycles--;
}

//Re-enable the peripherals.
power_all_enable();
}