-         

Ergebnis 1 bis 10 von 10

Thema: Funkuhr bauen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380

    Funkuhr bauen

    Anzeige

    Servus ich bin gerade drann einen Funkwecker mit einem DCF77 zu bauen.
    Die Hardware steht soweit. Es fehlt somit nur die Software. Jedoch weiß ich nicht so recht wie das ganze nun weiter geht.

    Ich habe bereits dies erstellt:
    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
    Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    Config Lcdbus = 4
    Cursor Off
    Config Pinb.1 = Output
    Config Pinb.4 = Output
    Config Pinb.5 = Output
    
    Config Pinb.3 = Input
    Config Pind.4 = Input
    Config Pind.1 = Input
    Config Pind.2 = Input
    Config Pind.3 = Input
    
    Portd = &B00011111
    
    Enable Interrupts
    Config Clock = Soft
    Declare Sub Stundew
    Declare Sub Minutew
    Declare Sub Onoff
    Declare Sub Licht
    
    Dim Stellenstunde As Byte
    Dim Stellenminute As Byte
    Dim Anaus As Byte
    
    
    Cls
    
    Time$ = "00:00:00"
    Date$ = "01:01:00"
    
    Do
       Locate 1 , 1
       Lcd Time$ ; "  " ;
       Locate 1 , 12
       If Stellenstunde < 10 Then Lcd "0"
       Lcd Stellenstunde ; ":"
             If Stellenminute < 10 Then Lcd "0"
             Lcd Stellenminute
       Locate 2 , 1
       Lcd Date$ ; "  " ;
    
          Debounce Pind.2 , 0 , Stundew , Sub                   'Wecker
    Stellen
          Debounce Pind.3 , 0 , Minutew , Sub
    
    
          Debounce Pind.1 , 0 , Onoff , Sub
              If Anaus = 0 Then                                 'Wecker
    an/aus
                Locate 2 , 11
                Lcd "   aus"
              End If
    
             If Anaus = 1 Then
                Locate 2 , 11
                Lcd "    an"
             End If
    
    
       Debounce Pind.4 , 0 , Licht , Sub
    
    Loop
    
    
    'Stunde                                                    'Hier wird
    die Stunde der Uhr hochgezählt
    Stunde:
       Incr _hour
       If _hour > 23 Then
          _hour = 00
       End If
    Return
    
    
    
    'Minute                                                     'Hier wird
    die Minute der Uhr hochgezählt
    Minute:
       Incr _min
       If _min > 59 Then
          _min = 00
       End If
    
    Return
    
    
    
    'MinuteW                                                    'Hier wird
    die Minute des Weckers hochgezählt
    Minutew:
    Incr Stellenminute
       If Stellenminute > 59 Then
       Stellenminute = 0
       End If
    Return
    
    
    
    'Stundew                                                    'Hier wird
    die Stunde des Weckers hochgezählt
    Stundew:
    Incr Stellenstunde
       If Stellenstunde > 23 Then
       Stellenstunde = 0
       End If
    Return
    
    
    
    'onoff                                                      'Hier wird
    der Wecker ein- und ausgeschaltet
    Onoff:
    Incr Anaus
       If Anaus = 2 Then Anaus = 0
    Return
    
    
    
    
    'Licht                                                      'Hier wird
    das Licht für 4 Sekunden eingeschaltet
    Licht:
    
       Portb.5 = 1
       Wait 4
       Portb.5 = 0
    Return

    jedoch sind hier schon Sachen die ich nicht hinbekomme. Und zwar wird mir das Datum nicht richtig angezeigt die Doppelpunkte sind nicht richtig.

    Und ich habe eigentlich vor das Licht von 8-20Uhr einzuschalten und in der Nacht soll es mit einem Tastendruck 4 Sekunden eingeschaltet werden können.

    Mein Ansatz war:
    If _hour <20 and _hour >8 or pind.4 = 1 then
    portb.5 = 0
    else
    portb.5 = 1
    end if


    Jedoch tut sich so nix.

    Kann mir jemand hierbei helfen und mir vielleicht auch erklären wie ich hier nun das DCF77 Signal einarbeite?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ich bin kein Bascom Anhänger, versuch aber trotzdem mal zu antworten.

    Kann es sein, das der Ausdruck _hour <20 and _hour >8 in Klammern muß ?

    Die DCF 77 Kodierung kann nach dem DCF 77 Kreis erfolgen.

    Alle Sekunde kommt ein kurzer, oder ein langer Puls, in dem die Informationen über Datum und Uhrzeit enthalten sind.

    In der 59 Sekunde wird dieser Puls komplett ausgelassen, was als Startsignal für eine neue Impulskette verwendet werden kann.

    Guck mal z.B. hier: http://www.meinberg.de/german/info/dcf77.htm
    oder hier: http://de.wikipedia.org/wiki/DCF77

    Für Bascom dürfte es aber so viele fertige .libs geben, die Du dann nur in deinen Code einbauen brauchst und die Datums und Uhrzeitinformation direkt als Variable zur Verfügung stellt.

    Deine Uhr sollte nach der Synchronisation mit DCF frei laufen und durch die DCF 77 Signale immer wieder mal synchronisiert werden.

    Das hat den Vorteil, das die Uhr auch bei einem Funksignal Ausfall weiter läuft.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380
    und noch ne frage wenn ich hier:
    http://www.rn-wissen.de/index.php/DC...Bascom-Library

    den decodertest mache wie stelle ich denn ein auf welchem pin das dcf77
    signal liegt?

    ich schalte bei meiner schaltung das die spannungsversorgung des dcf77
    moduls durch den AVR ein und dann kommt das signal auf einen pin am avr.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Bascom kann DCF von Haus aus. Einfach Config dcf77 mit den passenden Parametern aufrufen. Da kommt dann auch gleich eine Softuhr mit...
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380
    Zitat Zitat von peterfido
    Bascom kann DCF von Haus aus. Einfach Config dcf77 mit den passenden Parametern aufrufen. Da kommt dann auch gleich eine Softuhr mit...
    hast du da vielleicht mal ein beispiel wie das aussehen könnte?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ich sitze grad nur am Lappi. Bascom bringt aber eine gute Hilfe mit Beispielen mit. F1 drücken und nach config dcf77 suchen. Die Parameter beinhalten z.B. welche Pins genutzt werden und ob das Signal invertiert werden muss oder nicht.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380
    so hab nun die lip und bas datei aus dem Wiki raus erstellt. habe auch beide so editiert dass das dcf77 signal an pinb.3 liegt. verwenden tu ich einen atmega8 mit internem oszillator. weiß jemand welchen startwert ich in die bas eintragen muss?

    angezeigt wird mir auf dem display zwar 00:00:00 für uhr und 01.01.00 für datum. die uhr will auch loslaufen nur viel zu langsam und sie hackt hat also aussetzer. und empfangen wird halt auch nix. weiß jemand woran das liegt?
    habe eben den decodertest vom Wiki für mich angepasst und zeile 3+4 rausgelöscht da ich ja nur ein 2 zeilen display habe.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380
    so glaube ich hab den fehler. liegt aber an der hardware. weiß jemand
    was für ein quarz auf dem dcf77 modul aufgelötet ist? der is
    abgebrochen.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Wenn du erwähnst welchen DCF-Empfänger du hast, oder ein Foto reinstellst, könnte evtl jemand nachgucken. Oder neuen Kaufen. Kosten bei Pollin ja nur ~5 Euro und die laufen bei mir recht gut.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    29
    Beiträge
    380
    hab leider den von reichelt. neukaufen will ich eigentlich nicht mehr da es so schon meinen rahmen gesprengt hat. wenn es wirklich auf neukauf hinausläuft baue ich ne normale uhr.

Berechtigungen

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