Schwarz auf Weiß

Auch als Buch mit dem Titel '10 Selbstbauprojekte', ISBN-Nr. 978-3-7448-3433-9 und als e-book mit der ISBN-Nr. 9783744806299 erschienen. Band 2 ist 2021 mit dem Titel '10 Selbstbauprojekte Band 2', ISBN-Nr. 978-3-7534-4580-9 und als e-book mit der ISBN-Nr. 9783753470085 erschienen.

Besuchen Sie auch meine Art site https://khomet.de

Samstag, 29. August 2015

DCF77



Das DCF77 Projekt besteht aus einem Hardwareteil mit dem Mikroprozessor PIC18F2550 und einem Softwareteil auf dem PC, geschrieben in VB2013.


Inhaltsverzeichnis

Das Zeitzeichensignal des DCF77 in Mainflingen
DCF77 Hardware
Schaltplan
Programmierung MCP2200
DCF77 Firmware PIC
Einstellungen im GCBASIC
Beschreibung der Firmware
Kommunikation zwischen PIC und PC
PC Frontend geschrieben in VB2013
Alle Downloads DCF77







youtube Film

Das Zeitzeichensignal des DCF77 in Mainflingen

Eine Trägerfrequenz von 77,5 kHz wird mit der binären Zeitinformation wie Minute, Stunde und Datum amplitudenmoduliert. Eine Absenkung auf 15% für 100 ms bedeutet eine '0' und für 200 ms eine '1'. Das Signal kann bis zu einer Entfernung von 2000 km empfangen werden. Bis zu einer Entfernung von 500 km breitet sich das Signal als Bodenwelle aus, darüber hinaus als Raumwelle. Die Feldstärke beträgt in 500 km Entfernung noch ca. 1 mV/m, in 2000 km noch ca.100 uV/m. 
Detaillierte Informationen sind auf der PTB-Seite http://www.ptb.de/cms/index.php?id=1787 
zu finden.

DCF77 Hardware

Die Hardware besteht aus dem PIC18F2550, dem hintergrundbeleuchtetem LCD-Display 2x16 Zeichen, der Spannungsreferenz SG 3503 (2,5V), dem Temperatursensor LM35CZ und dem USB-Chip MCP2200. Das DCF77-Modul (Reichelt oder Conrad) wird über ein 1 m langes Kabel abgesetzt.


Platine und Empfangsmodul
Links unten sieht man den USB-Anschluss. Mit der der blauen Taste rechts unten kann man die LCD-Helligkeit einstellen. Rechts sieht man das DCF77-Empfangsmodul  im Gehäuse eingebaut.
Platine
Bedeutung der Anzeigefelder von links nach rechts:

1. Zeile:

- Qualität des Signals
- Gesamtstatus DCF77-Daten ":)=gut :(=schlecht"
- Bit High/Low "- =High _ =Low"
- Sommer/Winterzeit "S=Sommerzeit W=Winterzeit"
- Zeit in hh:mm:ss
- PTB-Ruf-Bit "N=normal R=Rufbit"

2. Zeile:
- Temperatur Sensor, alterniert mit Jahr
- Datum
- Monat
- Wochentag

Der USB-Chip MCP 2200 von Microchip auf der Lötseite.

Das DCF77-Empfangsmodul von Reichelt oder Conrad, 
Es liefert bereits einen sauberen Sekundenimpuls.


Schaltplan

Das LCD-Display ist im 4-Bit Mode an den PIC angeschlossen. Die Helligkeit wird mit einem PWM-Signal des PIC über einen SIPMOS-FET BSS97 (RDS on <2 Ohm) gesteuert. Der LCD-Kontrast wird mit einem 10k Trimmer eingestellt. Der SG3503 ist eine externe, präzise Spannungsreferenz für die Temperaturmessung mit dem LM35CZ. Der PIC arbeitet mit einer Taktfrequenz von 20 MHz. Zusätzlich gibt es einen zweiten Taktgenerator mit 32 kHz zur Messung langer Zeiten (2 s Pause im DCF77-Bitaufbau). Das Bit-Signal des Empfängermoduls erzeugt im PIC jeweils einen Interrupt für die steigende und für die fallende Flanke. Eine LED blinkt kurz bei jedem Interrupt-Ereignis auf. Das Empfängermodul ist sehr empfindlich auf Leitungsstörungen. Deshalb sollte die Spannungsversorgung so sauber wie möglich sein. Die Stromversorgung der gesamten Schaltung erfolgt über USB. Die Datenanbindung an den PC geschieht über einen USB-Chip MCP2200, der mit einer Taktfrequenz von 12 MHz läuft. Die seriellen Leitungen zwischen USB-Chip und PIC müssen gekreuzt werden.


Schaltplan DCF77.


Download Eagle-Schaltplan DCF77-PIC2550-LCD2x16.sch

Programmierung MCP2200

Für den RS232-nach-USB-Converter MCP2200 liefert Microchip eine kostenlose
Einstellsoftware MCP2200Configuration Utility v1.3.1.

Parameter:
-Bauderate 19200
-DataBits  8
-Parity    None
-StopBits  One


Download Einstellsoftware MCP2200Configuration Utility v1.3.1.zip

Weiterhin muss auf dem PC ein entsprechender Treiber installiert werden. 

DCF77 Firmware PIC

Das Programm wurde erstellt mit dem open-source compiler GCBASIC für 8-Bit Microchip PIC's und dem freien Crimson Editor, der mit GCBASIC kommunizieren kann. Gebrannt werden die PIC's mit dem Programmer Brenner8-P nach 'sprut' für 5V-PIC's z. B. PIC18F (von AATis e.V. als Bausatz gekauft , incl. Boot-Loader 1.0 und Firmware 0.8 im PIC18F2550). Das PC-Frontend USBURN 1.3A2 für den Brenner (kann von der sprut-Seite geholt werden) läuft bei mir unter Windows 10 64 Bit im Kompatibilitätsmodus XP SP3.

Einstellungen im GCBASIC

Nach Öffnen obiger Datei sollte in Program/Hardware Settings/Chipselection der Prozessortyp auf 18F2550 und die Taktfrequenz auf 20.000 MHz eingestellt sein. In Chip Configuration soll der Oszillator auf HS=highspeed gesetzt sein. In Device Settings ist das LCD auf 4 Data Bits eingestellt und die Funktionen sind jeweils einem Port-Bit zugeordnet.

Hardware settings

Mit Tools/Compile werden im gleichen Pfad wie das Basic-Programm erzeugt: 
.asm, .hex, .html und .lst
Das .hex File wird in den PIC-Programmer geladen. Rechts sieht man die Subroutinen und Funktionen aufgelistet. 'LED_Blink' ist die Interrupt-Service Routine.

Subroutines

In Program/Interrupts wird 'PORTBChange' mit der Subroutine 'LEDBlink' als Interruptservice-Routine verknüpft. Bei jeder Änderung am PORTB (BIT-Signal vom DCF77-Modul) wird ein Interrupt ausgelöst. Am ausgelesenen Portwert kann die Richtung der Änderung erkannt werden (steigende oder fallende Flanke).

Interrupts

Weiterhin wird USARTRX1Ready mit der Subroutine 'SerEmpfang' verknüpft.

Interrupts

In Program/Variables kann auch die Bit-Breite einer Variablen ausgewählt werden.

Auswahl Bitbreite

Variables

Beschreibung der Firmware

Interrupt Service Routine 'LED_Blink' (Sekundenimpuls DCF77-Modul)

Zunächst wird durch auslesen des B-Ports entschieden, ob eine steigende oder fallende Flanke den Interrupt ausgelöst hat. Bei steigender Flanke wird Timer 1 gestoppt und die Zeit ausgelesen. Für die 1. bis 58. Sekunde ist diese 1 Sekunde. Von der 58. Sekunde sind es bis zum Beginn einer neuen Minute 2 Sekunden (es fehlt ein Sekundenimpuls). Für die nächste Messung wird Timer 1 wieder gestartet. Zur Messung der Impulslänge (Bit-Wertigkeit 0 oder 1) wird Timer 0 gestartet. Bei fallender Flanke wird Timer 0 gestoppt und die Zeit ausgelesen. Die Soll-Zeit für die Bit-Wertigkeit 0 ist 100 ms und für 1 ist 200 ms. Die Abweichung von der Sollzeit wird in 8 Stufen unterteilt und als Signalqualität mit dem Balken auf dem LCD-Display dargestellt.

