# Low-Cost Three-Quadrant Single Solar Cell _I-V_ Tracer
## 2 Methods and Materials
### Device Implementation
The same integrated circuit (IC), a PIC16F1615, is capable of measuring voltages using a 10-bit analog-to-digital-converter (ADC) with eight multiplexed input channels. For the current measurements, a Hall-effect sensor IC (TMCS1100) in series with the current path was installed. Figure 8: Zoomed graph of the most interesting zone of the discharge of \(C_{1}\) and the charge of \(C_{2}\) across the DUT. Current flow (red line), voltage of \(C_{1}\) (blue line), and voltage of \(C_{2}\) (green line) over time. Figure 9: Circuit simulated in LTSpice for estimating the duration of step 6 of the process with the chosen capacitors and voltages. This IC delivers an output voltage proportional to the current measured, in the range [0, 2.5] V for negative values of the current and in the range [2.5, 5] V for positive currents (including 0 A), and is rated to a maximum current of \(\pm\)10 A, delivering a voltage of 5 V in the case of +10 A and 0 V in the case of \(-\)10 A. The voltage swing entering the ACD input must be 0 V to 5 V, so the current measurement IC can be directly connected to the analog input of the MCU, but for the voltage measurements, a voltage level adaptor circuit must be inserted. Voltages across the two capacitors (\(C_{1}\) and \(C_{2}\)) determine the DUT voltage that we want to finally measure, so an operational amplifier (OA) fed with the two capacitor voltages at its inverting and non-inverting inputs will output the difference between them, adding gain or attenuation if desired, depending on the external resistors. For the full _I-V_ curve tracing, we must measure differential voltages, positive (on the first and fourth quadrants) and negative (on the second quadrant); the voltage swing in the first case--from 0 V to around (0.6-0.8) V--is much smaller than in the second one--from 0 V to vs. around (10-15) V. In addition, a good resolution is desirable in the usual first quadrant section of the curve, just where the voltage swing is smaller. For this reason, two different level adaptors  
Figure 11: Time simulation for the discharge of \(C_{2}\) across the DUT with additional resistance of 0.3 \(\Omega\). Current flow (green line), voltage of \(C_{2}\) (blue line) over time. Figure 10: Time simulation for the discharge of \(C_{2}\) across the DUT without additional resistance. Current flow (green line), voltage of \(C_{2}\) (blue line) over time. have been designed for each section, both with output voltage swings from 0 to 5 V: the first amplifying OA without inversion, with an input active differential voltage from 0 to 0.8 V for the positive adaptive voltages, and the second attenuating OA with inversion, with an input active differential voltage from \(-\)15 to 0 V for the negative adaptive voltages. Two of the ADC multiplexer inputs are connected to the outputs of the OA level adaptors described and the firmware within the MCU will select the proper input depending on the section of the curve being measured. The detection of the zero-voltage point crossing will be the decision point for the MCU (for switching one channel to another). Figure 12 shows the connections of the OA level adapters (without external resistors for simplicity) and the current sensor IC. The scheme used to measure the voltage and current is shown in Figure 12. For the voltage across the solar cell, four-terminal sensing is used to determine it with enough precision. This concept must be transferred to the PCB design and the cables soldered to the DUT (using independent wires for the current and for the voltage to ensure a correct Kelvin sensing). As soon as the MCU finishes the MOSFET (switches) sequence described in Section 2.2 (to start the first voltage sweep), it selects the proper ADC channel (the negative voltages level adaptor) and starts sampling voltage/current points. For the sake of a proper sampling speed, these pairs of current/voltage samples (10 bits of resolution each) are stored within the internal EEPROM memory of the MCU.