Tentative charger specification:
The following outlines the required functionality to implement an efficient energy converting pseudo MPPT charger. It implements CCCV charging, low voltage trickle up, very low battery voltage charging disable, maximum current charge limiting, pseudo MPPT with insolation compensation, PV panel temperature compensation, and battery over and under temperature lockout.
Availability of a microcontroller with analogue digital Converters and PWM digital output is assumed.
Provide a buck converter controlled by the microcontroller. this could be implemented almost completely in software with a transistor switch controlled by the microcontroller, or if desired, a reference voltage could be provided by the microcontroller to a discrete buck converter.
Provide small current sense resistors in the PV panel ground lead and battery ground lead.
and use simple op-amp amplifiers to increase the voltage from the sense resistors to a sensible level for the microcontroller ADCs.
Use voltage dividers to allow measurement of the PV panel voltage and battery voltage by the motor controller.
Use a thermistor or or RTD to measure PV panel temperature
Use a thermistor or RTD to measure battery temperature.
Charge the battery from the PV panel using the buck converter.
Monitor PV panel voltage and change the loading from the buck converter so that the panel tracks a desired MPPT curve - ie V_ panel = Vmp modified by PV panel current, battery temperature etc. ie The desired panel voltage will rise slightly with increasing PV current and will fall steeply at the very low current and to compensate for very low insolation conditions and will compensate for panel temperature.
If battery voltage is below the battery maximum of about 8.4 volts charge at maximum available energy as long as I charge is below I charge Max of 1C.
If battery voltage = battery voltage maximum of about 8.4 volts operate in constant voltage mode and monitor battery current until end point current is reached
If battery voltage is less than 2.5 volts per cell limit charging to say 0.1 C or some other designed limit.
If battery voltage is less than 2 volts per cell prevent charging
If battery temperature exceeds 40° C prevent charging
If battery temperature is below 0 degrees C prevent charging
Answers from Andrew and Sunnyskyguy provide good material for developing you question. You need a full spec on what is required of you and a full spec of all equipment involved. Once you have those it will be "not too hard" to arrive at a good solution. Please consider this a starting point, with input to follow as more information is provided.
Very importantly - when is this required to be finished by?
Full spec of equipment:
PV panel spec: Vmp, Imp, Wmp, Isc, Voc, ....
Brand , model, Datasheet link?
Battery: Chemistry (LiPo but ...?) Wh, Vnom, Ah, Imax_chg, Vmax_chg, Tempmaxchg,
Brand, model, datasheet link.
Do you need/want to charge battery to nearly full capacity or would ~= 80% capacity with much longer cycle life be OK? (ie if you stop at end of CC then CV not needed and you get less capacity but better lifetime), ...
Do you need/want to implement protection features such as
low rate trickle-up charge under 2.5V (or wherever),
full lock out under say 2V (I recently almost had a house fire because a charger did NOT do this
cell temperature monitoring,
environment temperature monitoring.
An Arduino will allow a charger with all bells and whistles, if desired.
Whistling Dixie optional.