úterý 28. července 2009

Binární hodiny

Nedávno mě požádal kamarád, abych mu vyrobil hodiny, co budou ukazovat čas v jeho binární hodnotě. Vždyť koukat na normální hodiny je už nuda. I ty moje, co jdou pozpátku jsou už okoukané... Ale binární... to by bylo o něčem jiném...
Nejdřív se mi do práce nechtělo, nikdy nedělám rád něco na zakázku. Ale po čase jsem si řekl, že by to mohlo být zajímavé a pustil jsem se do návrhu.
Nemám rád řízení blbostí procesory, takže jsem sáhl k čisté logice čítačů a hradel a hodiny navrhl s integrovanými obvody řady 74xx. Protože jsem o digitální technice nastudoval dosud jen dvě tenké knížky, je mé zapojení až učebnicově primitivní. Ale co je jednoduché to funguje... Na začátku je oscilátor s běžně používaným krystalem 32768 Hz za ním dělička dvě na patnáctou a získaný kmitočet 1Hz pokračuje dál do čítačů vteřin minut a hodin. Abych docílil dělení šedesáti u čítače vteřin a minut, vyvedl jsem signál z čítače přes součtové hradlo do vstupu nulování čítače. Prostě naposledy zobrazí 59 a když začne chtít zobrazit 60, tak ho hradlo vynuluje a zároveň pošle impuls, který svou sestupnou hranou přičte jednu minutu na čítači minut... U hodin je to obdobné jen se nulují při hodnotě 24... Kvůli LED diodám obsahuje zapojení ještě invertory, protože obvody řady 74LS dokážou budit LED jen v logické nule. Nakonec zapojení vyšlo na 12 integrovaných 14 nožičkových obvodů, takže se dala vytvořit celkem úhledná deska plošných spojů. Ikdyž abych pravdu řekl, tak náročnější spoj jsem ještě nekreslil. Ze zkušenosti vím, jak tenké spoje dokážu nakreslit a jak daleko od sebe, takže jsem obvody musel umístit 2cm od sebe a vymýšlel jsem, jak spoje vést, aby na desce bylo co nejméně propojek, protože ty paradoxně dají více práce než pájení součástek. Bez propojek se deska neobešla, ale i tak jsem s ní byl velmi spokojen. Vždyť všechno se dělá pro potěšení z práce a čím je to složitější, tím je to lepší...
Těžkou otázkou pro mě bylo vymyslet, jaké použít diody pro zobrazení času a jak je rozmístit... Zaobíral jsem se myšlenkou použít dvoubarevné diody kvůli tomu, aby bylo i v noci vidět, kolik je hodin. V noci totiž není jasné, která dioda svítí, když je jich pět nebo šest v řadě. Jenže jsem potřeboval difuzní dvoubarevné diody se společnou anodou a ty jsem nesehnal...jenom čiré s malým úhlem vyzařování. Z většího úhlu ani není vidět, jaká barva svítí... Nakonec jsem osadil tři řady klasických difúzních LED diod, červenou na hodiny, zelenou na minuty a žlutou na vteřiny. Bylo štěstí, že jsem nesehnal dvoubarevné, protože tohle vypadá naprosto úžasně... Když se hodiny rozběhly, tak jsem na ně vydržel zírat několik minut. Na předním panelu se objevovaly úžasné obrazce z barevných bodů, které se neustále měnily, posouvaly, mizely a opět rozsvěcely...každou vteřinu jiný...celých 24 hodin každou vteřinu jiný obrázek... Vždycky jsem čekal na 59 a byl fascinován tím, jak to funguje...svítí pět diod a pak zhasne a zároveň se rozsvítí nová v dalším řádku a pak znovu dokola 1, 2, 1+2, 4, 4+1, 4+2, 4+1+2, 8 ...
Prostě binární hodiny.

Tak to jsem se zabýval to hezčí stránkou práce a teď přichází na řadu výčet problémů, protože jak víme, všechno má mouchy. Nejprve mi vůbec nefungoval oscilátor, a když začal, tak na úplně špatném kmitočtu... prostě se vykašlal na krystal a kmital si klidně tisíckrát rychleji... Po úporných hodinách práce jsem stále nevěděl, kde je chyba, ale bylo jasné, že hodinový krystal se nejspíš liší od megahertzových krystalů pro které bylo dané zapojení v jedné knize, podle které jsem pracoval, navrženo. Po čtrnácti dnech jsem se vrátil k práci a s lítostí jsem se rozloučil s TTL obvodem a do patice oscilátoru osadil "High speed CMOS" 74HC04 ...No a zapojení se rozběhlo. Poprvé jsem viděl dvě provizorní diody blikat správně. Ještě jsem vzal multimetr a ten ukázal 32,76 kHz...úžasné. Jenže, když jsem pak vše zabudoval do krabičky a zapnul, tak spodní řada diod zběsile blikala, minuty stály a hodiny také... Znovu jsem otevřel knihy, vzal kalkulačku a začal počítat, kde jsem jenom udělal chybu ve volbě součástek... všechno způsobilo moje provizorní zapojení na ruční seřizování času. vazební odpory byly moc velké a hradla a čítače visely se vstupy v hodnotě 1. Odpory jsem zmenšil a nastavování času zjednodušil.
S oscilátorem ale potíže přetrvávaly. Při připojení napájení se krystal nechytne a oscilátor se rozjede, jako by tam nebyl. Pomůže jen dát prst na vývody CMOSu a přitom druhou ruku mít na mínusu. Kmitočet klesne a krystal se chytí... prst dám pryč a pak už to jede hodinu...dvě, den...na vteřinu přesně...

Nakonec stačilo zvětšit odpor překlenující krystal z 2M2 na 4M7 a hodiny se rozbíhají bez chyb.

Schema:



Pár fotek:



23:57:47

23:58:22

23:59:23

23:59:59
Jen pro zajímavost právě vyleptaná deska ještě před vrtáním


Doplnění: Hodiny nechodí přesně. (nepřesnost řádu vteřin týdně) Je třeba přesně dopočítat kondenzátory C1,2 nejlépe podle údajů výrobce, výpočet je uveden v datasheetu konkrétního krystalu.

Úprava schematu: občas se stávalo, že při přičtení jedné hodiny se přičetli hodiny dvě. Zřejmě docházelo k zákmitům na kondenzátoru v nastavovacích tlačítkách. Proto jsem použil trojnásobný spínač, aby dioda a obě tlačítka, přemostěná kondenzátory pro odstranění zákmitů samotného tlačítka, byly zapojeny samostatně a nevznikala nežádoucí vazba či zákmity při přičítání minut a hodin.

5 komentářů:

Anonymní řekl(a)...

Zajímalo by mě, z jaké knížky jsi čerpal. Díky.

Arambajk řekl(a)...

Většina je tady: Matoušek,D.: Číslicová technika, BEN

Žižla řekl(a)...

Super, jen mě zajimalo proč ty binarky maš na fotkách naležato :)
Když je fotim aby poznali druzi čas tak je dam tak jak maji byt (nastojato u tebe) ne? :D ale to je jen takova maličkost.

Arambajk řekl(a)...

Nad tím jsem nikdy nepřemýšlel, prostě krabička byla plochá, tak jsou naležato. Převod z binárního kódu jsem zvyklý vidět jako vodorovnou řadu jedniček a nul, líp se mi to tak odečítá. Co jsou minuty a hodiny je vidět podle barvy:)

Žižla řekl(a)...

tjn :) ale fakt dobrý =)