Kommunikation zwischen PIC und PC

Grundlage ist eine Token-Tabelle. Damit ist eine Zuordnung der vom PIC gesendeten Daten möglich. Nachfolgend die Bedeutung der Token und ein live Protokoll:

Bedeutung Token 1. bis 57. Sekunde:
=====================================================================
@  Sekunde synchron, Zahl danach 10er Sekunden
A  Zahl danach 1er Sekunden
>  Zahl danach Modulation Träger 0,1 s = L = 0, 
   Modulation Träger 0,2 s = H = 1
=  Zahl danach Qualität Empfangssignal 1 bis 6 
   1=schlecht ... 6=sehr gut)
N  Zahl danach Temperatursensor 1/10 °C
O  Zahl danach Temperatursensor 1er °C
P  Zahl danach Temperatursensor 10er °C


Bedeutung Token 59. Sekunde:
=====================================================================
C  Minute synchron, Zahl danach Winter/Sommerzeit (0=Sommerzeit)
D  Zahl danach Minute 1er, BCD
E  Zahl danach Minute 10er, BCD
F  Zahl danach Stunde 1er, BCD
G  Zahl danach Stunde 10er, BCD
I  Zahl danach Tag 1er, BCD
J  Zahl danach Tag 10er, BCD
H  Zahl danach Wochentag, 1=Montag ... 7=Sonntag
K  Zahl danach Monat, Hex, 1=Januar ... C=Dezember
L  Zahl danach Jahr 1er
M  Zahl danach Jahr 10er
?  Zahl danach 0=Rufbit normal, 1=Rufbit Alarm für PTB
B  Zahl danach 1=Daten für 1 Minute vollständig und gültig


live Protokoll der USB/COM-Schnittstelle:
=====================================================================
Sekunde Protokoll                            Bemerkung
-----------------------------------------------------------------
57. @5A7>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
58. @5A8>0=6
    @5A8
59. @5A9N8O8P2z0z0z0z0z0z0z0z0z0z0       Träger nicht moduliert 
                                    Pause), Dummy-Impuls 
                                    für 59. Sekunde
    C0D5E1F9G1I1J3H4KAL3M1?0B1           Komplette Information 
                                    für die nächste Minute 
                                    stehen zur Verfügung
60. @0A0>0=6z0z0z0z0z0z0z0z0z0z0
1.  @0A1>0=6N8O8P2z0z0z0z0z0z0z0z0z0z0   Ab hier wieder 
                                         abgeleitet 
                                    vom moduliertem 
                                    Sekundenimpuls 
2.  @0A2>1=6N8O8P2z0z0z0z0z0z0z0z0z0z0
3.  @0A3>0=6N8O8P2z0z0z0z0z0z0z0z0z0z0
4.  @0A4>0=7N8O8P2z0z0z0z0z0z0z0z0z0z0
5.  @0A5>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
6. @0A6>0=7N8O8P2z0z0z0z0z0z0z0z0z0z0
7. @0A7>0=7N8O8P2z0z0z0z0z0z0z0z0z0z0
8. @0A8>0=5N9O8P2z0z0z0z0z0z0z0z0z0z0
9. @0A9>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
10. @1A0>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
11. @1A1>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
12. @1A2>1=6N8O8P2z0z0z0z0z0z0z0z0z0z0
13. @1A3>0=7N0O9P2z0z0z0z0z0z0z0z0z0z0
14. @1A4>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
15. @1A5>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
16. @1A6>0=5N0O9P2z0z0z0z0z0z0z0z0z0z0
17. @1A7>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
18. @1A8>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
19. @1A9>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
20. @2A0>1=5N9O8P2z0z0z0z0z0z0z0z0z0z0
21. @2A1>0=5N9O8P2z0z0z0z0z0z0z0z0z0z0
22. @2A2>1=6N8O8P2z0z0z0z0z0z0z0z0z0z0
23. @2A3>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
24. @2A4>0=7N0O9P2z0z0z0z0z0z0z0z0z0z0
25. @2A5>1=7N9O8P2z0z0z0z0z0z0z0z0z0z0
26. @2A6>0=5N0O9P2z0z0z0z0z0z0z0z0z0z0
27. @2A7>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
28. @2A8>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
29. @2A9>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
30. @3A0>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
31. @3A1>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
32. @3A2>1=5N0O9P2z0z0z0z0z0z0z0z0z0z0
33. @3A3>1=7N0O9P2z0z0z0z0z0z0z0z0z0z0
34. @3A4>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
35. @3A5>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
36. @3A6>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
37. @3A7>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
38. @3A8>0=5N0O9P2z0z0z0z0z0z0z0z0z0z0
39. @3A9>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
40. @4A0>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
41. @4A1>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
42. @4A2>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
43. @4A3>0=7N0O9P2z0z0z0z0z0z0z0z0z0z0
44. @4A4>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
45. @4A5>0=5N0O9P2z0z0z0z0z0z0z0z0z0z0
46. @4A6>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
47. @4A7>0=6N1O9P2z0z0z0z0z0z0z0z0z0z0
48. @4A8>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
49. @4A9>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
50. @5A0>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
51. @5A1>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
52. @5A2>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
53. @5A3>0=6N9O8P2z0z0z0z0z0z0z0z0z0z0
54. @5A4>1=6N8O8P2z0z0z0z0z0z0z0z0z0z0
55. @5A5>0=5N9O8P2z0z0z0z0z0z0z0z0z0z0
56. @5A6>0=7N0O9P2z0z0z0z0z0z0z0z0z0z0
57. @5A7>0=7N9O8P2z0z0z0z0z0z0z0z0z0z0
58. @5A8>0=6
@5A8
59. @5A9N9O8P2z0z0z0z0z0z0z0z0z0z0
C0D6E1F9G1I1J3H4KAL3M1?0B1
60. @0A0>0=6z0z0z0z0z0z0z0z0z0z0
1. @0A1>1=6N9O8P2z0z0z0z0z0z0z0z0z0z0
2. @0A2>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
3. @0A3>0=6N0O9P2z0z0z0z0z0z0z0z0z0z0
4. @0A4>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0
5. @0A5>1=6N0O9P2z0z0z0z0z0z0z0z0z0z0

Download Firmware in GCBASIC DCF77_Uhr...Release-1-1-011...String.gcb

PC Frontend geschrieben in VB2013

Der PC erhält laufend Daten von der Hardware über die USB-Schnittstelle
entsprechend der Token-Tabelle. Die Synchronisationen für Sekunde und Minute
garantieren die richtige Zuordnung der Daten. Dies wird oben links durch die
Zahnräder mit dem grünen +-Zeichen angezeigt. Sehr schön kann man sehen, dass
erst nach der 59. Sekunde das Protokoll für eine Minute komplett ist und
entsprechend die Daten angezeigt werden.

Folgende Funktionen sind implementiert:

-Signalqualität DCF77 als analoger Balken von schlecht bis gut
-Protokoll DCF77 zeigt an, ob die Übertragung über USB erfolgreich war
-BIT-Nr. entspricht den auf das Trägersignal modulierten Sekunden
-Uhrzeit/Datum wie über die Schnittstelle übermittelt
-COM erlaubt die Einstellung der passenden COM-Nr. (im Gerätemanager ermitteln)
 9600 Bits/s, 8Bit, keine Parität, 1 Stopbit, keine Flusssteuerung
-Sommer/Winterzeit wie über die Schnittstelle übermittelt, wird per Bild dargestellt
-Quelle schaltet um von DCF77-Hardware zu PC-interner Uhr und umgekehrt
-Ticken kann die Sekunden hörbar machen, Schieber unten bedeutet aus (zum Bedienen
 auf den Schieber klicken)
-Die Zeiger der analogen Uhr sind per VB animiert.

Download der Installationsversion DCF77.zip

Alle Downloads DCF77

Download Eagle-Schaltplan DCF77-PIC2550-LCD2x16.sch
Download Schaltplan Schaltbild-DCF77.pdf
Download Firmware in GCBASIC DCF77_Uhr...Release-1-1-011...String.gcb

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.