Strobe Quench Controller Power Supply - Part 3
Due to large amounts of laziness, some procrastination and an infinite list of shiny pebble opportunities on my part, I was about to head off to a liveaboard dive vacation with a mostly unknown battery life on my Arduino based Quench controller.
All of my research and development work to date had used a test system powered via a USB cable ultimately connected into the mains. Infinite power was available in my basement. Not so much once underwater. But no need to panic: my backup plan was to buy many multiple sheets of elcheapo AG13 batteries for my trip from my local dollar store. 1 sheet of ten batteries was 1 dollar. Worst case investment was 50 cents per (partial) dive. But I would be very unhappy if one set of batteries did not last a full dive. And potentially lots of discarded garbage batteries. My ultimate goal was a minimum of 60 minutes bottom time: up to 90 minutes bottom time in Bonaire, so I need to add 15 minutes pre-dive time to be safe.
The SEA & SEA TTL converter housing did not provide an on / off switch. It did have a labeled "off" position on the power setting potentiometer control (fully counter clock wise position). This was not a mechanical off switch. It did not provide a means to cut power. It did provide a means for the user to signal that they were no longer using the controller. It was just another label on the control knob. No mechanical powers. It was an exercise left to the user - well the hacker, me... (I hated this type of crap in university...)
So I dug in a bit and investigated low power Arduino behaviour. Fortunately for me I quickly found an existing low power code library. It featured code that would shut down common parts of the Arduinio but still retain sane behaviour once the Arduino woke up. Sign me up!
I implemented some fancy special low power logic into my Quench controller. When the power level switch was turned to "off", my code entered a special power saving mode. I wanted to achieve maximum power savings (4 dives per day) but still be reasonably responsive. The Arduinio library provided a choice between 1, 2, 4 and 8 second sleep periods. As per my prior work anything less than about 250 milliseconds appears instantaneous to most people. All of these delays where significantly longer. So anything I did to put the Arduino into sleep would appear sluggish from the outside. From an operational perspective turning a device ON or OFF occurred once per dive. Since I was the only user, I was happy to wait and I chose 8 seconds based upon the belief of maximum power savings between dives (and a high personal tolerance for my own stupidity).
Shortly before my trip I was able to verify correct operation of the sleep logic. I was not able to verify its true effectiveness.
I started testing with a set of old (read unknown usage) batteries. They lasted over several days of random "power on" and "power off" tests. This gave me huge confidence that when "turned off" the batteries could last several days. I realized that this gave no insight to operational turned on performance.
How many dives would 1 set of batteries last?