Arduino DCF77 Master väggklocka (1 / 11 steg)
Steg 1: Design
Efter många år av klockor med logik marker jag beslutade att använda mikrokontroller på grund av minskad chip räkna och därför lätta konstruktion. Min tidigare ledar-tar tid används 31 logik ICs och 4 huvudsakliga styrelser och hade mycket mindre funktioner se pic.
Jag beslutade att använda Arduino för att styra min nya Master på grund av det är enkel programmering. De flesta av det komplicerade arbetet görs av människor som design och sedan dela bibliotek. Arduino är mycket väl stöds Hårdvara klokt och många kompletta delar kan köpas färdig byggd som byggsten för projekt.
På denna klocka driver en MAX7219 primär bildskärm och en 4 x 20 I2C LCD används för den sekundära dessa hjälp att hålla ledningar och Arduino 328 pin använda till ett minimum. Jag behöll samma typ av ek fallet används i min gamla master klocka eftersom det passade 6 x 1" 7 segment visar perfekt och gav mig utrymme för att passa i alla de andra modulerna. Jag har använt en PIR modul för display shutdown/wakeup med egen timer och känslighetsjustering som detta använder endast 1 pin av Arduino 328. En EZ Link Bluetooth Serial Board modul gör det möjligt för mig att programmera klockan och läsa data från det avsides från min stationära dator och Android mobil.
En av designöverväganden när man bygger denna klocka var att reducera makten förtäringen eftersom klockan är på 24/7. Se tabellen nedan för det mesta Mk2 klockan kommer att dra runt 50mA jämfört till den Mk1 200mA.
Strömförbrukning
Masterclock Mk1 200mA
Masterclock MK2 start 35mA
Skärm under dagtid med ingen rörelse upptäckts 40mA
Uppvisning på 0 ljusstyrka 43mA
Uppvisning på 2 ljusstyrka 50mA
Uppvisning på 5 ljusstyrka 62mA
Uppvisning på 10 brightness78mA
Uppvisning på 15 (max) brightness90mA
Arduino biblioteken
DCF77.h detta bibliotek är hjärtat i klockan och den avkodar även en bullrig DCF77 signalen och automatisk stämma kvartskristallen.
LedControl.h att driva LED-display och LDC bakgrundsbelysning via en MAX7219 IC.
LiquidCrystal_I2C.h att köra den LCD uppvisning
Wire.h att kommunicera med I2C enheter
Tidhållning
Min gamla Master klocka var en mycket bra tid keeper och så länge jag hade en bra DCF77 signalen att hålla i synk det var fina. Då och då när DCF77 signalen förlorades för länge det skulle få en andra och vid korrigering av det det skulle göra det 1 andra slavar förlora en sekund. Detta bara hänt ett par gånger om året men åter synkronisera alla min 1 andra slavar var en smärta.
Jag har beslutat att fortsätta använda DCF77 signalen från atomklockan i Tyskland. Jag kunde ha använt MSF signalen från Storbritannien men receptionen är inte bra i Surrey som sändaren har flytta längre norrut. DCF77 signalen stöds också bättre eftersom det används i Europa inte bara Förenade kungariket.
Jag kommer att använda Arduino DCF77 decoder library skriven av Udo Klein. Udo har utvecklat denna kod under de senaste åren att göra det synkronisera och låsa fast en signal även när det finns en enorm mängd brus och störningar på signalen. Medan prototyper bör min nya klocka jag konsekvent lyckas synkronisera och upprätthålla ett lås även om DCF77 signalmottagaren ledde som Visa en stadig 1 sekund puls från Tyskland blinkar flera gånger i sekunden. Udo's DCF77 bibliotek kod är mycket mycket komplex men i mycket grundläggande termer det låser på DCF77 frekvensen med en fasas-locked loop och när det är låst kommer det faktiskt förutsäga vad DCF77 koden innehåller och sedan leta efter denna kodavsnitt i en mycket högljudd signal. Som saker som datum inte ändra att hans kod ofta kan se för denna data i signalen att hjälpa den förblir låsta på! När i synk med DCF77 signalen används det till "Autotune" backup quartz crystal att säkerställa om DCF77 signalen bryts klockan fortfarande stannar i synkronisering. Du kan läsa fullständiga uppgifter om utvecklingen av detta bibliotek och mycket mer på Udo webbplats/blogg här Blinkenlight.
Endast små ner sidan till det här biblioteket är att det krävs en exakt tid bas på Arduino att låsa in DCF77 frekvensen. Moderna Arduino styrelser använder inte en kvartskristall (den som du ser i styrelsen är för den seriella porten) men en sämre 16MHz keramisk resonator. Udo har skrivit ett testprogram att kontrollera om din Arduino styrelser resonator/crystal är av jobbet med att köra sitt bibliotek och kan hittas här DCF77 räckvidd . Om din styrelse inte är upp till jobbet är det mycket lätt att ta bort resonator och ersätta den med en kvarts kristall och ett par kondensatorer. Jag har ändrat min Arduino UNO och det fungerar perfekt med biblioteket.
Se bilder och scheman för UNO före och efter ändringen.
Huvudsakliga klockdisplay
Jag använde 1"(26mm) 7 segment display att Visa tid som dessa har arbetat mycket väl på min gamla Master klocka och är läsbara från en bra bit på natten och även i dagsljus. Dessa drivs av en MAX7219 display driver som det kan prata direkt med Arduino med ett par sladdar och det har multiplexed displayen förenklar ledningar.
Sekundära klockdisplay
Den sekundära displayen som visar tid och datum kommer att ge information om driften av klockan i synnerhet DCF77 avkodning prestanda. Jag har använt en I2C 4 x 20 LCD-display för detta. Återigen dessa visar prata direkt med Arduino över en 3 wire interface och är mycket bra på visar massor av information på nära håll. Se Visa animering i detta avsnitt.
Puls Monitor
Övervakning av puls använder enkla lysdioder eftersom de ger en snabb visuell indikation av vad pulser överförs av klockan.