Obsah:

Digitální hodiny Arduino synchronizované 60Hz napájecím vedením: 8 kroků (s obrázky)
Digitální hodiny Arduino synchronizované 60Hz napájecím vedením: 8 kroků (s obrázky)

Video: Digitální hodiny Arduino synchronizované 60Hz napájecím vedením: 8 kroků (s obrázky)

Video: Digitální hodiny Arduino synchronizované 60Hz napájecím vedením: 8 kroků (s obrázky)
Video: Elektronické mateční hodiny EMH 1 pro hodiny PRAGOTRON-test -MASTER clock/hauptuhr/impulse generator 2024, Červenec
Anonim
Digitální hodiny Arduino synchronizované 60Hz napájecím vedením
Digitální hodiny Arduino synchronizované 60Hz napájecím vedením

Tyto digitální hodiny založené na Arduinu jsou synchronizovány napájecím vedením 60 Hz. Má jednoduchý a levný společný anodový 4místný 7segmentový displej, který zobrazuje hodiny a minuty. Používá křížový detektor k detekci, kdy příchozí 60Hz sinusová vlna překročí bod nulového napětí a odvodí 60 Hz čtvercovou vlnu.

V krátkých časových obdobích se frekvence příchozí sinusové vlny z napájecího vedení může v důsledku zátěže velmi mírně lišit, ale po dlouhou dobu se velmi přesně průměruje na 60 Hz. Můžeme toho využít k odvození zdroje časování pro synchronizaci našich hodin.

Krok 1: Schéma zapojení

Schéma zapojení
Schéma zapojení

Existují dvě verze obvodu v závislosti na tom, zda chcete použít transformátor se středovým odbočením nebo bez něj, v obou případech je činnost obvodu téměř identická. Pro toto sestavení jsem použil nástěnný adaptér (bez středového kohoutku), který má výstup 12 V AC. Tento návrh (schéma zapojení digitálních hodin 1) použiji pro popis obvodu. Všimněte si toho, že je důležité použít nástěnný adaptér, který vydává 12 V AC, nikoli 12 V DC, abychom mohli pro načasování využít AC sinusovou vlnu. Pravděpodobně byste také mohli použít transformátor s výstupem 9 V AC, odstranit R19 a také jej uvést do provozu, ale 12V je velmi běžně k dispozici. Takto obvod funguje:

120 V AC při 60 Hz je transformováno na 12V AC transformátorem TR1. Toto je přiváděno do diody D4 a usměrňováno tak, že do kondenzátoru C3 je přiváděno pouze +ve napětí a vyhlazováno na přibližně DC se zvlněním. Napětí na C3 je přivedeno do regulátoru napětí 7805 (U6) přes odpor R19. R19 se používá ke snížení napětí na C3, které bylo v mém případě naměřeno přibližně na 15VDC. To lze regulovat 7805, ale s touto úrovní vstupu musí 7805 klesnout přibližně o 10 V DC a v důsledku toho se dost zahřívá. Použitím R19 ke snížení napětí na přibližně 10 VDC zabráníme přílišnému zahřívání U6. Nejedná se tedy o efektivní techniku přeměny energie, ale pro naše účely funguje. POZNÁMKA: zde použijte alespoň 1/2W odpor nebo více. Obvod čerpá asi 55 ma, takže ztrátový výkon v R19 je asi 1/3W na základě P = I ** 2*R nebo P = 55ma x 55ma x 120 ohmů = 0,363W. Další U6 výstupy čisté 5V DC s C4 a C5 na výstupu filtrovat jakýkoli šum na 5V napájecím vedení. Tento 5V DC napájí všechny integrované obvody na desce.

Z TR1 také odebereme vzorek nefiltrovaného střídavého signálu a přivedeme jej do potenciometru RV1, který slouží k nastavení úrovně přiváděné do křížového detektoru. R18 a R17 tvoří dělič napětí pro další snížení úrovně přicházejícího střídavého napětí. Pamatujte, že to přichází při 12 V AC a potřebujeme to snížit na méně než 5 V, aby to fungovalo s naším křížovým detektorem, který je pouze napájeno 5VDC. R15 a R16 zajišťují omezení proudu, zatímco D1 a D2 jsou určeny k zabránění přetížení operačního zesilovače U5. V zobrazené konfiguraci se výstup U5 na pinu 1 bude střídat mezi +5 V a 0 V pokaždé, když se příchozí sinusová vlna změní z kladné na zápornou. To generuje 60 Hz čtvercovou vlnu, která je přiváděna do mikrokontroléru U4. Program načtený na U4 pak používá tuto 60Hz čtvercovou vlnu ke zvýšení hodin každou minutu a hodinu. Jak se to provede, bude popsáno v části softwarového programu a v komentářích k softwaru.

U7 se používá posuvný registr 74HC595, protože na mikroprocesoru máme omezený počet digitálních pinů, takže slouží k rozšíření počtu výstupů. Na mikroprocesoru používáme 4 digitální piny, ale pomocí 74HC595 můžeme ovládat 7 segmentů na displeji. Toho je dosaženo posunutím předem určených vzorů bitů, uložených v mikrokontroléru, a které představují každou číslici, která má být zobrazena, do posuvného registru.

Zde použitý displej je běžná anoda, takže musíme zapnout úrovně signálu vycházejícího z 74HC595, abychom mohli zapnout segment. Když by měl být segment zapnut, signál přicházející z výstupního kolíku 74HC595 bude na +5V, ale potřebujeme, aby pin, který napájí na displeji, byl na 0V, aby se tento segment displeje zapnul. K tomu tedy potřebujeme šestihranné měniče U2 a U3. Bohužel jeden invertorový integrovaný obvod zvládne pouze 6 inverzí, takže je potřebujeme dva, i když na druhém používáme pouze jednu ze 6 bran. Zbytečně bohužel. Můžete se zeptat, proč zde nepoužít běžný katodový typ displeje a eliminovat U2 a U3? Odpověď je, že můžete, já mám náhodou v zásobě dílů společný typ anody. Pokud máte nebo chcete použít běžný katodový typ displeje, stačí eliminovat U2 a U3 a znovu zapojit Q1 - Q4 tak, aby byly tranzistorové kolektory připojeny k pinům displeje a tranzistorové emitory připojeny k zemi. Q1 - Q4 řídí, který ze čtyř 7segmentových displejů je aktivní. Toto je řízeno mikrokontrolérem prostřednictvím pinů připojených k základně tranzistorů Q1 - Q4.

Tlačítka přírůstku a nastavení budou použita k ručnímu nastavení správného času, pokud jde o skutečné používání hodin. Když je jednou stisknuto tlačítko Set, lze pomocí tlačítka Increment procházet hodiny zobrazené na displeji. Po opětovném stisknutí tlačítka Set lze pomocí tlačítka přírůstku procházet minuty zobrazené na displeji. Při třetím stisknutí tlačítka Set se nastaví čas. R13 a R14 táhnou kolíky mikrokontroléru spojené s těmito tlačítky nízko, když se nepoužívají.

Všimněte si, že jsme zde sundali U4 (Atmega328p) z typické prototypové desky Arduino UNO a dali ji na prototypovou desku se zbytkem našeho obvodu. K tomu musíme přinejmenším poskytnout krystal X1 a kondenzátory C1 a C2, abychom zajistili zdroj hodin pro mikrokontrolér, spojovací kolík 1, resetovací kolík, vysoký a poskytli napájení 5 V DC.

Krok 2: Breadboard váš obvod

Breadboard Váš obvod
Breadboard Váš obvod
Breadboard Váš obvod
Breadboard Váš obvod

Bez ohledu na to, zda budujete obvod přesně tak, jak je znázorněno na schématu zapojení, nebo zda používáte mírně odlišný transformátor, typ displeje nebo jiné komponenty, měli byste nejprve zapojit obvod, abyste zajistili, že funguje a že rozumíte jeho fungování.

Na obrázcích vidíte, že celá věc vyžadovala pár desek a desku Arduino Uno. Abyste mohli naprogramovat mikrokontrolér nebo experimentovat nebo provádět změny v softwaru, budete zpočátku potřebovat integrovaný obvod mikrokontroléru na desce UNO, abyste k němu a počítači mohli připojit kabel USB a nahrát program nebo provést změny softwaru.

Jakmile začnou hodiny pracovat na prkénku a máte naprogramovaný mikrokontrolér, můžete je odpojit a zapojit do zásuvky na konečném sestavení trvalých hodin na prototypové desce. Při tom nezapomeňte dodržovat antistatická opatření. Při manipulaci s mikroprocesorem používejte antistatický řemínek na zápěstí.

