English version

Multifunk?ní digitální hodiny s AVR

    úvod:
Tento návod popisuje konstrukci digitálních hodin reálného ?asu se sekundami, stopkami, budíkem, odpo?ítáváním (?asova?em), datem a dnem v tydnu s mo?ností kombinovaného zobrazení data, dne a ?asu. Automaticky p?epínají letní a zimní ?as, umí i p?estupny rok. ?ízené jsou mikroprocesorem AVR ATmega8A ?i ATmega8L. K zobrazení je pou?it ?estimístny 7-segmentovy LED displej, jeho? jas lze regulovat. Hodiny jsou vybaveny i zálohovací baterií.
    Zapojení:
Hodiny mají ?estimístny displej sestaveny ze dvou t?ímístnych vysocesvítivych zobrazova?? T-5631BUY-11. Displej je zapojen multiplexně. Lze pou?ít i jiné typy s dostate?nou svítivostí nebo displej uspo?ádat jinym zp?sobem, nap?. ze t?í dvoumístnych nebo ?esti jednomístnych zobrazova??. Anody jsou seskupeny po cifrách a jsou spínány pomocí tranzistor? T1 a? T6 pro zesílení proudu (zapojené jako emitorové sledova?e). Katody jsou seskupeny po segmentech a jsou buzeny p?ímo z mikroprocesoru IO1. Frekvence multiplexu je cca 100Hz. Hodiny jsou ?ízeny nízkofrekven?ním krystalem X1 s frekvencí 32 768 Hz. Aktivací bitu CKOPT jsou povoleny interní kondenzátory 36pF pro krystal a díky tomu nejsou nutné externí. V p?ípadě problém? s rozběhem oscilátoru zkuste p?ipojit dva externí kondenzátory cca 22pF mezi ka?dy vyvod X1 a zem. Pro je?tě vět?í p?esnost hodin je mo?né vypnout interní kondenzátory 36pF deaktivací bitu CKOPT a zvolit externí kondenzátory zkusmo tak, aby odchylka rychlosti chodu byla co nejmen?í. Piezoreproduktorek Rep1 zaji??uje zvukovy signál budíku (alarmu) a signalizaci skon?ení odpo?tu ?asova?e. Sou?asně se zvukovym signálem se rozsvítí i LED1. LED1 lze p?ípadně vynechat. Vyvod 16 (port PB2), na kterém se v době zvukovéhi signálu objevuje log1, lze také vyu?ít k jinym ú?el?m. Nap?. ovládání NPN tranzistoru napájícího cívku relé, které svym kontaktem zapíná motor, p?evracející kybl s vodou, umístěny nad Va?í postelí :). Tento vyvod je funk?ní i p?i provozu z baterie. Hodiny jsou ovládány pomocí t?í tla?ítek - Minuty, Hodiny a Mód. Tla?ítka mají sériové odpory, které chrání porty IO1 v p?ípadě, ?e by byly nedopat?ením nastaveny jako vystupy. Pullup odpory nejsou t?eba, proto?e v IO1 jsou aktivovány ty vnit?ní (20-50k). Obvod se napájí zdrojem 5V (nap?. se 7805). Odběr proudu zále?í hlavně na odběru displeje, tedy i na nastaveném jasu. P?i maximálním jasu je odběr cca do 60mA. Hodiny mají zálohovací baterii. P?i provozu z baterie hodiny p?echázejí do úsporného re?imu - displej nesvítí. V tomto re?imu jsou také zablokována tla?ítka (bez rozsvíceného displeje by byly jen na ?kodu). Jediny p?ípad, kdy tla?ítko i p?i vypnutém displeji reaguje, je vypnutí budíku (alarmu). Zálohovací baterie m??e mít napětí 3 - 4,5V. M??e to byt nap?. jeden knoflíkovy ?lánek 3V, dva a? t?i jakékoliv ?lánky 1,5V, t?i ?lánky NiMH nebo NiCd 1,2V nebo jeden ?lánek Li-ion ?i Li-pol (3,6 - 3,7V). Odběr p?i provozu z baterie 3V je jen cca 5 - 12uA. Doba zálohování z 3V ?lánku CR2032 s typickou kapacitou 200mAh je tedy teoreticky něco okolo 2,5 - 3 let. Pokud zní alarm během provozu z baterie, odběr stoupne na cca 1-2mA. Stav napájení je snímán vyvodem 14 (PB0). Log 1 na tomto vstupu p?epne hodiny na re?im sí?, log 0 p?epne na re?im baterie. Tento vstup lze p?ípadně vyu?ít i k vypínání displeje nebo krátkodobému zapnutí displeje p?i provozu z baterie (pokud má dostate?né napětí k rozsvícení displeje). Oba zdroje napájení - sí?ovy i baterie - jsou slou?eny p?es schottkyho diody D1 a D2. D1 zabraňuje zpětnému toku proudu z baterie do vypnutého sí?ového zdroje a také chrání hodiny p?ed p?epólováním. D2 zabraňuje nechtěnému dobíjení baterie během napájení ze sítě. Diody by měly mít co nejmen?í propustny úbytek i závěrny proud.
    Program:
Program digitálních hodin je ní?e ke sta?ení v HEX souboru p?ímo pro nahrání do mikrokontroléru i jako zdrojovy kód v Assembleru pro p?ípadné úpravy. Varování: Program je tak ?íleny, ?e pokud chcete ze?ílet, m??ete se ho sna?it pochopit :). Na obrázku ní?e je vidět nastavení konfigura?ních bit? mikroprocesoru. Hodiny jsou ?ízeny nízkofrekven?ním krystalem 32,768kHz, ktery umo?ňuje mnohem ni??í spot?ebu p?i provozu z baterie. MCU je taktován na 4MHz. V ne?innosti během sí?ového napájení hodin p?echází IO1 do sleep módu Idle. P?i bateriovém napájení hodin p?echází během ne?innosti do Power Save módu, co? umo?ňí velmi nízkou spot?ebu. Taktování MCU je v tomto stavu vypnuto a bě?í pouze asynchronní ?asova?/?íta? 2.
    Ovládání:
Hodiny se ovládají pomocí tla?ítek TL1-minuty, TL2-hodiny a TL3-mód. Tla?ítka hodiny a minuty se pou?ívají v módu hodiny k na?izování hodin a minut. V jinych módech mají jiné funkce. Tla?ítko mód p?epíná postupně jednotlivé módy, kterych je celkem 8:
1. Hodiny
V tomto módu je zobrazen reálny ?as ve tvaru "HH.MM.SS" (Hodiny.Minuty.Sekundy). Tla?ítko Hodiny slou?í k nastavování hodin. Tla?ítko Minuty slou?í k nastavování minut. P?i jeho stisku se také nulují sekundy, co? umo?ňuje p?esné nastavení.
2. Zapínání automatického ?asu a nastavení roku
Zde je mo?no zapínat a vypínat automaticky p?echod mezi letním a zimním ?asem a nastavit rok. Zobrazení je ve tvaru "A?  'RR" (Automaticky ?as, mezera, apostrof, poslední dvoj?íslí roku). Tla?ítkem Hodiny zapínáme automaticky ?as. Pokud je zapnuty, zobrazí se "A?", pokud je vypnuty, zobrazí se "_ _". Tla?ítkem Minuty nastavujeme rok (jeho poslední dvoj?íslí).
3. Odpo?et
Nyní jste v módu odpo?et. Ten umo?ňuje odpo?ítávání ?asu od nastavené hodnoty k nule. Poté je spu?těn zvukovy signál (a rozsvícena LED1). Zvukovy signál lze zastavit stiskem tla?ítka mód (po dal?ím stisku ji? toto tla?ítko funguje normálně). Zobrazení je ve tvaru "HH.MM.SS". (Hodiny.Minuty.Sekundy.). První dvě te?ky blikají o frekvenci 2Hz a odli?ují tím mód odpo?tu od módu hodin. Poslední te?ka svym svitem signalizuje zastavení odpo?tu. Tla?ítko Hodiny zde slou?í k p?epínání cifer během nastavování po?áte?ní hodnoty. Tla?ítko Minuty slou?í k nastavení. Právě nastavovaná cifra bliká frekvencí 5Hz. Maximální nastavitená hodnota je 99.59.59 (témě? 100 hodin). Po nastavení v?ech cifer se tla?ítkem Hodiny opět vrátíme do módu odpo?tu. Zde tla?ítko Minuty slou?í ke spu?tění a zastavení odpo?tu.
4. Kombinované zobrazení
V tomto módu se st?ídavě zobrazuje 1) reálny ?as ve tvaru "HH.MM.SS" (Hodiny.Minuty.Sekundy) a 2) datum v?etně dne v tydnu ve tvaru "AA.DD.MM." (Den v tydnu.Den měsíce.Měsíc.). Ka?dy údaj je zobrazen po dobu 1s. V tomto módu slou?í tla?ítka Hodiny a Minuty k nastavení jasu displeje (Hodiny -, Minuty +). Jas lze nastavovat logaritmicky v 6 stupních: 1/1, 1/2, 1/4, 1/8, 1/16 a 1/32. Vychozí nastavení je 1/2.
5. Volba dne v tydnu a zapínání + re?im alarmu
V tomto nastavovacím módu je mo?no nastavovat den v tydnu - pondělí a? neděle (zobrazeno jako Po,Ut,St,Ct,PA,So,nE), zapínat alarm (budík) a volit jeho re?im. Zobrazení je ve tvaru "AA  AL._" (Den v tydnu, mezera, AL., nastavení alarmu). Tla?ítkem Hodiny nastavujeme den v tydnu. Tla?ítko Minuty slou?í k zapínání/vypínání alarmu a volbě jeho re?imu: "AL._" = vypnuty alarm, "AL.1" = jednorázovy alarm (poté automaticky nastaven na vypnuto), "AL.5" = alarm jen ve v?ední dny (Po-Pá ano, So-Ne ne), "AL.7" = alarm ka?dy den. Vychozí nastavení je vypnuty alarm.
6. Den v tydnu a datum
Nyní je zobrazen den v tydnu a datum ve tvaru "AA.DD.MM." (Den v tydnu.Den měsíce.Měsíc.). Tla?ítko Hodiny umo?ňuje nastavit den v měsíci. Tla?ítko Minuty umo?ňuje nastavit měsíc.
7. Stopky
Stopky umo?ňují mě?it ?as s p?esností na 0,1s. Maximální ?as je 9.59.59.9 (témě? 10 hodin). Zobrazení je ve tvaru "H.MM.SS.X" (Hodina.Minuty.Sekundy.Desetina sekund). Tla?ítko Minuty slou?í ke spu?tění a zastavení stopek. Tla?ítko Hodiny slou?í k nulování (bě?ící stopky jsou prvním stiskem zastaveny a dal?ím nulovány).
8. Alarm
Tento mód slou?í k zobrazení a nastavení ?asu budíku (alarmu). Zobrazení je ve tvaru "HH.MM.AL". Tla?ítko Minuty nastavuje minutu budíku, tla?ítko Hodiny nastavuje hodinu budíku.

