Introduction: Solar Charging Tracker With Adaptable Input Current Range


This tutorial shows how to construct an improved of the Solar Charging Tracker by ladyada: a project present in the Adafruit official page.

This project showed how to assemble a monitoring circuit to read the current and voltage being outputted by a solar cell and supplied by a solar charger. However , the current range that could be read by the original version was limited (up to 1.04 Amps) and was not sensitive to low current values (1.017 mA sensitivity).

Here, we modified the circuit design and the code so thatthe project would support a wider range of higher and lower current values outputted by the PV panel. This was performed by adding a range selector circuitry able to read up to 2.13 Amps (without damaging the Arduino) and down to 21.3 microAmps steps.

Therefore, this allows the charging monitoring of a broad range of solar-powered devices going from low (e.g. lab-scale solar cells,…), mid (e.g. cellphones,…) to high (e.g. laptops) power portable electronics, using any type of common batteries for electrical storage (here we tested with 2500Ah and 1350Ah Lithim.Polymer batteries.

Step 1: Materials Used:

0.1 Ω Precision resistor

1Ω 1-Watt

10 Ω Quarter-Watt

100 Ω Quarter-Watt

10k Ω Quarter-Watt

15k Ω Quarter-Watt

34.5k Ω Quarter-Watt

47k Ω Quarter-Watt

67.9k Ω Quarter-Watt

3 x 3.5mm terminal blocks

4 Positions rotary switch with at least 2 pathways in parallel

TS922 Op Amp

8 Leg IC holder

Arduino Uno:

Prototyping Shield:

Standard 16x2 LCD:

Solar panel for testing:

Enclosure for Arduino:

Copper wire

Tin solder wire

Female jumper wires :

9V Battery Clip

3 x 3.5 mm Phono Jacks and Plugs


Battery and charger for testing:

Step 2: Analog Circuit

Analog 1:

To measure the current the solar cell is outputting we first need to measure how much potential falls in a given resistor and take the current that passes through it using Ohm’s Law, in this case we are reffering to the 0.1-100Ω resistors (for different ranges of input current), this voltage is too small to be measured directly by the Arduino , so we have to use an inverting amplifier with the Op Amp and two resistors R1 and R2, the Gain will be given by R1/R2, in this case it will multiply the voltage by 23.5 so it can be measured. I used 4 different resistors for different ranges of maximum current that can be read as you can see in the table above.

Analog 2:

To measure the voltage that the cell is outputting a simple voltage divider is used (to increase the maximum voltage that can be measured, in this case 10V),with two 10kΩ resistors(R3 and R4).

Analog 3:

To measure the voltage at the terminals of Lithium-Polymer battery, while being charged by the cell another simple voltage divider is used (between R5 and R6).

Analog 0:

This part is simply to select the between the 10-70KΩ resistors, it can be done using the rotary switch that corresponds another resistor(0.1-100Ω) used in Analog 1. Each of the four resistors can then be identified by using this analog pin by measuring a simple voltage divider across it and a 10kΩ resistor (R7).

Step 3: Connecting the LCD

Solder the header and clip pins 1,2,3,5,7,8,9
and 10.

Connect pins 15 and 2 together aswell as pins 1, 5 and 16 with wire and solder them.

Connect the 10k potentiometer to pins 2 and 5 and the middle contact of the potentiometer to pin 3.

Step 4: Analog Circuit

After soldering the header pins to the
prototyping shield, start by soldering the 3 terminal blocks to the top-most edge of the shield, after that mount the circuit as shown in the scheme provided.

Now the tricky part, the variable resistors controlled by the switch must be soldered in different pathways, one way to test which terminals are connected is to use the “Beep” function on your multimeter. Solder one end of the switch to the prototyping shield in its positions, and the variable resistors to the other ends. As you can see, it is not very pretty, I am sure it can be made in a much more elegant way.

Solder the female jumper wire cables to digital slots 2-7, ground and 5V in the shield.

Make sure you connect the resistances in the right positions and position the switch so that it pops out of the Arduino enclosure through the slot that can be opened.

Step 5: Programming the Arduino

In this step you will need to connect your Arduino Uno to your computer via USB and have the Arduino IDE compiler installed.

After instaling the compiler open the .ino file in this step and upload it to the Arduino

Step 6: Testing LCD

Now connect the female jumper wires in the following order:

Ground to pin 16

5V to pin 15

Digital 7 to pin 14

Digital 6 to pin 13

Digital 5 to pin 12

Digital 4 to pin 11

Digital 3 (RS) to pin 5

Digital 2 (EN) to pin 4

With nothing connected all values must be equal to 0.00 . An oscillating value means you are appliying a negative potencial to the analog pins , that could damage the Arduino! So beware and make sure you connected everything where you should.

Step 7: Enclosure Montage

Make sure you make room for everything in the enclosure and try to fit all components nicely.

Now you just need to drill 3 holes in the top of the enclosure for the phono plugs and solder the jacks to the solar panel, for more detailed steps consult the original tutorial:

Step 8: Done

You are now ready to use your solar charging tracker to:

Measure the OC Voltage (Up to 10V) of a solar panel (have only the panel connected to it).

Measure the SC Current (Up to 2.13 Amps) of the panel(Just short the Charger phono plug) .

Track how thea charger charges a battery (connecting the battery and charger to its corresponding phono jacks )

This project was made in FCT UNL (Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa)

by Guilherme Ribeiro , under the orientation of Dr Manuel J. Mendes, special thanks to him for all the guidance and help throughout the project development.