22 March 2015

Sun illumination logger with Arduino - summing it up

The 2015/03/20 Solar eclipse is gone and it is time to summarize my short project about it.

It all started one day at work during lunch break, when a colleague expressed his worries for an electric blackout because of the eclipse and the large amount of photovoltaic sources in Europe suddenly reducing their production capacity during peak hour. That was about one month before the event.

I had a PV cellphone battery charger that laying around. Since its performance had not impressed me at all, the solar panel was donated to a new project: measure incident solar power during the Eclipse.

A very simple circuit was assembled, using Arduino A/D converter to measure the PV panel open loop output voltage once a minute.

PV output voltage without a load.
I was WRONG. The unloaded panel voltage is almost maximum even in full shade (about 6 V), but we all know that the available PV power is much less than in direct sunlight.
The 100x55 mm solar panel.
Curiously it reminds of 100mA x 5.5V.

So one sunny day I measured the short circuit current of the panel, a bit more than 100 mA. The Arduino A/D converter accepts 5 V max and a resistor is the simplest form of I/V converter.  This meant passing the current through a R = V / I = 5 / 0.1 = 50 ohm. Easy, but it dissipates P = V * I = 5 * 0.1 = 0.5 W. Heatsink required on the resistor.

A few firmware adjustments later I could finally get meaningful readings of the PV power coming out of my little panel. The graph clearly shows when the Sun rises on the panel (10 am or so), clouds passing by, sunset. 9 days left to the Eclipse for collecting samples

Few more days into the project and we got two rainy days. The available instant power drops from almost 500 mW to an amount variable between 1 and 50 mW. 6 days left to the Eclipse.

Then, worried by the heat produced in the 12-5 V voltage regulator, I wanted to measure the total input current. This operation fried both the regulator and the Arduino of my project. (This accident that I turned into an experiment will be described in another blog post.) The circuit had to be offline for a couple of days until I replaced the voltage regulator to the solderless breadboard.

The 3 days left to the eclipse were sunny and provided good readings. The only heat produced in the circuit was now in the I/V converter resistor. So far so good.

Finally the Eclipse day came. We were expecting about 70% coverage maximum at 10:30 am. This is how the sky looked like all day long:

Thick clouds and not even an idea of wind. The Sun is behind there, I know.

Back home at night I downloaded the logger data and produced the usual graph, ready for the total failure of the experiment:

The thicker yellow line laying on the X axis represents data collected on March 20th. Sun radiation was too weak to produce enough current for a side-by-side comparison with other days. But, wait a moment! Let's have a second look at the last graph. I can add a second Y-axis on the right, that has a different scale than left Y-axis. Ta-da!!

Almost magically the March 20th yellow line sparks to life. Power readings are not meaningful (and certainly not useful as an energy source), but the trend in between clouds is interesting. Look at the smooth dip in the morning, with a low at 10:30 am. Even if the sky was totally cloudy, the simple instrument could detect the whole eclipse. My eyes did notice it as well, but not so carefully.

So, after wrong type of measurement, hardware failures and cloudy days, how would you consider this experiment? Success or failure?


Findlay MacDermid said...

I'm thinking about a similar project. did you post the code or a circuit diagram anywhere? I like the simplicity of this. Thanks!

Paolo said...

Hello Findlay. I have not published the code. Please drop me an email (ik1zyw at yahoo dot com) and I will send you the Arduino sketch I used. It is basically a timed reading of the ADC written to an SD card.

Also read my previous posts about the Sun logger because you will need to know more of your voltage source before feeding it to Arduino. You need a voltage between 0 and 5 V, so some conditioning might be necessary.