Dal?ím stiskem tla?ítka mód se opět dostáváte do 1. módu - hodiny. Zvukovy signál budíku se vypíná také tla?ítkem mód. P?i dal?ím stisku má toto tla?ítko opět normální funkci. Nastavení roku je d?le?ité kv?li p?estupnému roku (automaticky prodlou?í únor na 29 dní). Pro správnou funkci automatického ?asu je t?eba správně nastavit datum i den v tydnu. P?esun na letní ?as proběhne poslední neděli v b?eznu tím, ?e po 1:59:59 následuje 3:00:00. P?esun na zimní ?as proběhne poslední neděli v ?íjnu tím, ?e po 2:59:59 následuje 2:00:00. (Dle pravidla platného pro témě? v?echny evropské státy v?etně ?R a SR od r. 1996.)

Cely program ke sta?ení:
Zdrojovy kód v assembleru (ASM)
P?elo?eny v HEX souboru (3 566 Bajt?)
Zapisování programu do AVR se podrobněji věnuji zde.

P?ípadnym zájemc?m mohu naprogramovany mikroprocesor poslat. Více info zde.


Schéma multifunk?ních digitálních hodin s AVR ATmega8A / ATmega8L


Nastavení konfigura?ních bit? v progamu PonyProg.
(Hexadecimální hodnoty jsou Low Fuse: E3, High Fuse: C9.)


Hodiny - testování v kontaktním poli.


Hodiny vyfocené s dlouhou závěrkou fo?ákem v pohybu - je vidět ten multiplex :).


Displeje T-5631BUY-11 (v hodinách pou?ity 2ks). Parametry: t?ímístny, te?ky vpravo, zapojeny multiplexně, ?luty (590nm), 2,1V typ., 2,5V max., 150-200mcd p?i 20mA, max. proud 30mA (150mA 0,1ms 1kHz), spole?ná anoda, vy?ka znaku 14,2mm.


Hodiny na desce


Testování hodin na desce


Hodiny zabudované do krabi?ky od disket


Hodiny spolu s adaptérem 5V.


Video - Test první pokusné verze s ATmega16


Video - Test druhé pokusné verze s ATmega16, p?idán odpo?et (bomba)


Video - Test hodin t?etí verze, upravenych pro ATmega8A / ATmega8L. Je?tě zde chybí volba více re?im? alarmu a potla?ení nul na za?átku.


Video - Test nově p?idanych funkcí - automaticky letní a zimní ?as, p?estupné roky.



P?idáno: 21. 4. 2012
zpět na úvodní stránku
手机捕鱼游戏