- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Akku Spannungs Messung Code Fehler

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    05.05.2006
    Beiträge
    48
    Anzeige

    E-Bike
    Soory für den doppel post!

    ich glaub ich wich weiss wo der fehler ist ich mus in der for schleife task_RP6System(); mit aufrufen. dane an Kenny5020
    leider kann ich es jetzt nicht testen den mein RP6 Tankgerade.


    Code:
    uint16_t SpannungsMessungen[11], Anzahl = 10;                                // Angabe wie oft gemessen wird ( Pro Funktion aufruf ).
    uint16_t Spannung = 0, Temp = 0;
    int AkkuC0 = 0;
    void AkkuCheck(void)
    {
        AkkuC0++;
        if(AkkuC0 >= 500)                                                        // Alle 500 Aufrufe wird die Funktion ausgeführt.
        {
            AkkuC0 = 0;
            for(int Messung = 0; Messung < Anzahl; Messung++)
            {
                task_RP6System();
                SpannungsMessungen[Messung] = adcBat;                            // 10 mal wird die AkkuSpannung gemessen.
                if(Messung == Anzahl)
                {
                    for(int Zaehlen = 0; Zaehlen < Anzahl; Zaehlen++)
                    {
                        Temp = Temp + SpannungsMessungen[Zaehlen];                // Die 10 Messwerte werden Addiert.
                        if(Zaehlen == Anzahl) Spannung  = Temp / Anzahl;        // Die 10 Messwerte werden und 10 geteilt.
                    }
                }
            }    
        }
        // Test ausgabe 
        writeString_P(" || Akku Spannung: ");
        writeIntegerLength(Spannung, DEC, 3);
        writeChar('\n');
    }
    
    .
    Ich werde es morgen test und euch bescheid sagen ob es gefunzt hat.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    05.05.2006
    Beiträge
    48
    Ok ich hab des kleine fehler gefunden es waren sogar 2 / 3 der dritte war ein schönheits fehler.

    Zu den fehlern ich hab nicht daran gedacht das die bei 0 beginne und so nie 10 ereichen können wenn die nur 10 mal zählen.

    Fehler eins: if(Messung == Anzahl) -> if((Messung + 1) == Anzahl)
    Fehler zwei: if(Zaehlen == Anzahl) -> if((Zaehlen + 1) == Anzahl)
    Schönheits fehler: if(AkkuC0 >= 500) -> if(AkkuC0 == 500)

    Und hir der ganze Code, OK den kann man noch verbessern. Was ich auch machen werde.

    Code:

    Code:
    uint16_t SpannungsMessungen[10], Anzahl = 10;	
    uint16_t Spannung = 0, Temp = 0;
    int AkkuC0 = 0, I =0;
    void AkkuCheck(void)															// Angabe wie oft gemessen wird ( Pro Funktion aufruf ).
    {
    	AkkuC0++;
    	if(AkkuC0 == 500)															// Alle 500 Aufrufe wird die Funktion ausgeführt.
    	{
    		AkkuC0 = 0;
    		Spannung = 0;
    		Temp = 0;
    		for(int Messung = 0; Messung < Anzahl; Messung++)
    		{
    			task_RP6System();													// Nur zur sicherheit
    			SpannungsMessungen[Messung] = adcBat;								// 10 mal wird die AkkuSpannung gemessen.			
    			if((Messung + 1) == Anzahl)
    			{
    				for(int Zaehlen = 0; Zaehlen < Anzahl; Zaehlen++)
    				{
    					Temp = Temp + SpannungsMessungen[Zaehlen];			        // Die 10 Messwerte werden Addiert.
    					if((Zaehlen + 1) == Anzahl) Spannung  = Temp / Anzahl;		// Die 10 Messwerte werden und 10 geteilt.
    				}
    			}
    		}	
    	}
    	// Test ausgabe 
    	writeString_P(" || Akku Spannung: ");
    	writeIntegerLength(Spannung , DEC, 3);
    	writeChar('\n');
    }
    Es dauert aber bein ersten abfrage ein wenig bis die daten kommen der zähler muss ja erste 500 erreichen. ( Das mit den zähler han ich gemacht dammit der CPU nicht soviel rechnen muss.


    MFG OLiver G

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen