- 3D-Druck Einstieg und Tipps         
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

    Powerstation Test
    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
  •  

LiFePO4 Speicher Test