InI need an IV curve for a solar panel. As far I know, solar-panel and Diode IV curve pretty much the following circuitsame. Here, I am using 6 diodes, an alternative of 4.8V(6A10-1) as a solar-panel. Where each Diode(6A10-1) voltage dropdrops 0.6V6volt. I provide 4.8v across the diodes from a power supply and max dischargelimited the current at 1amp of the solar-panel is 1A from a power supply. Here I am using for acting like a MOSFET(IRF540)solar panel. The number of diodes is 8 for controlling the current and a 4.8V drop. A 1-ohm resistor for measuring the current.
I am using Arduino to measure the value of current and voltage by varies the MOSFET(IRF540) gate voltage. A low pass filter is connected between D2 and Mosfet Gate. A0 for measuring the solar voltage and Current, Id=A0-A1.
But the problem is: A0 But Arduino gives incorrect values of A1 and current, Id give garbage values & some times give, and sometimes negative values with respect to a multimeter.
[
const int V1 = A0;
const int V2 = A1;
float SolarVolt = 0.0;
float V1_VOLT = 0.0;
float V2_VOLT = 0.0;
float Id = 0.0;
int V1_value = 0;
int V2_value = 0;
double gateVoltage=150; //For Gate volt
double mstep=5.1;
int GatePin=2;
void setup() {
pinMode(GatePin,OUTPUT);
Serial.begin(9600);
pinMode(V1,INPUT);
pinMode(V2,INPUT);
}
void loop() {
analogWrite(GatePin,gateVoltage);
gateVoltage=gateVoltage+mstep;
Serial.print("GateVolt = ");
Serial.print(gateVoltage);
Serial.print(" ");
if (gateVoltage <= 0) {
mstep = 1;
} else if (gateVoltage>=255){
gateVoltage = 255;
mstep = -1;
delay(50);
}
V1_value = analogRead(V1);
V1_VOLT = (V1_value * 5.0) / 1024.0;
Serial.print("V1_VOLT= ");
Serial.print(V1_VOLT);
Serial.print(" ");
V2_value = analogRead(V2); // for Id1
V2_VOLT= (V2_value * 5.0) / 1024.0;
Serial.print("V2_VOLT= ");
Serial.print(V2_VOLT);
Serial.print(" ");
Id=V1_VOLT-V2_VOLT;
Serial.print("ID= ");
Serial.print(Id);
Serial.println();
delay(1000);
}