- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Temperaturschalter

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    33
    Beiträge
    240

    Temperaturschalter

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi,

    ich hab hier mit einem Teil meines Progs Probleme... der Rest funktioniert ja einwandfrei. Ich will ausserhalb des AVR´s mit einem Temperaturfühler als Spannungsteiler einen Temperaturschalter bauen. Dazu habe ich die Spannung an ADC2 des AVR´s gegeben. Hier ein kleiner Ausschnitt aus dem Code:


    Code:
    Config Adc = Free , Prescaler = Auto
    Start Adc
    Dim Temp As Word
    
    Do
    Temp = Getadc(2)                                            
    
    Temp = Temp * 5000                                          
    Temp = Temp / 1024                                          
    
    If Temp < 2.5 And Pina.4 = 0 Then                          '
     Portc.0 = 1                                                
     Else
     Portc.0 = 0
     End If
    
    Loop
    An Pina.4 gebe ich von aussen ein Signal ein, ob die Heizung überhaupt betrieben werden soll. Wo ist mein Fehler?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Felix,

    hast du dich 'mal mit den Daten Typen beschäftigt?

    In ein Word passen Zahlen bis 65535. Die Multiplikation von 5000 * 1023 (ADC-Maximalwert) beläuft sich schon auf über 5 Millionen.

    Du könntest also: Den Datentyp Long für das Ergebnis nehmen.
    Das Ergebnis nach der Division durch 1024 ist dann in Millivolt.
    Für deine 2,5V Testbedingung müßtest du dann auf < 2500 testen.

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    33
    Beiträge
    240
    Hi,

    genau die überlegung hatte ich auch schon. Funktioniert aber auch nicht hab auch schonmal das > zeichen umgedreht bzw. den Port auf direkt GND gelegt. Es tut sich rein gar nichts....

    Gruß
    Felix

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Felix,

    ich sehe gerade deine Config-Zeile.
    Bei Benutzung von Getadc muss da stehen:
    Config Adc = Single , Prescaler = Auto

    Wenn es daran nicht liegt:
    - Poste deinen jetzigen Code und ...
    - beschreibe 'mal deinen Temperatur-Sensor

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    33
    Beiträge
    240
    Hi Dirk,

    ich denke ich hab das Problem gefunden... Es funktioniert jetzt, danke

    Allerdings hab ich ein neues Problem. Ich drücke den Start knopf an der maschine und ein If-Then Satz läuft ab.... allerdings habe ich mehrere dieser If-Then bedingungen und sobald der erste läuft gehen die anderen nicht mehr... ist das normal das immer nur eine Bedingung laufen kann? zudem habe ich noch einen Stop knopf angeschlossen der im If-Then code hiner "end if" steht... aber wenn ich ihn betätige stoppt es nicht... =(

    Hier der ausschnitt:

    Code:
    Do                                                        
    
    If Pinb.0 = 0 Then                                          'Taster "Start" wird betätigt
      Cls
      Cursor Off                                               
      Locate 1 , 1                                             
      Lcd "Start"                                             
      Waitms 2000                                               
    
      Mach irgend etwas
    
      Else
      End If
      Pinb.1 = 0 
    
    If Pinb.1 = 0 Then
      Cls
      Cursor Off                                               
      Locate 1 , 1                                            
      Lcd "Abbruch"                                            
      Else
      End If
    
    Temp = Getadc(2)                                            
    
    Temp = Temp * 50000                                         
    Temp = Temp / 1024                                          
    
    If Temp < 25 And Pinb.2 = 0 Then                            
     Portb.7 = 1                                                
     Else
     End If
    
    If Temp > 25 And Pinb.2 = 0 Then
     Portb.7 = 0
     Else
     End If
    
    Loop
    
    End
    PinB.1 wäre der Stoptaster. PinB.7 wäre wieder die heizung...

    Der aufbau des Temeraturfühler ist einfach... der fühler von masse nach ADC, von dort ein Poti nach +5V... damit kann man dann noch etwas justieren.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Felix,

    so ganz kapiere ich nicht, was du da machen willst.

    Auf jeden Fall ist die Anweisung Pinb.1 = 0 nicht richtig, weil hier einem Eingang ein Wert zugewiesen wird. Warum?

    Sonst müßte das mit den Schaltern klappen, wenn es auch Pullup-Widerstände gibt (z.B. 10kOhm nach +5V).

    Bei der Temperatur-Geschichte hast du ja mal 50000 genommen, das ergibt eine 1/10 Millivolt-Ausgabe. Das ist nicht sinnvoll, weil die Auflösung das nicht hergibt. Also: * 5000 und dann / 1024.
    Der Test auf < 25 bedeutet dann, dass die Temperatur wohl sehr niedrig sein muss. Bei der Rechnung oben (*5000 / 1024) entspricht das einem ADC-Wert von 5. Das ist fast gleich Null.
    Je nach deiner Hardware wird ja dein Schaltwert wohl höher liegen???

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    33
    Beiträge
    240
    Hi Dirk,

    wo wird dem Pinb.1 die 0 zugewiesen?

    Einmal stehts hinterm "end if" und einmal am anfang von der "if" bedingung

    Gruß
    Felix

    P.S.: Danke das du mir hilfst^^

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    wo wird dem Pinb.1 die 0 zugewiesen?
    ... wo Pinb.1 = 0 allein in der Zeile steht (nicht nach der If-Abfrage!).

    Gruß Dirk

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    33
    Beiträge
    240
    Das gehört doch aber zu dem "end if".... wo muss ichn das sonst hinschreiben?

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Das gehört doch aber zu dem "end if".... wo muss ichn das sonst hinschreiben?
    Nein, das steht ja hinter dem End If und hat deshalb damit nichts mehr zu tun.
    Was willst du denn mit dem Befehl Pinb.1 = 0 erreichen?

    Wenn du eine If-Abfrage:
    If Bedingung Then
    Tuwas
    Else
    Tuwasanderes
    End If

    ... machst, dann haben alle deine Abfragen nicht das Tuwasanderes.

    Gruß Dirk

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests