-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Zeitliche Ablaufsteuerung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14

    Zeitliche Ablaufsteuerung

    Anzeige

    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 Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    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 19:49 Uhr)

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    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 10: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
    47
    Beiträge
    2.556
    ...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 08:10 Uhr)
    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14
    @Searcher: habe den Code gerade mal eingespielt, leider funktioniert er so nicht. Besten Dank für Deine Hilfe. @Andree-HB: Bei der Lichtabfrage ist eine kleine Hysteresis eingebaut, dass heißt der LDR misst über einen Zeitraum die Lichtveränderung und soll dann das Horn aktivieren. Wie muss ich mir Deinen Tipp als Code vorstellen ??

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Zitat Zitat von Roboant Beitrag anzeigen
    @Searcher: habe den Code gerade mal eingespielt, leider funktioniert er so nicht.
    Hallo, hab gerade nochmal den Timer Mode im Simulator überprüft. Timer läuft im CTC Modus mit OCR1A as Top. Hab ich oben im Code berichtigt. Wie sieht es jetzt aus?

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

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    20.12.2003
    Beiträge
    14
    Servus, habe die Veränderung getestet, die Sirene würde sich bei Dunkelheit 4Minuten einschalten und dann passiert nichts mehr, über zwei Std. beobachtet.

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Zitat Zitat von Roboant Beitrag anzeigen
    ... über zwei Std. beobachtet.
    Oha
    ich gehe davon aus, daß Du einen 12MHz Quarz am µC hast. Wenn die 30 Sekunden zu 4 Minuten werden, läuft der µC 8 Mal zu langsam. CKDIV8 Fuse umgefused?!

    Zum Testen kannst Du den Prescale vom Timer1 statt auf 1024 auf 8 oder sogar 1 setzten. Dann läuft alles entsprechend schneller.

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

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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