Solar Powered LED/Ultracapacitor Arduino Regulated Light

About: I am an author and a maker. My current project is Santa's Shop. I'm working on a science fiction type book--more later. @EngineerRigsby

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

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1:

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.

Step 2:

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.

Step 3:

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.

Off the Grid Contest

Participated in the
Off the Grid Contest

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    6 Discussions


    4 years ago on Introduction

    I tried something simpler. For the regulation of the voltage over the supercaps, I used a buck/boost converter. So from my little solar panel I have 0-5V on the other side of the buck/boost I have 2.5V if possible, but never more. I think it can be scaled for your project and avoid the arduino.


    7 years ago on Introduction

    Those big caps look SWEET in that acrylic case


    I was using a cable which had a bridge rectifier built in (came from a generator--don't want to backfeed the generator).

    You are correct, it's not necessary here--but I may shift back to the hand crank generator when I want some exercise :)