I stedet for at købe et færdigt DCF77-ur til PC'en, kan man også selv ombygge de fleste DCF77-ure man billigt kan købe på tilbud (ofte 65-70kr). Der er flere artikler/links på internettet der beskriver hvordan, så efter at have købt et billigt ur til 62.50kr i en lokal butik skulle jeg også forsøge. Dette billige ur havde ikke datovisning , og jeg tænkte at PC'en burde kunne læse alle DCF77 data der modtages. Derudover kan man stadig aflæse tiden på urets display, hvad ikke alle færdige DCF77 ure til PC har mulighed for.
Jeg har valgt at tilkoble uret til min gameport (joystik), dels fordi jeg ikke har en joystik, og dels fordi gameporten har +5V som kan bruges til at forsyne uret. Alternativt kunne en parallelport også anvendes, men her mangler en 5V forsyning (og jeg ville gerne kunne bruge min printer).
Man kan også koble uret til serielporten, her kan man få ca. +12V (og -12V) fra et af de andre RS232 signaler. Derudover skal udgangssignalet skifte meller +12V og -12V, så denne del bliver også lidt mere kompliceret. Nu mangler jeg hele tiden serielporte, så jeg syntes ikke at jeg ville anvende denne løsning.
Først skal man finde 2 signaler på printet. De fleste DCF-77 ure består af 2 "chips" (f.eks. SMD IC'er). Evt. er disse direkte monteret på printet med en sort klat ovenover. Den chip der modtager signalet er forbundet direkte til spolen på ferritantennen. Udover lidt lokale komponenter (resistorer og kondensatorer), er chip'en forbundet til forsyningsspændingen (ofte +1.5V), stel (GND / 0 Volt), og til den anden ur chip med 2 forbindelser. Den ene er pulserne (DCF) til selve DCF77-signalet, og det andet er ON/OFF signalet der tænder/slukker modtageren. Hvis uret er af typen med kun en sort klat (dvs. en chip) så er det ikke sikkert at man kan finde DCF77 signalet, og dermed anvende uret.
For at finde printbanen med DCF signalet kan et oscilloscop anvendes. Alternativt kan man forsøge med en lysdiode i serie med en modstand på ca. 1-2 kohm forbundet til +5V (De 1.5V fra batteriet er ikke altid nok til at få lysdioden til at lyse). Husk at GND fra 5 volt forsyningen også skal forbindes til GND (-) på uret.
LED |\| 1.5kohm +5V -----------| |--------VVVVVVV-------> "probe" |/|
Lysdioden burde så blinke kort (gå ud), en gang for hvert sekund. Hvis den kun lyser et kort øjeblik hvert sekund, så skal programmet, med nedenstående forbindelser, have inverteret den bit der læses på porten.
De fleste DCF-ure anvender enten et 1.5V eller 2 stk 1.5V batterier. Til dem med kun et 1.5V batteri kan spændingsforsyningen klares med en passende modstand og en rød lysdiode (LED), da denne diode har et spændingsfald på ca. 1.6V. Til 3V urene kan man evt. anvende 2 stk røde lysdioder i serie og ændre de 680 ohm til f.eks. 330 eller 390 ohm.
Gameport ben: ca. 680 ohm 1 +5V------+--------VVVVVVVV------+--------> til +1.5V på Ur | | | |(+) > +---+ Rød LED > 6,8 kohm \ / (ca. 1.6V) > -+- 4 --GND > | | | | GND | | 2 (-DCF)-<-+ | | (C) 22 kohm NPN-Tr.(B)-----VVVVVVV-----------------< DCF signal på chip (E) | GND
NPN transistoren er f.eks. en BC547B eller tilsvarende, men en vilkårlig småsignal transistor burde kunne anvendes.
Normalt synkroniserer batteridrevne DCF-ure kun en gang hver time, derfor skal DCF-ON signalet være lav for at man får signal hele tiden. Da uret alligevel forsynes med strøm fra computeren gør det ikke så meget at DCF77 modtageren kører hele tiden. Man kan finde signalet med et oscilloscop eller voltmeter. Signalet er normalt lav (0 volt) når man isætter batteri (og starter) uret. Det vil så gå høj når tiden vises på urets display.
Blot at forbinde dette signal til GND kan evt. ødelægge udgangstrinet fra den anden urchip, så jeg skar printbanen over med en lille hobbykniv. Man kan så forbinde DCF-ON på følgende 2 måder:
DCF-chip/ON----+------- X ----+----------<---- ur-chip | (afbrudt bane) GND
D1 - 1N4148 (skal vendes rigtig) +--------->|--------+ | | DCF-chip/ON----+------- X ----+----------<---- ur-chip | (afbrudt bane) | | Gameport | 47 kohm 5 GND ----|<-----+--------VVVVVVV----> +1.5V D2 - 1N4148
Når stikket til Gameport ikke er isat, så er der ikke GND på DCF77-ON signalet, og uret styrer selv modtageren. D2 kan evt. undværes og der forbindes direkte til GND på gameport.
De ovenstående valgte komponentværdier (specielt modstande) er ikke kritiske, så har man noget liggende i skuffen der har omtrentlig samme værdi, så virker det også.
For at stabilisere spændingsforsyningen kan man evt. montere en ca. 1-10uF mellem +1.5V og GND. Hvis uret har alarm og/eller baggrundslys, så vær opmærksom på at den viste spændingsforsyning ikke kan levere strøm nok til at lys eller "bip" toner kan virke ordentligt. I så fald må man lave en anden spændingsforsyning, evt. ekstern. Men normalt har man ikke brug for dette når man bruger uret til sin PC.
Jeg anvendte dcf77.c (DCF Empfang für Linux © 1996 by Michael Bosch). Programmet er fra en artikel i det tyske Linux Magazin november 1996 . Hvis DCF signalet man modtager på gameporten er inverteret, så kan man evt. rette i programmet i den linie der læser på porten med "inb(port)". Jeg har lavet bla. denne tilføjelse (-i option), samt et år 2000 fix af Kurt Mielke. Programmet kan downloades her: dcf77-fd.c, og det oprindelige program: dcf77.c.
Programmet oversættes med f.eks. gcc -O2 dcf77-fd.c -o dcf77. Man skal være root for at anvende programmet.
Jeg havde problemer med min gameport, da jeg havde glemt at det var PnP, og at OSS driveren til lydkortet kun indstillede lydkortets porte mv. Efter at have anvendt isapnptools fik jeg også aktiveret gameporten og alt virkede derefter.
Artiklen i Linux Magazin baserer sig på et DCF77 modul fra Conrad Elektronik, men en anden webside "DCF77 for Linux" beskriver hvorledes man kan forbinde PC'en til et vilkårlig DCF77 ur, og det var dette der inspirerede mig til selv at forsøge. Der stod at visse ure ikke kan anvendes da de giver et "unsauberes" urent? signal. Nu blev det ikke nævnt om det var fordi signalet er inverteret, eller det er fordi det ikke var kraftigt nok til at kunne forbindes direkte til gameporten.
På UA2124 og UA2125 IC'ere som jeg har datablad på, er udgangen af typen open collector, som burde kunne trække en del til 0V. I de fleste færdige ure kan man dog ikke se hvilken chip det er, derfor satte jeg et lille transistortrin på DCF77 udgangen, så jeg var sikker på at signalet var godt nok. Derudover ville jeg ikke risikere at ødelægge indgangen på den anden chip, hvis den nu ikke kunne tåle mere end max. ca. 1.5V. Hos mig virker det fint med et 5 meter 4-leder kabel.
Vil man lave en simplere tilslutning, så kan man jo spare transistortrinet, og direkte forbinde DCF77 signalet til porten. Har man derudover et oscilloscop, så kan signalets kvalitet nemt kontrolleres.
Hos bla. conrad elektronik (http://www.conrad.de) kan man købe et lille print med færdig DCF77 modtager, der direkte kan forbindes til gameport (DB15 stik medfølger ikke). Men prisen er 19.95DM (ca. 76kr) og uden display. Man kan også købe et WT100 modul med serieludgang til ca. samme pris. Bestillingsnummer 641871-62, samt dos-software + kabler 641979. Andre dcf77 (byggesæt) moduler: 641138-62, 115789-62, 642002-62, 967602, 975788. Bestillingsnummer for UA4224 smd er 142409-62.
Men i alle tilfælde kommer forsendelsen oveni (ofte ca. 60-100kr) samt man skal bestille for minimum 100DM, så det er billigere at ombygge et standard DCF77 ur.
NB.: Man bør ikke placere uret tæt på PC'en da denne kan støje en del. Det samme gælder for placering tæt på lysstofrør, sparepærer, TV mv. . Selv har jeg med success placeret uret ved en I-bjælke der vender øst-vest i kælderen ved siden af PC'en. Det virker som om signalet er bedst der, muligvis fordi jernbjælken virker som "forstærker" til ferritantennen i uret.
Dette kan sikkert findes andet steds, men ganske kort:
I Frankfurt er det en sender der sender på 77.5 kHz. Signaler kan modtages i omkring 1500-2000 km omkreds fra senderen. Selve tidsinformationen sendes over et minut med korte pulser hvert sekund. Længden af denne puls afgør om det er et "0" eller "1". Længden er henholdsvis 0.1 eller 0.2 sekund. Det 59'ende sekund indeholder ingen puls, og skal bruges til at synkronisere starten af første (0'te) sekund (puls) i et minut. Alle disse 0'er og 1'er giver over et minut tid, ugedag, måned, år mv. Jeg har et hæfte der beskriver dette, samt smd-ic'erne UA2124 og UA2125. (Disse IC'ere er sikkert udgået, og bla. U4224 er en afløser for disse.)
De fleste, hvis ikke alle DCF77 ure, har en chip der modtager de 77.5kHz, og laver disse "pulser" som sendes til en speciel urchip der dekoder signalet. For at spare strøm tændes modtageren ofte kun en gang per time, og dette tænd/sluk signal sendes fra urchip til DCF77-chip.
DCF77 programmer til game/parallel/serielport læser disse pulser og udfra længden afgør om det er 0/1, og over et minut afkodes disse til fuld tid- og datoinformation.
Tid og dato information er kodet i en slags BCD efter nedenstående tabel:
Zeittelegramm von DCF77 | ||
---|---|---|
0 | Start af minut | Lo |
1..14 | Ikke anvendt | X |
15 | Reserveantenne (i drift=1) | X |
16 | Tidsskifte (anmeldes en time forinden = 1) | X |
17 | Sommertid (MESZ=1) | X |
18 | Tidzone-bit | Lo |
19 | Tillægssekund (anmeldes en time forinden = 1) | X |
20 | Start, altid 1 "Telegrammbeginn" | Hi |
21 | Minuter bcd 1 | 1 |
22 | Minuter bcd 2 | 2 |
23 | Minuter bcd 4 | 4 |
24 | Minuter bcd 8 | 8 |
25 | Minuter bcd 10'ere | 10 |
26 | Minuter bcd 10'ere | 20 |
27 | Minuter bcd 10'ere | 40 |
28 | Paritetsbit #1 (lige paritet) | X |
29 | Timer bcd | 1 |
30 | Timer bcd | 2 |
31 | Timer bcd | 4 |
32 | Timer bcd | 8 |
33 | Timer bcd 10'ere | 10 |
34 | Timer bcd 10'ere | 20 |
35 | Paritetsbit #2 (lige paritet) | X |
36 | Dag bcd | 1 |
37 | Dag bcd | 2 |
38 | Dag bcd | 4 |
39 | Dag bcd | 8 |
40 | Dag bcd 10'ere | 10 |
41 | Dag bcd 10'ere | 20 |
42 | Ugedag bcd (mandag=001,...) | 1 |
43 | Ugedag bcd | 2 |
44 | Ugedag bcd | 4 |
45 | Måned bcd | 1 |
46 | Måned bcd | 2 |
47 | Måned bcd | 4 |
48 | Måned bcd | 8 |
49 | Måned bcd 10'er | 10 |
50 | År bcd | 1 |
51 | År bcd | 2 |
52 | År bcd | 4 |
53 | År bcd | 8 |
54 | År bcd 10'ere | 10 |
55 | År bcd 10'ere | 20 |
56 | År bcd 10'ere | 40 |
57 | År bcd 10'ere | 80 |
58 | Paritetsbit #2 (lige paritet) | X |
59 | Ingen markering (ingen puls) | - |
60=00 | Begyndelse af næste minut | Lo |
Egentlig kunne jeg blot synkronisere uret med en NTP server når jeg er koblet op på internet, men det er ikke ligeså sjovt......
... frda(a)post3.tele.dk |
|