24h (Graphical) Logging and Loud Beeping (and some history...)

A project log for A Simple 5 Ch Boat Battery Monitor

Five channel battery monitor with LCD status display and NRF24 Network wireless communication for marine and RV applications.

Timo BirnscheinTimo Birnschein 01/18/2021 at 17:020 Comments

It was a great weekend for testing high capacity marine batteries. We took the boat out to the Bay and spent the night at Paradise Cove in the northern part of the Bay around San Francisco. For January, it was fantastically warm and calm, a truly great short vacation!

I built this battery monitor to understand the state of each of the battery since we experienced a total battery failure in one of the worst conditions: About 18 months ago, we were at anchor around Angel Island. It was at a cove that wasn't particularly protected. It was labor day or similar and pretty much everyone with a boat was out on the Bay doing boat things. Idiots as well. We encountered a (luckily) rare species of idiot: The take your high displacement boat, run it at full throttle close to other boats and don't care of they almost capsize because of their wake- kind of idiot. Due to the rather undesirable conditions combined with the strong currents in that particular cove, I decided to leave the ignition on and the chart plotter with depth sounder running. For some reason, I expected this stuff to run off of the big 500Ah house bank.

But it didn't.

So after 4h at this anchorage we had enough and decided it was time to leave to some place nicer - with less reckless people around. 

I start engine one. CLICK. nothing. CLICK. nothing. hmmm.

I start engine two. CLICK. nothing. oh! CLICK. nothing. This is bad!

Mind you, earlier that day, a wire on my generator had come loose that I hadn't identified at that point. That loose wire prevented me to keep my generator running because (I think it was) the oil pressure sensor cable has a bad crimp. That meant, I had three engines down with no prior warning, no starter cable to wire in the house bank and no way to to recharge my starter batteries due to the then still broken generator! I was aware that one starter battery was weak and end of life but I didn't think it would get this bad this quickly! But bad things always pile up when you least expect them!

When the waves started reaching unacceptable levels, violent enough to pull our anchor out of the mud to start dragging, we decided to call BoatUS to tow us out of there or - better - bring starter cables to give us a boost!

Long story short, they came, gave us a boost, we had all engines running again and left back home. We had two more days to spare but due to the lack of reliable 12V power electronics, we cautiously decided to ditch our vacation and drive back home for repairs. It was not without disappointment.

This experience made one thing very clear, we needed a reliable battery monitor that gives us a long term overview of the battery state of each of the packs.

Since we took the boat out this weekend, it was a perfect opportunity to test the usefulness of my new DIY solution. I am very happy to report, it works really well! To my very big surprise, these small TFT displays work GREAT in direct sunlight! They look decent during the night but they really shine in daylight. Not sure if they have some sort of transflective properties but as long as you don't have the direct reflection of the sun straight on the display, the colors pop and it's really easy to read!

A couple things I did since my last post:

  1. Get the buzzer to work when any battery goes below 12V (normal for starting big engines but not normal under light loads)
  2. Calibrate each channel using my trusty multimeter by getting the real voltage with the DMM of each channel, and dividing it by the current value displayed on my battery monitor to get a correction factor. I then added each of the correction factors to the code and so far, each channel is reporting really good voltages.
  3. Make the status bar at the bottom work to show good vs bad batteries
  4. Make the run-length of the graph at the bottom configurable at compile time to allow 1h, 3h, 6h, 12h, and 24h logging. I also clipped the graph to roughly 15V and 11V and added a red line to show where the graph is currently redrawing.

This then looks really good! In this screenshot, we logged about 30h. You can see the charge time and the engine runtime. The charge time was when our generator was running, powering the battery charger. The starter batteries in blue, green, and yellow were pretty full already but the house bank is charging. One can see their voltage slowly increasing. Then, we had a long paus, briefly started the generator again to make some lunch and then decided it was time to go home (when our mooring buoy ripped out of the ground [or the old chain rusted through] and we floated away, almost running aground, almost crashing into a concrete wall - wonderful experience! Definitely don't recommend that! Our excuse, we were on deck, looking the other way while we slowly started floating backwards. Again: Having a reliable starter system for all engines in these rather normal "boat life" situations is vital!).

During the drive back, one can also see that for a moment the house bank depleted quicker and the down slope increases. Turns out, we had a couple of lights on which draw more power than I thought. Seeing this on the graph was really helpful to trigger the search for the consumers and turn them off! I think these are a couple 50Watt light bulbs that really need to be changed to some 5w LEDs.

What's next?

I still have the NRF24 sitting there, doing nothing. So far, I know that it's not interfering with the display through its SPI port. That likely means, it's gonna work in parallel to the display, if I'm lucky. However, I only have a couple KB of ROM space on the Arduino Nano left! The display library really takes up a lot of space!I hope I can squeeze the RF24Network library in there to be able to communicate with my board computer wirelessly. If not, I may need to write my own driver like I did for my esk8 remote. But I don't prefer that since the RF24Network lib seems really good!

I also have almost a quarter of the display still available and think I can do other things like detecting what charge state the battery is in or learning what the condition of the battery is based on its charge and discharge behavior (hey, let the man dream! - lot's to learn for this, though).

So far, I'm really happy with this!