Hallo, ich bin neu in dem Gebiet. Möchte ein MPP Tracking machen. Rechne die Spannung von dem Solarpanel über den ADC, und den Strom der Batterie über Isa Asic. Kriege aber für die Leistung komische werte zurück. void einzelmessung(void) { unsigned char i; lies_sdi(ADR_MSR, BZ_MSR); /*Am Bit Nummer 16 können Strom- und Spannungsmessung unterschieden werden. In U_bat und I_bat werden gleitende Mittelwerte als ganzzahlige Größen gespeichert. Für die Ausgabe können diese später in Fließkommazahlen umgerechnet werden.*/ if (sdi_puffer[16]) { U=0; for(i=0;i<15;i++) if(sdi_puffer[i]) U|=((unsigned int)(1))<<i; //Offsetkompensation U-=889; U_bat=((7*U_bat)>>3)+(U>>3); }else { I=0; for(i=0;i<16;i++) if(sdi_puffer[i]) I|=((unsigned int)(1))<<i; I_bat=((7*I_bat)/8)+I/8; } } Hier ist mein MPP code und die definitionen vom Strom und Spannung. float U_zelle ; long I_bat; double P_zelle; double P_zelle_alt; while(1) { P_zelle = U_zelle*I_bat; if(P_zelle > P_zelle_alt) { OCR0++; } else if (P_zelle < P_zelle_alt) { OCR0--; } P_zelle_alt = P_zelle; } Komme nicht an der Ursache des Problems. Habe noch den Code für die Einstellung des ISA Asic. Danke.
Veielleicht solltest duEinzelmessung mal in deiner Schleife aufrufen, und uns zu Debug-Zwecken die Messwerte zeigen, und es ist unnötig, bei P_zelle_alt == P_zelle den Wert unverändert zu lassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.