- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 14

Thema: Zeitliche Ablaufsteuerung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14

    Zeitliche Ablaufsteuerung

    Hallo zusammen, folgendes Problem: Es wird an einem Atmega48 über ADC die Lichtverhältnisse geprüft es soll sein, dass bei Dunkelheit eine Sirene jede Std. für etwa 30sec eingeschaltet werden soll. Bei Tag ist die Schaltung quasi auf standby. Das mit dem Unterschied Tag und Nacht hab ich schon hinbekommen. Leider weiss ich nun nicht weiter, wie ich das mit der zeitlichen Steuerung hin bekomme. Vielleicht kann mir jemand mit Tipps weiterhelfen. Besten Dank und Gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Man kann einen Timer zB im CTC Modus so einstellen, daß er jede Sekunde einen Interrupt erzeugt. In der ISR zählt er mit einer Variablen hoch, bis 30 Sekunden erreicht sind und schaltet die Sirene. Danach wird die Variable auf eine Stunde (3600 Sekunden) verglichen. Der Timer wird nur scharf geschaltet wenn es dunkel ist. Details kann man schauen, wenn Du einen Code reinstellst.

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14
    Wie gesagt, hab erst mal nur den Teil mit dem Licht messen...der Rest fehlt noch, ich weiß nicht wie ich das bewerkstelligen soll, deshalb hier meine Frage. Außerdem schalte ich zur Zeit eine Led anstelle einer Sirene, das dürfte aber kein Problem darstellen, die Hardware ist für die Sirene schon ausgelegt.
    Code:
    $regfile = "m48def.dat"
    $crystal = 12000000
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Dim Light As Word
    Dim Bright As Word
    Dim Dark As Word
    Ldr Alias Getadc(0)
    Licht Alias Portb.0
    Config Licht = Output
    Reset Licht
    Light = 0
    Dark = 400
    Bright = 600
    
    Do
       'Nacht
       If Ldr < Dark Then
          Wait 2
          If Ldr < Dark Then
             Light = 1
          End If
       End If
       'Tag
       If Ldr > Bright Then
          Wait 2
          If Ldr > Bright Then
             Light = 0
          End If
       End If
       If Light = 1 Then
          Licht = 1
       Else
          Licht = 0
       End If
     
    Loop
    End
    Geändert von Roboant (30.07.2013 um 18:49 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo,
    so vielleicht. Ungetestet und ist bestimmt noch +- 1Sekunde Toleranz im Timing.
    Meine Änderungen in Grün. Hoffenlich hab ich alles erwischt.

    Gruß
    Searcher


    Code:
    $regfile = "m48def.dat"
    $crystal = 12000000
    $framesize = 32               
    $swstack = 32                   
    $hwstack = 34                    
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Dim Light As Word
    Dim Bright As Word
    Dim Dark As Word
    Ldr Alias Getadc(0)
    Licht Alias Portb.0
    Config Licht = Output
    Reset Licht
    Light = 0
    Dark = 400
    Bright = 600
    
    
    Dim Sekundenzaehler As Word
    ocr1a = 11718                            'OCR1A Wert für Interrupt nach ca. 1,00002133 Sekunden
    Config Timer1 = Timer , Prescale = 1024 , Clear_timer = 1       'startet Timer1 im CTC Modus mit OCR1A as Top
    On compare1a Isr_sekundeninterrupt           'ISR wird jede Sekunde aufgerufen wenn ICP interrupt enabled ist
    Enable Interrupts                       'Interrupts global zulassen
    
    
    Do
       'Nacht
       If Ldr < Dark Then
          Wait 2
          If Ldr < Dark Then
             'Light = 1                     'wird in ISR gesetzt
             Enable compare1a                    'Sekundenzaehler laufen lassen wenn es dunkel ist
          End If
       End If
       'Tag
       If Ldr > Bright Then
          Wait 2
          If Ldr > Bright Then
             Disable compare1a                   'Sekundenzaehler stoppen wenn es hell ist
             Sekundenzaehler = 0            'initialisieren
            Light = 0
          End If
       End If
       If Light = 1 Then
          Licht = 1
       Else
          Licht = 0
       End If
    
    Loop
    
    Isr_sekundeninterrupt:
      If Sekundenzaehler < 30 Then Light = 1 Else Light = 0       '30 Sekunden Licht/Sirene an danach aus
      If Sekundenzaehler = 3600 Then Sekundenzaehler = 0       'Sekundenzaeler nach einer Stunde wieder bei 0 beginnen lassen
      Incr Sekundenzaehler
    Return
    
    End
    Geändert von Searcher (31.07.2013 um 09:03 Uhr) Grund: Sekundenzähler unter "Bright" initialieren, ICR1 Wert berichtigt, INT-Typ berichtigt
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14
    Guten Morgen, super, vielen Dank schon mal für die Hilfe. Ich werde es testen und berichten !! Gruß Roboant

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    53
    Beiträge
    2.803
    ...ich würde es mit der Tageszeit in Verbindung bringen, ansonsten hast Du bei jeder entsprechenden Veränderung am Lichtsensor einen Alarm-Auslöser, auch bei Gewitter/Regen am Tag oder dergleichen. Oder ist das gewollt ?

    Damit könntest Du dann auch die Lichtabfrage sehr zeitgenau starten (à la " If Stunde > 20 and Minute = 00 Minute and Sekunden < 30 and Licht=Dark then Hupe an")
    Geändert von Andree-HB (31.07.2013 um 07:10 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] Zeitliche begrenzung beim fahren Hilfe benötigt
    Von voxya im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 05.11.2011, 12:20
  2. Antworten: 8
    Letzter Beitrag: 09.02.2011, 17:00

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress