# Arduino "Maximum Power point tracker" (MPPT) Problem

I need an IV curve for a solar panel. As far I know, solar-panel and Diode IV curve pretty much the same. Here, I am using diodes(6A10-1) as a solar-panel. Where each Diode voltage drops 0.6volt. I provide 4.8v across the diodes from a power supply and limited the current at 1amp of the power supply for acting like a solar panel. The number of diodes is 8 for 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 Arduino gives incorrect values of A1 and current, Id, 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_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);
}
``````
• The garbage values like -0.5V,-0.02,-1.2V,+4V. I measured with a multimeter and the multimeter shows the correct values. PWM signal passed through a low pass filter, which gives a triangular DC voltage to the gate. No, I did not use any external DAC. Nov 16, 2020 at 12:43
• What values are you seeing? Have you measured the voltages with a multimeter? You do realise you are trying to send a PWM signal to the FET's gate, or do you somehow have a DAC on pin 2? Nov 16, 2020 at 12:43
• What raw Vx_value-s are you getting from the analogRead(Vx)? BTW Id = (V1-V2)/R. Nov 16, 2020 at 12:53
• Here R is one ohm. That's why Id = (V1-V2). Vx values are some times positive some times negative. But I didn't get the correct values with respect to multimeter. Nov 18, 2020 at 9:07
• Are you getting negative values for V1_value and V2_value? Nov 18, 2020 at 12:34