The battery charge controller should do two things: get as much power out of the solar panel and switch off if the battery is full.
To get maximum power out of a solar panel, it is necessary to use it in (or at least near) the MPP (maximum power point), normally an MPP-Tracker algorithm would do this.
Here is a sketch of the U/I relation of a solar panel and the P/U relation:
Output current stays about constant as long as the voltage on the panel is below a certain point. But as power equals current times voltage, it makes sense to use the panel in the upper range where P is max.
I am too lazy to build an own stepdown controller with custom regulation, mpp tracker algorithm etc (see here for a nice one by a guy who does this in his job, too), so I'll go the easy route based on this concept.
It does no software MPP tracking, but still provides better efficiency than a simple linear regulator (or even a series diode). Plus these LM2596 step-down converter boards are really cheap (2 eur per board) and I got some of them in my parts bin.
This test setup with 2k pot / 47k voltage divider to base of bc547b with 220k pullup works for holding the input voltage above a certain point.
With further modification it fits the application:
The copper board is soldered to GND of the DCDC board and acts as additional heat sink. It took two soldering irons set to 450°C to solder that board sandwich together, but the caps seem to have survived it. The additional board got holes to mount this construction in a housing. I've soldered the in/out wire GND/"-" directly to the GND contact of the switching regulator for cleaner wiring.
The additional NPN transistor is located near the heat producing elements, which is not ideal, due to temperature dependency (ideal would be same temp. as solar panel). The ideal location for this circuit would be near the solar cell. Calculations or maybe a simple simulation have to show if this matters that much.
In normal (unmodified) schematic, the step down converter just does the following to regulate the output (simplified, there may be a nested current control loop, depending on regulator, which I omit here):
...with resulting output current:
With the additional parts, the schematic forms nested control loops:
As long as the input voltage is about a set value, the buck converter just does its normal work and regulates the output voltage. As soon as the input voltage gets too low (because the solar panel can't provide that much current), the outer control loop kicks in and limits the current by disabeling the output:
*ADD MEASUREMENTS FOR DIFFERENT SCENARIOS HERE*
As the MPP is temperatue dependent (a solar panel is just a bunch of odd mutant ninja diodes, so shockley equation applies), it makes sense to add at least some degree of temperature compensation to get out more power:
The forward voltage of a diode changes with some mV/Kelvin (usually around -2mV/K for a silicon one).
As a solar panel consists of a bunch of diodes in series and this temperature dependency applies to every single diode, the temperature dependency of the whole panel sums up to
Upanel,tempdep = Uref - Ctemp * Ndiodes * deltaTemp
The circuit sketched above regulates its input voltage to a point depending on the base-emitter voltage of the BC547B on its enable pin. This voltage is generated from the input by a voltage divider, so:
Ube = Uinput * dividerfactor ; Uinput = Ube / dividerfactor Ube = Ube,ref - Ctemp * deltaTemp Uinput = (Ube,ref - Ctemp * deltaTemp) / dividerfactor
Uinput = Upanel,tempdep
...this resolves to...
(Ube,ref - Ctemp * deltaTemp) / dividerfactor = Uref - Ctemp * Ndiodes * deltaTemp (Ube,ref - Ctemp * deltaTemp) / (Uref - Ctemp * Ndiodes * deltaTemp) = dividerfactor
***BLABLA put some more thoughts in this and plot a nice chart, plus find a way to show nice formulae on hac.io, and re-calc the whole thing on paper. Ascii monospaced text is just a pain to think math formulae in *
With apporx 2mV/Kelvin base emitter diode and a gain of approx 25 this leads to 54 mV/Kelvin input voltage temperature dependency. With a solar panel with 29 cells this would lead to 54mV/29 = 1.8mV/Kelvin per cell, which is quite reasonable. With additional base resistor of feedback loop transistor this could be further adjusted...