Erstellung einer UHR /DCF77

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Erstellung einer UHR /DCF77

      Guten Abend,
      Neue Zeit neue Aktivitäten...

      Es ist bestimmt schon mal was in Punkto DCF77/Uhr was in Angriff genommen worden.
      Wie geht man da am Besten vor?

      Verwendete Prozessoren Attiny 4314 (da viele Vorhanden)
      ein Günstiges Pollin Dispaly 16x2 Zeichen LCD Display Modul HD44780
      ein DCF 77 Empfangsmodul...von Reichelt
      diverses an klein Material.
    • Schau dir mal das Beispiel an
      avrhelp.mcselec.com/configdcf77.htm
      Statt den print-Befehlen könntest du die Ausgabe auf deinem LCD vornehmen.
      Hat der tiny einen 16bit-timer?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo Hans1967

      habe vor Jahren mal etwas mit dem ATtiny 2313 und 4313 gemacht.
      Sollte zu dir passen was du suchst. Spiel damit herum um etwas zu lernen.

      Quellcode

      1. '*******************************************************************************
      2. '* Dcf77 Auswertung am Pind.2 nicht invertiert ( Conrad Modul mittlerer
      3. '* Anschluß. Anzeige der Zeit und Datum = Time$ und Date$ + Tageskürzel.
      4. '* 18.02.2016 Bascom Version 2.0.7.9
      5. '* Monatsname wird in Kurzform Angezeigt z.b. Feb (29.02.2016-Schaltjahr)
      6. '*******************************************************************************
      7. '$regfile = "attiny4313.dat"
      8. '$crystal = 4000000
      9. '$hwstack = 32
      10. '$swstack = 32
      11. '$framesize = 32
      12. '$prog &HFF , &HD8 , &HDF , &HFF ' Takt für Externen Quarz mit 4 MHZ
      13. $regfile = "attiny2313.dat"
      14. $crystal = 4000000
      15. $hwstack = 32
      16. $swstack = 18
      17. $framesize = 24
      18. '************************** LCD ************************************************
      19. Config Lcd = 16 * 2
      20. Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.1
      21. Config Lcdbus = 4
      22. Cursor Off
      23. Cls
      24. '-------------------------- DCF + Sekundenblinker ------------------------------
      25. Config Dcf77 = Pind.2 , Debug = 1 , Inverted = 0 , Check = 2 , Update = 0 , _
      26. Updatetime = 30 , Switchpower = 0 , Secondticks = 50 , Timer1sec = 1 , Powerlevel = 1 , Timer = 1
      27. '-------------------------- Voreinstellung Datum -------------------------------
      28. _day = 10
      29. _month = 10
      30. _year = 10
      31. '-------------------------- Timer + Wochentagsstring ---------------------------
      32. Enable Interrupts
      33. Config Date = Dmy , Separator = .
      34. Dim Wtag As String * 2
      35. '*******************************************************************************
      36. '-------------------------- Auswerten DCF --------------------------------------
      37. Do
      38. '-------------------------- Wochentag Umwandeln---------------------------------
      39. Select Case _weekday 'Wochentag aus Schrift setzen
      40. Case 0 : Wtag = "##"
      41. Case 1 : Wtag = "Mo"
      42. Case 2 : Wtag = "Di"
      43. Case 3 : Wtag = "Mi"
      44. Case 4 : Wtag = "Do"
      45. Case 5 : Wtag = "Fr"
      46. Case 6 : Wtag = "Sa"
      47. Case 7 : Wtag = "So"
      48. End Select
      49. '-------------------------- Syncronisation Ok oder nicht -----------------------
      50. '++++++++++ diese Zeilen können später entfallen wenn das gerät läuft ++++++++++
      51. If Dcf_status.7 = 0 Then 'anzeige ist ~ wenn der empfang ok , oder nicht = *
      52. Locate 1 , 16
      53. Lcd "*" ' syncron fehlt noch
      54. Else
      55. Locate 1 , 16
      56. Lcd "~" ' syncron ist ok
      57. End If
      58. '-------------------------------------
      59. If _sec = 55 And Dcf_status.7 = 1 Then
      60. Reset Dcf_status.7
      61. End If
      62. '===bzw man kann ja die synconiesierung auf leds legen und am gerät anzeigen====
      63. '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      64. '__________________________ Anzeige auf LCD ____________________________________
      65. Locate 1 , 1
      66. Lcd " >> " ; Time$ ; " <<"
      67. If _day < 10 Then
      68. Locate 2 , 2
      69. Lcd Wtag ; " " ; _day ; "." ; Lookupstr(_month , Monate) ; " 20" ; _year
      70. Else
      71. Locate 2 , 2
      72. Lcd Wtag ; " " ; _day ; "." ; Lookupstr(_month , Monate) ; " 20" ; _year
      73. End If
      74. '-------------------------------------------------------------------------------
      75. Loop
      76. '-------------------------------------------------------------------------------
      77. End
      78. '*******************************************************************************
      79. '------------------------- Monatsnamen -----------------------------------------
      80. Monate:
      81. Data "" , "Jan" , "Feb" , "Mae" , "Apr" , "Mai" , "Jun" , "Jul" , "Aug" , "Sep" , "Okt" , "Nov" , "Dez"
      Alles anzeigen
    • Hallo ..
      Feiertage sind zum erholen da. a_217_27b18bee Aber egal.. das Programm ist für beide Chips. Pins sind noch frei und du kannst einen Wecker noch einbauen.
      Der 4313 hat ja genug Speicher für diese Sachen. Ich verzweifle gerade an einer vernünfigen Encoder Auswertung. Diese soll nur "a" oder "b" hochzählen
      oder verkleinern.

      Gruß Mike
    • Guten Abend Helimike0705

      Dein Prog ist für welches Display? (HD44780)

      Ich mache gerade mit meinem Weihnachts Geschenk (Mikrocontroller) Franzis Lernpaket rum.
      was ich bis jetzt verstanden habe dürfte dein Prog meine Probleme Lösen helfen.
      Entweder umschreiben oder um klemmen!

      wie kommt das in den Prozessor? ,über Bascom (okay)
      welcher Speicher Ort?
      nur Hauptspeicher / Eprom?

      Guten Abénd und Danke für die Schnelle Hilfe!
      Ps. welche Fusebit einstellungen muss ich machen?
    • eine Zählerschaltung habe ich immer mit Ics..gemacht.
      aber als Controller? das wird nächtes Kapittel!!


      habe nach meiner Lehre zum IEGE Spaßes Halber mit einem Franzis Röhren Experimentier Kasten angefangen...
      waren 2 Ruski Röhren drinnen.

      dabei hab ich mich Richtig Angesteckt..!
    • Hallo Hans1967
      Das Display ist ein einfaches HD44780 Standart 16x2 . Es verwendet nur den > Hauptspeicher < , genannt FLASH , keinen EEPROM .
      Der Eeprom könnt aber später deine Weckzeiten Ausfallsicher Speichern.
      Ich weis jetzt nicht wie fit du in Bascom bist. Also ein Vorschlag . Mache hier den Grundkurs im Forum > Lexikon < , da ist alles super beschrieben
      und man macht schnell Fortschritte. Aber Hilfe ist dir hier immer gewiss.

      Gruß Mike
    • Oh Große Not!!

      Meine Uhr ist nun Fertig aber es kommt kein Verwertbare Signal von meinem Reichelt Modul an.
      Gibt es hier Brauchbare Verstärker Schaltungen?

      Denke mal s liegt an dem zu Schwachen Ausgangs Signal der DCF Platine das Ziehmlich Schwach ist.
      Danke vorab für Antworten!
    • Michael schrieb:

      Pollin DCF77 Modul mit Arduino Nano V3

      Der Arduino hat 5V Versorgung, das DCF-Modul 1,2V bis maximal 3,3V

      Die Versorgung des DCF-Moduls erfolgt über einen Spannungsteiler aus 2x 2k2 Widerständen.
      Da das Modul nur maximal 120µA braucht, sind das rund 10% des Widerstands-Stromes (ein Wirkungsgrad von 5% ;) )

      Die Ansteuerung des Pon-Pins (Power-On) von AVR aus erfolgt auch über einen Spannungsteiler aus 2x 2k2 Widerständen.

      Der Ausgang des DCF77-Moduls hat zu wenig Pegel für den AVR, deswegen wird der interne Analog Komparator benutzt.
      Ein Eingang des Komparators bekommt die interne Bandgapreferenz (1,1V) und der andere bekommt das Singal vom DCF-Modul.

      Der interne Ausgang des Komparators lässt sich nicht direkt für die DCF77-Routine von Bascom nutzen, deshalb wird der Pegel auf einen AVR-Ausgang gelegt, der mit seinem Nachbarn verbunden ist, der wiederum als Signalquelle für DCF77 fungiert, jetzt aber mit 5V Pegeln.

      DCF_AC_Pollin.jpg

      BASCOM-Quellcode: DCF77_Pollin_ACI.bas

      1. 'DCF77 Empfang mit Pollin DCF-77-Modul
      2. 'Michael@bascomforum.de 03/2017
      3. $regfile = "m328pdef.dat" 'Arduino Nano V3
      4. $crystal = 16000000
      5. $hwstack = 34
      6. $swstack = 32
      7. $framesize = 40
      8. $baud = 38400
      9. Config Aci = On , Trigger = Toggle 'Analog Komparator
      10. On Aci Aci_interrupt
      11. Enable Interrupts
      12. Enable Aci
      13. Acsr.6 = 1 'schaltet die interne Bandgap Referenz auf den Ain0
      14. Led Alias Portd.5 'Kontrolle DCF-Signal und Hilfs-Ausgang für DCF-Signal
      15. Ddrd.5 = 1
      16. Pon Alias Portd.3 'Power-On DCF77-Modul
      17. Ddrd.3 = 1
      18. Pon = 1 'DCF-Modul ausschalten
      19. Sync Alias Portb.5 'Anzeige-LED für die Synchronisation mit der DCF77-Zeit
      20. Ddrb.5 = 1
      21. Sync = 1
      22. Config Dcf77 = Pind.4 , Timer = 1 , Update = 0 , Debug = 1 , Inverted = 0 , Check = 1 , Gosub = Sectic
      23. Dim Sec_neu As Bit 'Hilfsvariable für den Programmablauf
      24. Wait 1 'Warten, um Pon zu verzögern
      25. Pon = 0 'DCF77 Modul einschalten
      26. Do
      27. Bitwait Sec_neu , Set 'Warte auf neue Sekunde
      28. Sec_neu = 0
      29. Sync = Dcf_status.7 'Anzeige, ob DCF77 synchronisiert ist
      30. Print Time$ 'Ausgabe der aktuellen Uhrzeit
      31. Loop
      32. End
      33. Aci_interrupt: 'Analog Komperator
      34. If Acsr.aco = 0 Then 'Abfrage Ergebnis des Vergleichs
      35. Led = 1
      36. Else
      37. Led = 0
      38. End If
      39. Return
      40. Sectic: 'Sekundeninterrupt
      41. Sec_neu = 1
      42. Return
      Alles anzeigen
      das könnte dir helfen. Oder nimm ein Modul von Conrad. Ist zwar relativ teuer, aber die laufen bei mir ziemlich gut. Aber laut Datenblatt ist deines auf Spannungsschwankungen sehr empfindlich.

      Gruß Mike
    • Meine letzten Projekte hatte ich mit einem Oamp ausgestattet (Rentneruhr, Zug der Zeit), etwa so
      DCF über Oamp.PNG
      Ich hab' auch mit Transistor gearbeitet, zB. beim Pünktlezeitbrett
      Dotmatrix-Zeitbrett.PNG
      bei dieser Schaltung ist zu beachten, dass der DCF-Input-pin mit einem pullup versehen wird. Die Signalled hängt an einem Ausgangpin, so kann man bei gutem Empfang das Blinken abschalten und nur bei länger dauernden, schlechten Empfang die Led aktivieren um eine Kontrolle zu haben.

      Allgemein, DCF ist störungsempfindlich durch Schaltnetzteile oder gemultiplexte/PWM geregelte Anzeigen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------