How long do solar cells live? (part 3)

Finally, after much tinkering, I’ve got a system that’s worth committing to a PCB. Here is a shot of the prototype system being tested out…

A prototype breadboard lifetester being tested. Two solar cells are being held at MPP at the same time under the work-lamp. The arduino boards are used for PC interfacing and programming.

Above is a picture that I took as I was working on the system. At this point, two solar cells (under the work lamp) are illuminated and being driven at maximum power point (MPP) at the same time. As described previously, I used a current sensing circuit based on an inverting amplifier which is assembled on the long breadboard in the middle along with the DACs and ADCs needed to drive the circuit and collect data. On the neighbouring breadboard is a programmed ATMega328 chip which drives this process and is interfaced by I2C as a slave to another master ATMega328 on an Arduino UNO board. I needed another Arduino UNO board for programming the ATMega and for USB-Serial communication debugging when needed. There’s a neat article on this on the Arduino site here. Have a look at this schematic below for more detail of what I did exactly…

Schematic showing the layout of microcontroller and Arduino boards used in the picture above. Note that the analog circuit and SPI devices aren’t shown.

Unfortunately, the analog circuit that I was using was not quite doing the job. I noticed that although the output voltage from the DAC was as expected from the binary code that I was feeding into it, at the other end of the buffer amplifier (at the DUT terminal) it wasn’t. In particular, at Vin = 0V (short-circuit), the applied bias wasn’t 0V. It turns out that the buffer amplifier needs to work as a current sink in this case – current actually flows from ground to the buffer. To overcome this, in addition to +5V and 0V,  I also needed to supply -5V to the op-amp. To make sure that the output from the amplifier to the ADC, Vout, never went below 0V I used a precision rectifier circuit – it acts like an ideal diode; there’s no voltage drop at the output which is commonly associated with a regular diode. The simplified schematic is below and a full Fritzing file here.

Analog current sensing circuit used to drive the solar cells under test (DUT). The circuit is based on a precision rectifier/inverting amplifier. The range can be altered by changing Rsense.

Here’s what it does again in brief:

  1. Under illumination, current flows from ground to the buffer amplifier.
  2. Current flowing from ground to the buffer amplifier leads to a small (0 > Vx > -10mV) negative voltage across the sense resistor.
  3. This voltage is fed into an inverting op-amp. It is inverted and amplified 350 times. A precision rectifier arrangement ensures that the output can never go below 0V. Gain and offset can be tuned by means of trimmer resistors.
  4. The output is connected to an ADC for data logging and MPP tracking.

Below is some of the data that came out of this system…

Data measured from the prototype breadboard lifetime tester: live MPPT vs time (top panel) and the solar cell IV characteristic measured at the end of the test (bottom panel). Note that the MPP (DACx = 760) agrees well with the DAC setting during tracking.

The live MPPT data shows some fluctuation in voltage. Because of the hill climbing, perturb and observe algorithm used, the voltage is constantly being probed. You can also see a sharp step in the MPP data where I adjusted light intensity which is indicated by the increase in ADCx (current). Shortly afterwards (measurements are taken roughly every second), this is followed by DACx (applied voltage) as the MPPT system catches up which is expected. As a double check, I reset the lifetime tester to run another IV characteristic without changing the light intensity. This registered an MPP at DACx = 760 (0.38V) which was consistent with the MPP tracking data.

Having convinced myself that this system was working nicely, I decided it was time to design a PCB. More on that to come.

A solar simulator on a budget

Light source

To get the high light intensities that I needed for this project, I hunted around for a high-performance high colour temperature white LED and came up with this one. It’s a Cree XLamp CXA2520 high lumen output and efficacy LED array. I chose the 5000K version as I wanted something that would be closer to sunlight. The device delivers 2500Lm white light at 36V and draws 0.5A. I liked the fact that it was a chip-on-board assembly that was ready to mount. I tried a smaller device but cracked it when I tried to mount it on a heatsink.

Heat considerations

We really need a heatsink here because, even though LEDs are efficient, there is still quite a lot of heat to get rid of – 20W if we assume that all electrical power is converted to heat (obviously this is the worst case scenario given that a significant amount of power should be converted into light and radiated away*). Keeping the temperature down increases the efficiency of the system and the lifetime of the LED. More importantly, we don’t want to alter the environment around our solar cell too much as this would bring in an uncontrolled variable.

I found a CPU fan/heatsink laying around and looked into bonding it using adhesive thermal tape. Assuming the thermal resistance of the fan/heatsink is 0.4K/W, and that the ambient temperature is 20C, then the heatsink will run at 28C – hopefully, the LED will be in equilibrium with this so will also be at the same temperature. I checked the specs of the heat transfer adhesive and it seems its performance is predicted to be really good. To be able to transfer 20W heat power, it would need a temperature difference of only 0.001mK across it – so the LED would be at pretty much the same temperature as the heatsink surface we can assume.

Cree XLamp CXA2520 mounted on a CPU heatsink/fan under operation at very low current. Note that the masking tape shown here was removed for final testing.

Power output

This is the most important part: the power output calculation. We need to know how much light the LED actually is going to deliver to our solar cell – in the lifetime tester application, I envisage that each solar cell under test will be assigned its own LED and this way the system would be truly modular.

On to the calculations then…What we want to know is the light intensity (irradiance) on the solar cell front surface which is simply the light power per unit area. For instance, 1 Sun illumination has an intensity equal to 1kW/m2 which is itself a unit of irradiance. Here’s how we work this out:

  • The thing is we want to know how much “real” power the LED emits in Watts. Basically, our eyes are setup to be sensitive to some wavelengths over others (the peak of the eye response happens to be tuned to the sun’s peak emission per nm which is green light at around 500nm – let’s not get drawn into a discussion about evolution here). Measuring the light output in Lumens tells us how bright the LED will be to our eyes but doesn’t tell us how much power there actually is. We need to convert units and to do this, we need to know what colour the light is. If you remember, I said that our eyes have a peak sensitivity to green light. So green light has the most number of Lumens per Watt, 683 Lm/W. Other wavelengths have less. This Lm/W number is referred to as luminous efficacy of radiation – it relates luminous to radiative flux and tells us...for a given amount of light energy, how much does this stimulate our eyes. Weird huh. Don’t get this confused with luminous efficacy of the source which is a measure of the overall efficiency of the LED in converting Watts of electrical input into Lumens of emitted light (126 Lm/W in this case). In fact, increasing luminous efficacy is one way to increase the LEDs apparent efficiency; if we made it green, it would be about twice as efficient.
  • But we don’t have a green monochromatic light source, we have a white light source? So we need to average the contribution from all the different wavelengths that make up the emitted spectrum from the LED. This gets a bit complicated. Fortunately, we can make some assumptions. Let’s assume that the spectrum of the LED approximates a blackbody that has been truncated to the visible region (normally a blackbody emitter would radiate light in the NIR and UV that we can’t see so the luminous efficacy would be much lower overall). So the luminous efficacy of radiation will be 350 Lm/W. From this, we know the total radiant power output from the LED will be 2500 / 350 = 7.1 W. We’re getting there.
  • The total radiant power is helpful but we need to know about intensity, or the number of Watts emitted over a given area. One way to go would be to assume that it’s distributed evenly over space but a better way is to assume that light emission follows Lambert’s cosine law; lambertian sources have the same brightness no matter at what angle you look at them even though their emission is not uniform. Let’s not get too drawn into the specifics here other than to say that the light intensity follows a cosine law with angle and LEDs are often approximated to lambertian emitters. So why break tradition? OK then we can now say that the peak intensity in the forward direction will be 7.1 W / π = 2.3 W / sr where sr stands for steradian (a unit of angle in 3D space. Imagine the surface of a sphere rather than the arc of a circle).
  • To get the power on the front surface of our solar cell then, we just need to know how many steradians it covers and multiply.  For a 2mm x 2mm (0.04 cm2) solar cell positioned 2 cm away from the LED (face on), I expect it to cover approximately 0.031 sr (using the formula for a cone with spherical cap) which would give us 71.3 mW incident flux and an intensity of 1781 mW / cm2 or 18 Suns! At a more reasonable distance of 5 cm, we would still have 3 Suns which would be plenty.

I’ve included the details of all these calculations in this sheet.


When I mounted the LED, I was concerned about applying enough pressure to ensure a strong bond and good thermal contact. Here, they recommend pressures in excess of 100psi! I managed only 8psi. Basically, I was concerned about breaking the LED board. I had to rest a power supply on top of a toothpick box – it seemed to be just the right size to clear the LED optical surface which shouldn’t be touched. Everything was a bit unstable as you can see…

Mounting the LED onto a CPU heatsink/fan with thermal adhesive film. Pressure applied using a small open box with a power supply on top giving 8psi.
Testing out the high power LED at 34V. Note that my power supply could only deliver 31V so I had to wire a couple of C (1.5V) batteries in series with it to get up to a more suitable voltage. You can see the meter is reading a current of 0.223A rather than the recommended 0.5A.

Driving circuit

I wired up a constant current LED driver to drive the LED with a potentiometer to control brightness (see schematics below). You can see from the chart that the output scales linearly with the voltage input to the dimmer pin – at 0V, you get the maximum output and at 4.2-4.3V the output has dropped right down to 0%.

The layout of the LED driver circuit based on the RECOM constant current LED driver unit. Output power can be controlled using the potentiometer which varies voltage supplied to the dimmer input. The output current as a function of the dimmer control voltage is also shown.

This appeared to work well when I tested it out. It got fairly bright as I adjusted the dimmer voltage which you can see from the image above however, I don’t have a way of actually measuring this at present. What I need is a calibrated meter. Unfortunately, this is outside the price range of the shed right now but I intend to do this when I visit the labs in Sheffield again.

Mismatch factor

An important figure of merit when it comes to benchmarking solar simulators is the concept of mismatch factor. It’s basically a score that your light source gets on how well it represents the solar spectrum. To work it out, we need to sum up the power in wavelength intervals over the visible and near infra-red portions of the electromagnetic spectrum for the sun (reference) and simulator (LED). Have a look at this figure below…

Calculating spectral mismatch factor: LED vs solar spectrum. Upper panel: relative spectral irradiance (area normalised) for the sun (red line) and our LED (black line). Lower panel: a table of integrated intensity over specified wavelength interval with mismatch factor (rightmost column).

Hopefully, you can see straight away that there’s a big difference in the shape of the two spectra. They have been area normalised – remember that the area under the spectra is the total power from the two sources. If we divide by area under the entire spectrum, then we’re effectively setting them to the same power for comparison which is what you would do when testing a solar cell. To get the mismatch, we then sum up the areas under the spectra between the intervals shown and compare (see table). You can see that the LED has a lot of its output in the visible range (400-700 nm) and none in the NIR compared to the sun.

To qualify as a class A solar simulator, the ratio (last column in the table) of all ranges needs to stay within 0.75 – 1.25 – we’re way off! Unfortunately, for this LED, the ratio even goes outside the allowed limits for class C (0.4 – 2.0). We need some NIR component to the spectrum to fix this which is possible. For the purposes of lifetime testing on a  budget however, then I think we need to accept these limitations. It’s good to know what they are though.