Krok 3: Stavba obvodu na Protoboardu

Stavba obvodu na Protoboardu
Stavba obvodu na Protoboardu
Stavba obvodu na protoboardu
Stavba obvodu na protoboardu

Obvod je konstruován na kusu prototypové desky a zapojen z bodu do bodu pomocí drátového omotaného drátu AWG č. 30. Poskytuje tvrdý a spolehlivý výsledek. Protože transformátor, který mám, má zástrčku 5 mm na konci kabelu, namontoval jsem odpovídající zásuvku na zadní stranu desky řezáním, ohýbáním a vrtáním kusu 1/2 širokého plochého hliníkového pásu, abych vytvořil vlastní držák a poté jej přišroubujte k desce pomocí malých matic a šroubů 4-40. Můžete pouze odříznout konektor a připájet zbývající napájecí vodiče k desce a ušetřit si asi 20 minut práce, ale nechtěl jsem, aby byl transformátor trvale připojen na tabuli.

Krok 4: Vytvoření zásuvky pro displej a rozdání nohou

Vytvoření zásuvky pro displej a rozdávání nohou
Vytvoření zásuvky pro displej a rozdávání nohou
Vytvoření zásuvky pro displej a rozdávání nohou
Vytvoření zásuvky pro displej a rozdávání nohou
Vytvoření zásuvky pro displej a rozdávání nohou
Vytvoření zásuvky pro displej a rozdávání nohou

Protože displej má 16 kolíků, 8 na každé straně, s roztečí pinů, která je širší než standardní 16kolíková zásuvka IC, musíme upravit velikost zásuvky tak, aby odpovídala displeji. Toho docílíte jednoduše tak, že pomocí dvojice nožů na drát rozstřihnete plast spojující obě strany zásuvky, rozdělíte je a pájíte je odděleně k desce s roztečí, která odpovídá rozteči pinů na displeji. Je výhodné to udělat, abyste nemuseli pájet přímo na piny displeje a vystavovat displej nadměrnému teplu. Na obrázku výše vidíte zásuvku, do které jsem to udělal, v horní části desky.

Aby se displej mohl postavit doprava, přišrouboval jsem dva 1 šrouby ke spodním dvěma rohovým otvorům prototypové desky, jak je znázorněno na fotografiích, aby se vytvořil jednoduchý stojan. Bylo to docela nápadné, takže pokud to uděláte, můžete chcete na zadní stranu šroubů dát něco těžkého, aby se to stabilizovalo.

Krok 5: Kontrola zapojení obvodové desky a příprava na kalibraci

Kontrola zapojení obvodové desky a příprava na kalibraci
Kontrola zapojení obvodové desky a příprava na kalibraci

Jakmile je deska s obvody zapojena, ale před zapojením integrovaných obvodů nebo displeje nebo napájením je vhodné zkontrolovat připojení desky pomocí DVM. Většinu DVM můžete nastavit tak, aby pípala, když existuje kontinuita. Nastavte DVM v tomto režimu a poté podle schématu zapojení zkontrolujte co nejvíce zapojení obvodů. Zkontrolujte, zda mezi body +5 V a zemí není přerušený obvod nebo v jeho blízkosti. Vizuálně zkontrolujte, zda jsou všechny součásti připojeny ke správným kolíkům.

Poté připojte transformátor k obvodu a zapněte jej. Před zapojením jakýchkoli integrovaných obvodů nebo displeje zkontrolujte, zda máte na 5V napájecí liště přesně 5V DC.

Jako další krok zapojte POUZE IC Op-Amp U5 IC. Zde zkontrolujeme, zda náš křížový obvod generuje čtvercovou vlnu, a upravíme potenciometr RV1 pro čistý signál 60 Hz.

Krok 6: Kalibrace obvodu

Kalibrace obvodu
Kalibrace obvodu
Kalibrace obvodu
Kalibrace obvodu

Jedinou kalibrací, kterou je třeba provést, je nastavení potenciometru RV1 na správnou úroveň signálu přivádějícího křížový detektor. To lze provést dvěma způsoby:

