I tried to build an MPPT solar charge controller by just using an inexpensive buck converter which you can get on Amazon for $10. The idea is to use the potentiometer on the buck converter that sets the maximum (constant) current to set the current to a value at which the solar panel operates at maximum power. If this worked, I could use a digital potentiometer, connect it to an Arduino, and implement an algorithm in the Arduino that automatically sets the buck converter to the MPP of the solar panel.
But that didn't work-here is what happened:
I start out with a very low current limit setting which makes the solar panel operate at about 14 Volts an a very low wattage of about 0.1 Watts. Then I slowly turn the potentiometer to increase the current limit and hopefully stop at the maximum power point. But what happens is that the voltage suddenly flips to the battery voltage, and the harvested power is far below of what the solar panel can deliver. At that point, the battery is at 8.18 Volts, and it forces the circuit to run the solar panel at 8.29 Volts which results in a power of 2.8 Watts at the solar panel. However, the solar panel is capable of producing 3.5 Watts under the given conditions which corresponds to a solar panel voltage of 11.77 Volts and which I verified with the variable load resistors.
So the voltage flips between about 14 Volts (open circuit voltage) and the battery voltage, and no matter how carefully I turn the potentiometer, I just cannot get it to stop in the middle at 11.8 Volts, the MPP voltage.
I'm not sure if this behavior is the result of the used controller chip on the buck converter, but at this point, I am planning to build a system where I have more direct control over the duty cycle of the PWM.