Forum: Mikrocontroller und Digitale Elektronik Probleme bei Leistungsberechnung


von Tim (Gast)


Angehängte Dateien:

Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Tim (Gast)


Lesenswert?

wie kann ich die messwerte anzeigen 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
Noch kein Account? Hier anmelden.