1. Umístěte sondu osciloskopu na pin 1 U5 a ujistěte se, že je uzemňovací vodič sondy sondy připojen k uzemnění obvodu. Dále upravte RV1, dokud nebudete mít čistou čtvercovou vlnu, jak je znázorněno na výše uvedeném obrázku. Pokud nastavíte RV1 příliš daleko jedním nebo druhým způsobem, buď nebudete mít žádnou čtvercovou vlnu nebo zkreslenou čtvercovou vlnu. Zajistěte, aby frekvence druhé vlny byla 60 Hz. Pokud máte moderní rozsah, pravděpodobně vám to řekne frekvenci. Pokud máte starodávný rozsah jako já, pak zajistěte, aby byla doba čtvercové vlny přibližně 16,66 ms nebo 1/60 s.

2. Pomocí čítače kmitočtu nebo DVM v režimu frekvence změřte frekvenci na pinu 1 U5 a nastavte RV1 přesně na 60 Hz.

Jakmile je tato kalibrace hotová, vypněte obvod a zapojte všechny integrované obvody a displej a dokončete stavbu obvodu.

Krok 7: Program Arduino

Program je plně komentován, takže můžete zjistit podrobnosti o každém kroku. Vzhledem ke složitosti programu je obtížné popsat každý krok, ale na velmi vysoké úrovni to funguje takto:

Mikroprocesor přijímá příchozí 60 Hz čtvercovou vlnu a počítá 60 cyklů a zvyšuje počet sekund po každých 60 cyklech. Jakmile počet sekund dosáhne 60 sekund nebo 3600 cyklů, počet minut se zvýší a počet sekund se vynuluje. Jakmile počet minut dosáhne 60 minut, počet hodin se zvýší a počet minut se vynuluje. po 13 hodinách se počet hodin vynuluje na 1, jedná se tedy o 12 hodin. Pokud chcete 24hodinové hodiny, změňte program tak, aby se hodiny po 24 hodinách resetovaly na nulu.

Jedná se o experimentální projekt, takže jsem se pokusil použít smyčku Do-While k potlačení odskoku spínače na tlačítkách Set a Increment. Funguje to celkem dobře. Po jednom stisknutí tlačítka Set lze pomocí tlačítka Increment procházet hodiny zobrazené na displeji. Po opětovném stisknutí tlačítka Set lze pomocí tlačítka přírůstku procházet minuty zobrazené na displeji. Když tlačítko Set stisknete potřetí, čas se nastaví a hodiny se spustí.

Vzory 0 a 1, které se používají k zobrazení každého čísla na 7segmentových displejích, jsou uloženy v poli s názvem Seven_Seg. V závislosti na aktuálním čase jsou tyto vzory přivedeny na 74HC595 IC a odeslány na displej. Která ze 4 číslic displeje je v jednom okamžiku zapnuta pro příjem těchto dat, je řízena mikroprocesorem prostřednictvím displeje Dig 1, 2, 3, 4 piny. Když je obvod napájen, program nejprve spustí testovací rutinu s názvem Test_Clock, která odešle správné číslice pro rozsvícení každého displeje s počtem od 0 do 9. Pokud to tedy uvidíte při zapnutí, víte, že jste vše postavili správně.

Krok 8: Seznam dílů

1 - Transformátor 120 V stř. Až 12 V stř. Přibližně 100 mA nebo více Tranzistory NPN8 - odpory 330 ohmů2 - 74LS04 Šestihranné měniče1 - 74HC595 sériový až paralelní 8bitový posuvný registr 1 - LM358 OP -AMP (komparátor) 1 - mikrokontrolér ATMEGA328P (Creatron) 4 - 4,7K odpory7 - 10K odpory 1 - 1N4007 nebo 1N4001 dioda2 - 1N4 diody1 - 120 ohmů, 1/2W nebo 1W odpor Volitelně pro případnou zástrčku (pokud existuje) na váš nástěnný transformátor) 2 - 16 pinové IC zásuvky 2 - 14 pin IC zásuvky 1 - 8 pin IC zásuvka 1 - 28 pin IC zásuvka 2 - 1 "dlouhý přibližně #4 nebo #6 šrouby a odpovídající matice2 - 1/ 4 "dlouhé #4-40 šrouby a odpovídající matice 1 - kus 1/2" širokého plochého hliníkového pásu na míru a vyvrtané na míru

#30 AWG drát ovinutý drátem#22 AWG drát Páječka

Doporučuje: