This device is a solar charge controller for small off grid battery system. It goes between the solar panel and the battery. Its function is to safely charge a battery and prevent overcharging and overdischarging.
The arduino provides the logic for the charge controller. The arduino senses the input voltage of the solar panel, measures the ambient temperature, and decides how to charge the battery and control the load. A switch mode power supply was included to power the arduino from the battery. This was done to increase the efficiency of the device.
The charger has 3 stages. Constant current, topping charge, and float charge. All three stages are temperature compensated using a LM34 sensor. During stage 1, or constant current charge, the power MOSFET is fully on. The voltage rises until it reaches a point determined by the ambient temperature and battery type. During stage 2, or topping charge, the voltage is held constant by decreasing the PWM duty cycle until the duty cycle drops to 10%. Stage 3 is where the float voltage is maintained by sending small pulses of power. The float voltage is also determined by the ambient temperature. If the battery has a heavy load applied during any stage of charging, the arduino will make the proper decision on which stage to jump to in order to maintain max power delivery to the load and max battery charge.
The charger also has a load disconnect feature. This will disconnect the load when the voltage of the battery drops below a certain threshold to prevent over discharging the battery and decreasing the batteries lifespan.