- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Stromzähler

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.09.2005
    Ort
    am Bodensee
    Beiträge
    217
    Anzeige

    Powerstation Test
    Hi,

    also das Display würd ich maximal alle Sekunde Updaten...

    dann hat sich ein kleiner tipp fehler in den kommentaren eingeschlichen.

    "gestartet, bei 32,25kHz ist er nach genau einer halben Sekunde bei 15625
    Stop Timer1 "

    also beim Prescaler von 256 hast 31,25khz und und nicht 32 =) (das mal nur so am rande *g*)

    da ich mich mit basecom null auskenne kann ich dir zu den fehlern nicht helfen.

    Zum Fehler in Line 38, du versuchst nen String und nen Word zu addieren, das klappt nicht ^^ (ich hoffe mal auch in Basic nicht )

    Als ich mal in Basecom was getestet hatte musst ich "Enable Timer1" zum starten nutzen ist das mittlerweile anders ?

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.01.2009
    Ort
    Dortmund
    Alter
    29
    Beiträge
    114
    So, hier jetzt meine zweite Version, die sich auch ohne Fehler kompilieren lässt :

    Code:
    $regfile = "m8def.dat"                                      'Definieren des Chips
    $crystal = 8000000                                          'Frequenz
    
    Config Adc = Single , Prescaler = Auto , Reference = Off    'ADC konfigurieren mir Aref als Referenzspannung
    Start Adc
    
    Config Lcd = 16 * 1                                         'LCD konfigurieren
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    
    Cls
    
    Config Timer1 = Timer , Prescale = 256                      'Timer1 (16-bit) konfigurieren
    Start Timer1                                                'Mit dem Prescaler ergibt es 31250Hz
    Stop Timer1
    
    
    Dim Strom2 As Single                                        'Strom 1,5*10^-45 bis 3,4*10^38
    Dim Strom As Single                                         'Strom2 1,5*10^-45 bis 3,4*10^38
    Dim Strom_wert As Word                                      'Strom_wert 0 bis 65.536
    Dim Verbraucht As Word                                      'Verbraucht 0 bis 65.536
    
    
    Do
    
       Gosub Hauptprogramm                                      ' Verweis auf Subroutine
    
    Loop
    
    End
    
    Hauptprogramm:
    
       Timer1 = 0
       Start Timer1                                             'Timer1 Starten
    
       Strom_wert = Getadc(5)                                   'ADC an Portc.5 auslesen (Werte 0 bis 1024)
       Strom = Strom + Strom_wert                               'Gemessener Wert wird in jedem Durchgang addiert
       Strom2 = Strom * 100000                                  'Umrechnung des Wertes in den realen Amperewert (in mAh)
       Strom2 = Strom2 / 4096                                   'Umrechnung des Wertes in den realen Amperewert (in mAh)
       Verbraucht = Strom2 / 3600                               'Umrechnung wie viel mA in einer halben Sekunde verbraucht werden
    
          If Verbraucht < 10 Then
             Locate 1 , 4
          End If
    
          If Verbraucht < 100 Then
             Locate 1 , 3
          End If
    
          If Verbraucht < 1000 Then
             Locate 1 , 2
          Else
             Locate 1 , 1
          End If
    
          Lcd Verbraucht ; " mAh"                               'die bisher verbrauchten mAh werden angezeigt
    
       Strom2 = Strom_wert * 100                                'Aktueller Stromverbrauch (in A) ausrechnen
       Strom2 = Strom2 / 4096
    
          If Strom2 < 10 Then
             Locate 1 , 14
          Else
             Locate 1 , 13
          End If
    
          Lcd Strom2                                            'Am Ende des Displays wird der aktuelle Stromverbrauch angezeigt
          Locate 1 , 16
          Lcd "A"
    
       Gosub Warten                                             'Jetzt ist der Auswertung fertig und der AVR soll warten bis ne halbe Sekunde rum ist
    
    Return
    
    
    Warten:
    
       If Timer1 > 31249 Then                                   'Wir errinnern uns - am anfang wurde der Timer gestartet, bei 32,25kHz ist er nach genau einer halben Sekunde bei 15625
          Stop Timer1
          Gosub Hauptprogramm                                   'Dann wird das Hautprogramm wieder gestartet und die Werte werden Aktualisiert
       Else
          Gosub Warten                                          'Wenn der Wert noch nicht erreicht ist Wird die Subroutine so lange wiederholt, bis der Wert erricht wird
       End If
    
    Return

    Ich habe die Updaterate jetzt wieder auf eine Sekunde erhöht..

    Werde die Hardware bei Zeiten mal aufbauen und die SOftware testen.. Ich werde dann berichten
    Wer Rechtschreibfehler findet, darf sie behalten!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests