- SF800 Solar Speicher Tutorial         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Durchflusssensor auswerten

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

    Powerstation Test
    Das heißt doch im Klartext: Wenn PIND.0 = 0, dann folgt return - und wenn nicht, dann auch
    Jetzt beginne ich langsam an der Qualität dieses Forums zu zweifeln Sag mir doch bitte mal wie deiner Meinung nach ein Return erfolgen soll wenn pind.0 = 1 ist.
    Statt dem Return in der If pind.0 = 0-Bedingung könnte man natürlich auch ein Exit Do einfügen. Kommt aufs gleiche raus. Es wird nur ein Return ausgeführt wenn pind.0 = 0 ist

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    34
    Beiträge
    240
    So, hab jetz die 1875 gesetzt. Resultierender Durchfluss = 631L/h. Auf dem Display erscheinen nun auch die 1875 für Tempword.

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Felix H. Beitrag anzeigen
    So, hab jetz die 1875 gesetzt. Resultierender Durchfluss = 631L/h. Auf dem Display erscheinen nun auch die 1875 für Tempword.
    Die 95 noch nach 96 tauschen

    Boah, jetzt muß man wohl daran, wo Sauerbruch und MagicWSmoke schon rummäkeln. Ehrlich gesagt gefällt mir das auch nicht aber ich versuch mal genauer im einzelnen da durchzusteigen. Auf den ersten Blick könnte es gehen, erzeugt aber doch falsche Werte in Tempword.

    Möchte aber noch wissen, was für ein Sensor das ist?
    Die Pulse am Oszi waren auch schön ausgeprägt zwische 0 und 5V ?
    Sensor Stromversorgung ist die Gleiche wie vom µC?

    Gruß
    Searcher
    Geändert von Searcher (20.10.2012 um 13:09 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Auf dem Display steht aber immer nur 31 bzw. 32 egal bei welchem Durchfluss.
    Wie soll´s denn auch anders sein?

    Dass etwas angezeigt wird bedeutet doch, dass das Programm bei "Gosub Auswerten" angekommen ist.
    Und danach kommt "Gosub Wait_one".
    Und in dieser Subroutine bleibt der Controller dank "Do-Loop" hängen - bis zum jüngsten Tag. Die erste Anzeige ist also auch die letzte.

    Solange das so ist, sind alle Überlegungen zu Taktfrequenzen, Rechenwegen und allem sonstigen drum & dran müßig

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Und danach kommt "Gosub Wait_one".
    Und in dieser Subroutine bleibt der Controller dank "Do-Loop" hängen - bis zum jüngsten Tag
    Ich glaube schon, daß er, wenn Pind.0 auf 0 ist, da raus kommt? Im then-zweig steht ein Return.

    Allerdings wird danach entweder wieder "Gosub Wait_one" oder "Gosub Wait_zero" aufgerufen. In beiden Subroutinen wird der Pind.0 auf 0 geprüft, bevor es weiter geht.

    Möglicherweise wird hier dasselbe Low auf Pind.0 erkannt. Ich kann nicht erkennen, wo wirklich ein high abgewartet wird. Das könnte auch den viel zu kleinen Wert in Tempword erklären.

    PS: Vielleicht geht mehr, wenn in der "Wait_one" Pind.0 statt auf 0 auf 1 geprüft wird.

    Gruß
    Searcher
    Geändert von Searcher (20.10.2012 um 15:01 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    34
    Beiträge
    240
    Hab jetzt noch ein paar wartezeiten eingefügt zum entprellen eingefügt. Und die Bedingungen der Subroutinen geändert. Nach anpassung der 31250 auf die tatsächliche Taktfrequenz läuft es nun bestens.

    Code:
    $regfile "m8def.dat"
    $crystal = 8000000
    $hwstack = 30
    $swstack = 30
    $framesize = 30
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4
    
    
    Config Timer1 = Timer , Prescale = 256
    
    
    Enable Interrupts
    
    Config Portd.3 = Output                                     'R/W vom Display
    
    Config Pind.0 = Input
    
    Portd.3 = 0
    
    Dim State As Bit
    Dim Durchfluss As Word
    Dim Durchflusstemp As Word
    Dim Tempword As Word
    Dim Tempword1 As Word
    Dim Templong As Long
    Dim Tempsingle As Single
    Dim Displaywarten As Byte
    
    State = 0
    
    Wait 1
    
    Cls
    Cursor Off
    
    'Hauptprogramm
    
    Do
    
     If Pind.0 = 0 And State = 0 Then
      Start Timer1
      State = 1                                                 'Status 1
      Waitms 1                                                  'Entprellen
      Gosub Wait_one
      Waitms 1
      Gosub Wait_one
      Waitms 2
      Gosub Wait_zero
     End If
    
     If State = 1 Then
      State = 0                                                 'Status 0
      Gosub Auswerten
      Waitms 1                                                  'Evtl. Entprellen
      Gosub Wait_one
      Waitms 1
      gosub wait_one
     End If
    
    Loop
    
    
    
    Auswerten:
    
      Tempword1 = Tcnt1l
      Tempword = Tcnt1h * 256
      Tempword = Tempword + Tempword1
      Templong = Tempword * 96                                  'Zeit für 1 Liter
      Tempsingle = 31600 / Templong                             'Liter pro Sekunde
      Durchflusstemp = Tempsingle * 3600                        'Liter pro Stunde
      Durchfluss = Durchflusstemp
      Timer1 = 0
      Incr Displaywarten
    
      If Displaywarten = 30 Then
       Locate 1 , 1 : Lcd "Durchfluss:"
       Locate 2 , 1 : Lcd Durchfluss ; " L/h " ; Tempword ; "   "
       Displaywarten = 0
      End If
    
    Return
    
    
    Wait_one:
    
     Do
    
     Loop Until Pind.0 = 1
    
    Return
    
    
    Wait_zero:
    
     Do
    
     Loop Until Pind.0 = 0
    
     Stop Timer1
    
    Return
    Im Endstadium werde ich wie bei meiner anderen Anlage auch das ganze über den ICP Pin einlesen.

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    ... läuft es nun bestens.
    *Aufatmen*
    Im Endstadium werde ich wie bei meiner anderen Anlage auch das ganze über den ICP Pin einlesen
    *nochmal Aufatmen*

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Frequenzen auswerten mit dem RP6
    Von hmellermann im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 25.08.2008, 09:31
  2. AVR Butterfly PKW-Verbrauchsmessung mittels Durchflusssensor
    Von Beginner85 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 13.05.2008, 20:28
  3. PWM auswerten
    Von The Man im Forum Assembler-Programmierung
    Antworten: 3
    Letzter Beitrag: 08.06.2007, 13:46
  4. PWM auswerten
    Von The Man im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 07.06.2007, 16:36
  5. Fernsteuerungssignale auswerten
    Von Ringo im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 17.09.2006, 18:17

Berechtigungen

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

Labornetzteil AliExpress