# Circuit design

In this post, I want to talk about the circuit that I developed to drive solar cells at their maximum power point – the main building block of a modular lifetime tester. At this point, I should credit Sarah Sofia at MIT for her article “Build Your Own Sourcemeter“. This is what really gave me the inspiration and got me thinking that this would actually be possible with an Arduino and simple electronics.  Circuit layout of the prototype lifetime tester composed of DAC, op-amp and ADC interfaced by SPI with an Arduino UNO. The Arduino is interfaced with a PC through the serial port. Note that only one channel is shown here (one DUT).

A schematic of the lifetime tester circuit is shown above. In essence, the system is composed of:

• a two-channel DAC (MCP4822) to give me the drive voltage across the solar cell. Because there are two channels I can run two solar cells at the same time. Typically, several subcells (6-8) are made on the same substrate so here, we can test two subcells of the same device at the same.
• solar cell output is dumped into separate small (10-100 Ohm) series resistors which allow us to measure the current from the voltage dropped across them (applying Ohm’s law). Since resistance values and currents are small, the voltage drop will be small (we don’t want to drop much voltage in our ammeter).
• an opamp is then needed to (on each channel) to bring the voltage to something that an ADC (ADS1286) can actually read. In fact, I’ve used an inverting op-amp with variable gain up to 1000x. To account for the fact that different solar cells under test might have different efficiencies and could therefore supply a different current, the gain is variable.

In this circuit, only the fourth quadrant (power generating region of the IV characteristic) can be accessed. Under operation, a solar cell will supply a current in the opposite direction to the applied bias. This means that the voltage across the series resistor will, in fact, be negative – one terminal is grounded, the other will be at some voltage below 0V. This signal gets fed into an inverting opamp which flips it positive again and amplifies it too. Any positive voltage at the input here will be rejected as it will be inverted to a negative output and will hit the 0V supply rail of the opamp. This means that if you try to run the solar cell in forward bias above the open-circuit voltage, giving you a forward current, you won’t get any output from the amplifier. I’ve tried to give you an illustration of this in the figure below (see lower panel). (upper panel) LT spice model used to simulate and design the lifetime tester circuit. Note that the solar cell (DUT) has been modelled as a diode, current source and some resistors. (Lower panel) simulated input voltage from the DUT (blue line) and output (red line) voltage from the op-amp.

So did it work?…

To answer this, I connected up a solar cell and just went for a simple voltage sweep from the DAC while monitoring the current using the ADC. Here’s what the data looked like… Using the prototype lifetime tester circuit to measure an I-V characteristic from a perovskite solar cell under illumination (black line). Power output (red line) has been calculated from DAC binary value * ADC binary value.

I was pretty happy when I saw this data. As you can see, it looks almost exactly how we expected it to from simulations and from understanding how an inverting op amp should operate. Furthermore, the fact that we can get power output curve and see a clear maximum power point (MPP) means things are looking good for doing MPP tracking. There’s some noise but I think this might have been from the fact that I was using the torch on my phone as an illumination source and it was hard to hold it exactly still. Since the measurement takes several seconds to complete, shaky hands could well be the culprit.

If you’re interested in how I coded this, then please follow the link.