Arduino battery charge controller.


Arduino Battery Charge Controller

by Lewis Loflin

Solar Panel Battery Charge Controller Switching Circuit

This is a simplified version of my Solar Panel Battery Charge Controller Using Arduino. One can easily add the ideas from that project to this one.

Above is a generic Arduino Nano, but the code will work on any Arduino style microcontroller. The 5V regulator is build into the unit I used and if not use a separate 5V supply.

The battery voltage is measured from the TP1. The 10V Zener diode drops 10V leaving a voltage value of 0v-5V at TP1. Normally the battery/charge voltages range from 12V-14V. The Arduino ADC returns a 10-bit value from 0-1023 based on an input voltage of 0V-5V. A value of Vin should return an ADC number of about 600 based on a 12.7 volt input. The idea is if the battery voltage drops below 12.6V turn on the charge current from the solar panel, turn off the current then wait, then measure again.

A HIGH from DP2 switches on Q1/Q2. Q1 is a PNP bipolar transistor. In addition by adjusting the value of 1K resistor on Q1's base we can introduce current limiting in addition to acting as a power switch. See Introduction to Constant Current Circuits. Note in the video I was charging a 12-volt lead-acid sealed gel-cell type battery.

This is for small applications and if trying to charge a 1000-watt battery bank buy a commercial unit. Add a heat sink to Q1 if needed - other PNPs will work if they have sufficient collector current. See the following on various types of switching transistor circuits:


Zener diode switch circuit.


The above uses a transistor switching circuit to turn on the Zener diode circuit to do a voltage measurement. This prevents the small, but steady discharge of the battery. You will have to add that to the following code.

Download the Arduino code solar_charger.txt.

Serial monitor Arduino


The above program will produce this out on the Arduino serial monitor.

LM317 current limiter used with solar panel.


I used this circuit to protect my solar panel charging system. The solar panel can produce a maximum current of 500mA. A really drained lead-acid battery can look like a dead short so this safely limits the current to protect the panel from possible damage.

The formula is Iout = 1.25V / RE. For 500mA RE = 2.5 Ohms.


Web site Copyright Lewis Loflin, All rights reserved.
If using this material on another site, please provide a link back to my site.