-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Zeitsteuerung+Temperaturmessung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127

    Zeitsteuerung+Temperaturmessung

    Anzeige

    Hallo, Ich möchte mir gerne eine Steuerung mit einem RN Control 1.4 für ein Terrarium bauen.
    Das Board soll Die UV Lampe Zeitabhängig steuern, die Wärme Lampen (Tag und Nacht) Wärme abhängig und die Nebelanlage auch Zeitabhängig. Ich stelle mir das etwa so vor: 7

    Morgens: 6 Uhr
    UV Lampe ca. 12 Stunden ein.
    Alle 4 Stunden soll die Nebelanlage für 30 Sekunden sprühen (ab 6:00 Uhr bis 18:00 Uhr)
    Der Temperatursensor soll kontinuierlich neben der Steuerung der Lampe/Pumpe abgefragt werden und wenn nötig die Wärmelampen ein oder aus schalten.

    Ich hätte es jetzt so lösen wollen das ich die UV Lampe einschalte und denn mithilfe des Wait befehls die 4 Stunden bis zum ersten Sprüchen überwinde so z.b:

    UV=1
    Wait xxx
    Pumpe = 1
    Wait xxx
    Pumpe= 0
    Wait xxx
    ………..
    Und am Ende also nach 12 Stunden
    UV= 0

    Jetzt kann ich während er wartet um die Zeit rum zu bekommen ja keine Temperaturmessung durchführen bzw. Die Lampen ein oder ausschalten. Wie würdet ihr das lösen? Und bekommt der Atmega 32 überhaut alles auf einmal hin?

    Gruß Tjark

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Da sind dann sogar noch ausreichend Reserven für andere Dinge vorhanden. Für Dein Vorhaben gibt es hier schon reichlich Code. Anfangen würde ich mit der Uhr. Wenn du diese stellen kannst (oder sie sich selbst stellt, z.B. über DCF) und die Uhrzeit anzeigen kannst, geht es im nächsten Schritt weiter. Entweder du löst es so, dass die Schaltzeiten fest verankert sind, oder dass du sie verstellen kannst (Taster, Drehencoder, RS232,...)

    Wenn die Uhr dann läuft und die Sekunde 0 ist, wird geprüft, ob eine (oder mehrere) der Schaltzeiten mit der aktuellen Zeit übereinstimmt und dann dementsprechend die Ports gesetzt. Wait ist für sowas immer schlecht, da dann der uC für alles (außer Interrupts) blockiert ist. Ich selbst nutze Wait nur während die Einschaltmeldung angezeigt wird, danach nutze ich nur noch waitms oder waitus, jeweils mit recht kleinen Zahlen, z.B. bei der Kommunikation mit anderen ICs oder der Abfrage einer Tastaturmatrix.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    Ok Also könnte ich erstmal so wie hier beschrieben mit dem Code anfagen und über die Variable in dem Fall Zeit die Ereignisse steuern.
    Würde es nach dem Konfigurieren des Timers denn etwa so aussehen ?

    Do
    if Zeit = 20 (sek) then
    UV Lampe = 1
    end if

    Wäre das so korrekt und wenn ich das so ablaufen lasse kann ich denn nebenbei einfach die Temperatur steuern oder wartet er bis der befehl ausgeführt wird bzw. bis die Zeit zum auslösen des Befehls abgelaufen ist ?
    Gruß Tjark

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    Ich blick da grad mi dem Code von der Uhr nicht durch wie muss ich das jetzt genau anstellen? ^^
    Gruß Tjark

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Du bist da auf eine Stoppuhr gestossen. Du brauchst eher sowas wie einen Wecker. Für weitere Hilfe fehlt mir allerdings einiges an Code, worauf ich aufbauen kann. Eine komplette mehrkanalige Zeituhr möchte ich hier eigentlich nicht komplett posten.

    Hier mal das Grundgerüst:

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Dcf77 = Pind.7 , Timer = 1 , Gosub = Sectic          'DCF-Uhr Routine, lässt sich auch mit einem xMHZ Quarz ohne DCF-Empfänger nutzen
    
    Dim Stundeein(3) As Byte
    Dim Minuteein(3) As Byte
    Dim Stundeaus(3) As Byte
    Dim Minuteaus(3) As Byte
    
    Dim B As Byte
    
    Ddrd = &B00001110                                           'Ausgänge für Zeituhr auf PortD.1-Portd.3
    
    
    
    Do                                                          'übersichtliche Hauptschleife...
      Gosub Temperaturregeln
      Gosub Tastatur
      Gosub Sonstiges
    
    
    Loop
    End
    
    
    Sectic:                                                     'wird sekündlich aufgerufen
       Gosub Uhranzeigen
       Gosub Temperaturanzeigen
       If _sec = 0then
          Gosub Schaltuhr
       End If
    Return
    
    Schaltuhr:
       For B = 1 To 3
          If Stundeein(b) = _hour Then
             If Minuteein(b) = _min Then
                Set Portd.b
             End If
          End If
          If Stundeaus(b) = _hour Then
             If Minuteaus(b) = _min Then
                Reset Portd.b
             End If
          End If
       Next B
    Return
    
    Temperaturregeln:
    'hier dein Code für die Temperaturregelung rein
    Return
    
    Tastatur:
    'hier dein Code für die Tastatur / Drehencoder rein
    Return
    
    Sonstiges:
    'hier dein Code für Anderes rein
    Return
    
    Uhranzeigen:
    'hier dein Code für die Uhrzeitanzeige rein
    Return
    
    Temperaturanzeigen:
    'hier dein Code für die Temperaturanzeige rein
    Return
    Geändert von peterfido (08.04.2012 um 10:52 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    Danke erstmal Naja hätte ich auch nur ein bisschen Ahnung von der Sache würde ich dir gerne ein CODE zur Verfügung stellen nur hab ich mich damit noch nie beschäftigt. Darum auch meine ganzen Fragen
    Das Problem ist nur das ich überhaupt nicht nachvollziehen kann wieso du das so gemacht hast wie du es gemacht hast :P
    Gruß Tjark

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Hi,

    du kannst auch eine DS1307 nehmen und den SQW Pin auf 1Hz stellen und dann mittels Interrupt die Impulse zählen. Und mittels If-Abfrage kannst du dann den Zeitintervall einstellen Zur Temperaturmessung kannst du einen LM75 benutzen. Der hat (glaube ich) sogar einen Temperaturalarm der ausgelöst wird sobald die eingestellte Temperatur erreicht ist.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    Ja als Temperatursensor wollte ich eigentlich diesen hier verwenden da ich doch eine sehr hohe Luftfeutigkeit haben werde ca. 60-70%
    Gruß Tjark

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    Ich weiß das passt jetzt nicht mit ins Thema aber ich wollte nicht extra ein neues Eröffnen. Und was haltet ihr von diesem Sensor welches Signal gibt der aus ?
    Gruß Tjark

  10. #10
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Der Sensor gibt die Daten seriel über einen Pin aus.
    Hier hast du das Datenblatt zu dem:

    http://www.micropik.com/PDF/dht11.pdf

    Auf Seite 5-6 steht die Kommunikation erklärt. Du sendest mit deinem Controller ein Startsignal, indem du den Datenpin auf GND ziehst und anschließend sendet der Sensor seine Daten nacheinander mit MSB first über den Datenpin zum Controller und du musst die Daten dann nur empfangen und auswerten. Eine Kommunikation dauert 4ms und in 4ms werden 40Bit übertragen. 50µs Low-Pegel bedeutet dabei 1 und 26-28µs High-Pegel bedeutet dabei 0.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Zeitsteuerung
    Von Maxibot im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 20.08.2010, 01:33
  2. Zeitsteuerung für asuro
    Von Hans2 im Forum Asuro
    Antworten: 16
    Letzter Beitrag: 13.12.2008, 18:55
  3. Hilfe bei Zeitsteuerung
    Von Blamaster im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 21.02.2008, 20:29
  4. Hilfe bei Zeitsteuerung
    Von Blamaster im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 40
    Letzter Beitrag: 13.03.2007, 21:46
  5. Anfängerfrage- Zeitsteuerung
    Von Bernd111 im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 14
    Letzter Beitrag: 03.12.2005, 11:28

Berechtigungen

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