The heart of of the charge controller is an Arduino Nano board. The Arduino MCU senses the solar panel and battery voltages. According to this voltages it decides how to charge the battery and control the load.
The amount of charging current is determined by difference between battery voltage and charge set point voltages.
Currently the controller uses two stages charging algorithm.According to the charging algorithm it gives a fixed frequency PWM signal to the solar panel side p-MOSFET. The frequency of PWM signal is 490.20Hz(default frequency for pin-3). The duty cycle 0-100% is adjusted by the error signal.
The future planning is to implement 3 stage charging algorithm.
The controller gives HIGH or LOW command to the load side p-MOSFET according to the dusk/dawn and battery voltage.
Main Functions :
The charge controller is designed by considering the following points :
1.Prevent Battery Overcharge: To limit the energy supplied to the battery by the solar panel when the battery becomes fully charged.This is implemented in charge_cycle() of my code.
2.Prevent Battery Over discharge: To disconnect the battery from electrical loads when the battery reaches low state of charge.This is implemented in load_control() of my code.
3.Provide Load Control Functions: To automatically connect and disconnect an electrical load at a specified time. The load will ON when sunset and OFF when sunrise.This is implemented in load_control() of my code.
4.Monitoring Power and Energy : To monitor the load power and energy and display it.
5.Protect from abnormal Condition: To protect the circuit from different abnormal situation like lightening,over voltage,over current and short circuit etc.
6.Indicating and Displaying: To indicate and display the various parameters
7.Serial Communication: To print various parameters in serial monitor