This instructable primarily shows how to control the charging voltage from a solar panel to an energy storage device (capacitors in this case).
I showed how to construct the light previously https://www.instructables.com/id/Human-Powered-Light-from-my-book-Doable-Renewab/
This solar panel can produce up to 18 volts, but my capacitor bank should never receive more than 15 volts. I want to stop charging at 14 volts--just to be on the safe side.
To accomplish this, I use an Arduino microcontroller which controls a relay. The relay controls power into the capacitor bank. Initially, the Arduino is off and the relay is open--no power to the capacitors. I push a button, which energizes the Arduino and starts its program. (I use the button so that the Arduino is only drawing power while the capacitors are charging--in this situation, I charge for about 10 minutes to get one hour of run time on the light).
The Arduino program keeps the relay energized until the voltage reaches 14 volts. The voltage divided across the 20K and 220K (schematic says 200K, but the resistor is actually 218K) results in about 1.17 volts going into A0 for 14 volts going into the capacitors. The Arduino releases the relay, which stops capacitor charging and powers down the Arduino.
As you can see, the program is rather short. The "valm>239" is what causes the Arduino to shut off the relay when 14 volts is achieved.
1.17/5 = x/1024 This is the voltage in on pin A0 compared to the maximum (5 volt max) equals a portion of "1024"--the number generated when 5 volts is present.
I used a breadboard and clip jumpers to make this work--but it can be cleaned up for a permanent setup.
In conclusion, to use an Arduino for voltage regulation, the Arduino must receive a DC voltage between zero and five volts on one of its analog input pins. The voltage between zero and five volts will result in a number between 0 and 1023. If the voltage you are monitoring is greater than five volts, use a resistor combination to divide the voltage. Just remember that resistor values are approximate and you will need to measure and calibrate your system.