Introduction: DIY Arduino PWM5 Solar Charge Controller (PCB Files and Software Included)

About: Arduino, DIY RC remotes, solar electronics

A few years ago, Julian Ilett designed the original, PIC microcontroller based "PWM5" solar charge controller. He also experimented with an Arduino based version. You can find his videos here:

according to Julians schematic, designed a very small version, based on the 5V, 16MHz Arduino Pro Mini:

After I already designed and built two MPPT buck solar chargers, I wanted to try this very simplistic design.

Step 1: Drawing the Schematic

The schematic is based on Julians hand drawn one. I tried to make it as easy to understand as possible. It will also be the base for a proper PCB.

Step 2: Designing a Proper PCB

The Eagle schematic was the base for this PCB layout. The tracks are single sided and very wide. This allows you to etch your boards easily, if you don't want to order them from a manufacturer.

Step 3: Preparing the Prototype Board

Before I order the boards, I wanted to verify the design on a piece of prototype board. Its size is 0.8 x 1.4 Inches.

Step 4: Populating the Board

Because the board should have the same size as the Pro Mini, the components are very close together. Of course we could also use SMD components, but I wanted to keep the design as DIY friendly as possible. The component names can be found on the schematic. All resistors are 1/4 Watt size.

BTW: This was my first lead free soldering attempt. So it could look cleaner ;-)

Step 5: Testing the Dickson Charge Pump Circuit

Because I wanted to keep the power consumption as low as possible (it is around 6mA), I have used the 3.3V, 8MHz version of the Arduino Pro Mini. So because of the 3.3V (instead of 5V) supply, I was not sure, if the charge pump would be able to generate the required gate voltage for the IRF3205 MOSFET. So I did a little experiment with different PWM frequencies and pump capacitors. As you can see, the voltage of about 5.5V was not sufficient to drive a non-logic level MOSFET. So I decided to use an IRLZ44N. This is a so called logic level MOSFET and works fine with 5V.

Step 6: Soldering the Remaining Components and Wires

Then it was time to solder the remaining components as well as the wires and the external anti backed diode. This diode is very important! Make sure, that it is able to handle your maximum current.

Step 7: Software Tests

Because the original software was a bit how you doing, I decided to write my own. You can download it (and the Eagle PCB files as well as the Gerbers) on my GitHub. The link is at the end of this Instructable.

An important step was to figure out the maximum switching frequency of Julians MOSFET driver circuitry. As you can see, 15kHz looks horrible (measured at the MOSFET gate) and would produce a lot of heat. 2kHz on the other hand looks acceptable. You can see the differences in the video on the first page of this article.

To do the required measurements, I have used my cheap DSO201 pocket oscilloscope, a multimeter and a DIY Arduino power meter.

Step 8: Conclusion, Download Links

So, what is the conclusion of this little project? It works fine, but of course it can't be used for nominal battery voltages below 12V. At least it would be very inefficient in this case, because it is just a PWM charger rather than a buck converter. It also does not have MPPT tracking. But for its size it's quite impressive. It also works with very small solar panels or with very dim sunlight.

And of course it is great fun to build this thing. I also enjoyed to play with my oscilloscope and to visualize the MOSFET driver circuitry.

I hope, this little Instructable was helpful for you. Also have a look at my other electronics videos on my YouTube channel.

Software, Eagle CAD files and Gerber files on my GitHub:

MPPT Chargers on my GitHub:

My YouTube Channel:

Step 9: Where to Order Your Boards

The boards can be ordered here: (with the attached Gerber files) (with the Eagle board file)

of course there are also other alternatives