PaJa > Elektronika > Konstrukce > Hodiny paja@paja-trb.cz


25. 3.12 - verze SW 1.1 - oprava alarmu (při současném zobrazování datumu docházelo k přepsání časových údajů což vyrušilo alarm)
13. 4.12 - verze SW 1.2 - oprava zobrazování mínusu záporné teploty, přidáno rychlé vypnutí/zapnutí alarmu pomocí DO tl.13 (MUTE)

hodiny_foto_2 Pár let mě sloužily starší hodiny s červeným LED displejem 14,2mm. Používal jsem je jen pro zobrazení času, budík nefungoval nejlíp a po výpadku se většinou zasekl a hulákal dokud ho někdo nevypnul ... nejen proto jsem se rozhodl pro stavbu vlastních hodin.

Hodiny jsou řízené RTC obvodem DS1307 (zálohovaný baterkou), čas je zobrazován na displeji 38mm a sekundy na 60ti LEDkách v kruhu.
LED i displej jsou dvoubarevné (Red/Green). Jas LED i displeje je řízen pomocí PWM dle okolního osvětlení (snímá fotoodpor).
Dále je v hodinách vestavěné teplotní čidlo DS18B20 pro In teplotu a konektor pro připojení druhého čidla pro Out teplotu.
Nastavení parametrů (datum, čas, alarm, barev a zobrazení, teplot, ... ) lze provádět pomocí 4 tlačítek na zadní straně hodin, nebo snadněji přes univerzální dálkové ovládání.
Hodiny obsahují i 2 výstupy přes optočlen, které spínají při aktivaci alarmu.
Hodiny umí samy bez zásahu změnit čas mezi letním a zimním (lze povolit nebo zakázat) a to až do roku 2025.

Funkce:
O vše se stará procesor ATmega168. Po zapnutí napájení zobrazí na displeji "PAJA" pak "Ho1.0" (HOdiny verze 1.0). Poté v nekonečné smyčce testuje tlačítka a IR DO a čeká na přerušení od DS1307, které každou sekundu bliká 2 sekundovými LED a zároveň přerušuje chod programu k přečtení dat z DS1307, jejich zpracování a vyslání na displej a LED.
Displej je ovládaný přes posuvné registry 74HC595 a spol. anody jsou přes tranzistory BD140 ovládány procesorem pomocí PWM regulace. Obdobně je tomu i u 60-ti sekundových LED.
O snímání intenzity okolního osvětlení se stará fotoodpor, jehož nastavení lze doladit trimrem.
Zvukový výstup REP1 je přes tranzistor spínán při potvrzení nastavení v menu (krátkým pípnutím) a pak při alarmu delším opakujícím pípáním.
Hodiny je možno napájet AC i DC 7-12V. Použil jsem můstkový usměrňovač do 8A, o stabilizaci na 5V se stará 78S05 (do 2A) - oboje součástky jsou trochu předimenzované, ale raději mám rezervu.
Časem se ukázalo použití procesoru ATmega168 jako nedostačující - dokázal jsem ho kompletně zaplnit, a to bych ještě nějakou drobnost rád přidělal ...
Krátká ukázka běhu hodin každou čtvrt minutu se zobrazí datum (den:měsíc), pak jsem přepnul LEDky na inverzní režim a zpět do druhého řežimu, kdy je každá 5-tá LED zobrazená opačnou barvou. Potom menu, zobrazí se krátce SEt, změnil jsem barvu dISPleje na grEEn (zelenou), LEDky jsem dal přes den (6 až 18hod) red a noc green. Projel jsem menu s mezi-zastávkou zakázání změny času a ven z menu. Zobrazení venkovní o a vnitřní i teploty.

Nastavení hodin:
hodiny_menu Nastavení lze provádět pomocí tlačítek na zadní straně hodin nebo komfortněji pomocí univerzálního dálkového ovládání.
TL.3 - Menu (vstup i výstup)
TL.2 - OK potvrzení navolených hodnot
TL.1 - plus +
TL.4 - mínus -
Jinak lze v režimu hodin stiskem tlač.2 zobrazit na 2s Out teplotu a tlač. 1 In teplotu (v případě nastavení zobrazení teplot ji tímto zruší a přepne na hodiny)

Dálkové ovládání jsem použil kupované univerzální DO SilverCrest nastavené na kód 5000 (nějaký satelit). Protokol je podobný Philips RC-5, Adresa je 10 (nevyužívá se) a jednotlivé kódy

1 tl.1                       L.dIn      (1 sekundová LED, kde je zvýrazněná 0,15,30,45 LED opačnou barvou)
2 tl.2                       Ld.In      (1 sekundová LED, kde je zvýrazněná každá pátá LED opačnou barvou)
3 tl.3                       L.d.In.    (inverz - svítí 59 LED zvolenou barvou a běhá jedna zhasnutá)
4 tl.4                       každou 15.sekundu zobraz datum (den : měsíc)     - lze měnit jen přes DO
5 tl.5                       na 0,5s invertuje výstupy Opto1 a 2
7 tl.7                       teplota Out
8 tl.8                       teplota Oboj (In/out)
9 tl.9                       teplota In
12 standby (off)             ukončení sirény alarmu nebo ukončení menu
13 mute			     rychlé vypnutí/zapnutí alarmu
16 volume +      doprava     
17 volume -      doleva
32 program +     nahoru
33 program -     dolu
82 menu                      vstup a výstup do menu
87 OK                        potvrzovací tlačítko v menu
Popis menu:
Po vyvolání menu se na chvilku zobrazí SEt a pak skočí na první položku. Mezi položkami lze přecházet (+ -), teprve po stisknutí OK se vstoupí do jednotlivých podmenu V případě číselného nastavení se nejdřív zobrazí poslední uložený údaj

Konstrukce:
DPS jsem odzačátku navrhoval do krabice obyčejných ručičkových hodin (z Kauflandu asi za stovku), tomu je přizpůsobeno i rozmístění některých součástek a konektorů.
DPS je sice jednostranná (i tak to byl docela mazec takovej kousek vyrobit) a její průměr je 220mm. Ale má větší množství drátových propojek.
V první řadě bylo nutné zkontrolovat DPS na případné vady z výroby a zkraty. Pak osadit všechny drátové propojky, část propojek se dá elegantně nahradit nulovými SMD odpory vel. 1206 (u posuvných reg. a displejů). Pak bylo potřeba osadit věškerou SMD drobotinu a další drobné součástky.
Po osazení displejů jsem osadil 4 LED (0, 15, 30, 45s) do stejné výšky jako displeje. Pak jsem si nastrkal do DPS vždy 14 LED a pomocí "šablony" z kousku plastu vytvaroval a dal všechny do stejné výšky (otočil jsem DPS LEDkama na rovnej stůl).
Kondenzátory, můstek, stabilizátor, přijímač DO se osadí naležato, aby nic nepřevyšovalo displeje. Stabilizátor se na chladiči prakticky vůbec nezahřeje, jen při inverzním rozsvícení a plném jasu LED začíná hřát. K odvodu tepla taky napomáhá rozlitá měď (Gnd) z druhé strany DPS.
Před osazením svorkovnic a konektorů je dobré si plošky předem pocínovat. Piezosirénku jsem nakonec umístil taky ze strany spojů (vzadu je oproti němu díra v krabici).

Spotřeba:
Při napájení 12V DC, zatmaveném 2mm plexiskle a červeném displeji a LED:
"šero" - bez přímého slunečního světla - 0,06A
posvícení lampou na čidlo - 0,16A
inverze červené LED (59 svítí) a maximální jas - 0,6A
zelený displej a LED mají nepatrně menší spotřebu

Program:
Po nastavení vyšle procesor do DS1307 nastavení výstupu SQWE na 1Hz (tento výstup pak ovládá sekundovou dvojtečku a externí přerušení).
Dále se na displeji zobrazí "PAJA" po 0,5s "Hod.1" (Hodiny verze 1), načtou se informace o čidlech teploty DS18B20 a dna displeji doplní des. tečky že načtení proběhlo v pořádku.
Program povolí všechny přerušení a přejde do nekonečné smyčky testování tlačítek, infra DO, přechodu letní/zimní čas, teploměru a sirény alarmu.
Tento chod je každou sekundu přerušen DS1307 (sekundove_preruseni), ze které se přečtou data o čase a datumu, převedou z BCD na DEC. Zavolá se podprogram osvětlení , led , je-li zakázán teploměr tak zobraz hodiny nebo v přípdě povolení zobrazení datumu, každou 15.sekundu, zobraz datum (den:měsíc) a je-li povolen alarm1 tak se podívej jestli nenastal jeho čas.
Při čtení a zobrazení teplot je zakázáno externí přerušení od DS1307 (aby se nenarušovalo čtení a zobrazování teploty). Stejně tak i při aktivním zvukovém alarmu.
Hodiny: mpřevede _min a _hod na BCD a rozdělí na 2 jednociferné čísla. Z tabulky pak vybere příslušnou hodnotu zobrazených segmentů a vyšle na displej.
Alarm1proved: Porovná shodu Alarm1_day s Weekday (dnem v týdnu), shoduje-li se tak porovnej shodu hodin, minut, sekund a druhu alarmu - ten pak vykonej.
Menu: lze vyvolat tlačítkem 3 nemo z DO kódem 82. V menu je taktéž zakázáno externí přerušení. Zobrazí se krátce SEt, pípne piezo a čeká na uvolnění tlačítka nebo povelu z DO. Poté v nekonečné smyčce testuje a upravuje hodnotu reg. menu + nebo - a taky při stisku tlač.3 nebo DO okamžitě opouští menu, aktivuje ext. přerušení a vrací se na hodiny.
Infra_do: přečte data z do (protokol RC-5), případný kód povelu se zapisuje do command.
Osvětlení: přečtě hodnotu z fotoodporu (10bit.), upraví a převede na 8bit. a záměrně sníží hodotu pro osvětlení LED (mají větší intenzitu než displeje). Dále dle nastavení testuje jakou barvu má mít displej (i podle hodin), LED, a dle nastavení LEdInverz zvýrazňuje opačnou barvou každou 15.tou sekundu nebo každou 5 sekundu.
Led: v závislosti na nastavení LEdInverz a počtu sekund odesílá na pos. registry data o rozsvícených a zhasnutých LED.
Cti_teplotu: čte teploty z čidel DS18B20, v případě chyby zobrazí Err1 nebo 2. Jinak dle nastavení teploměru načtenou hodnotu převede ...
Prepocitej: načtenou hodnotu z čidel přepočítej na DESítky, JEDnotky, TEC-desetiny a znaménko Tep_nula (10 je +, 11 je -).
Zobraz: načte z tabulky a zobrazí data o teplotě. Dle nastavení teploměru zobrazí o nebo i před teplotou. Mínus se zobrazuje na segmentu a (nahoře, aby se nehádalo s údajem Out nebo In)
Letni_zimni_cas: je-li povolen a je 3 hodina ráno, tak zkontroluj měsíc a zda už nebyl převod proveden (Leto_zima=3 nebo 10). Jestli nebyl, tak dle shody roku a příslušného dne (poslední neděle v měsíci) připočti nebo odečti hodinu a nastav informaci o změně času (Leto_zima=3 nebo 10).
Displej: má za úkol jen vyslat data na posuvné registry.
Program hodin pro ATmega168 - Soubory BIN, HEX a BAS (zdroják z BASCOM).

Schéma zapojení Hodin (zmenšené)
Náhled na schéma hodin

Zde je návrh plošného spoje o rozměrech 220 x 220 mm.
Návrh plošného spoje s rozmístěním součástek Návrh plošného spoje s rozmístěním součástek Návrh plošného spoje hodin

Seznam použitých součástek :
R1-R60                     - 330              SMD vel. 1206                                     60x
R61,62,66,67,69,70,74,75,
 77,78,82,83,85,86,90,91   - 180              SMD vel. 1206                                     16x
R63-65,71-73,79-81,87-89   - 180                                                                12x
R68,76,84,92,94            - 470              SMD vel. 1206                                      5x
R93                        - 470 
R95-R101                   - 10k              SMD vel. 1206         R96-R98 neosazovat           6x
R102-R104                  - 4k7              SMD vel. 1206                                      3x
R105                       - 220              SMD vel. 1206 
R106-R107                  - 330              SMD vel. 1206                                      2x
R108-R111                  - 1k               SMD vel. 1206                                      4x
P1                         - 5k               TRIMR PT-6V 
RFOTO                      - VT43N1           FOTO odpor

C1-13,C16,C17              - 100n             SMD vel. 1206                                     15x
C14, C15                   - 470M/25V                                                            2x
C18                        - 220M/25V  
C19                        - 4M7/10V          SMD tantal. 

D1-D60,DT1,DT2             - L-59EWG (LED 5mm Red/Green SC)                                      62x
DISP1-4                    - SBA15-11EGWA (LED displej 38mm Red/Green SA)                         4x
T1-T4                      - BD140                                                                4x
T5                         - BC817   
M1                         - B250C8000      

IO1-8, 10-13               - 74HC595D          SMD - SO16                                        12x
IO9                        - ATMEGA168-20AU    TQFP32
IO14                       - 78S05             + chladič V4330N
IO15                       - DS1307            SMD - SO8
IO16, IO17                 - PC815                                                                2x  
IO18, IO19                 - DS18B20           + PSH02-03P + PFH02-03                             2x
IO20                       - SFH506   
Q1                         - 32,768kHz

SW1-SW4                    - P-B1720                                                              4x
BAT                        - CR2032 (3V)       + pouzdro např. BH2032 
REP1                       - KPE212A           (jakákoli piezosirénka s vnitřním generátorem pracující při 5V)
K1                         - ARK500/2 
K2, K3                     - PSH02-02P   
ISP1                       - MLW06G  nebo  S2G3 (řadová lišta 2x3 piny)
drátové propojky (mosty)
Download Download:
Návrh DPS a SCH pro Eagle (od verze 5.6).
Obrázek pl. spoje PNG v rozlišení 600x600 DPI
Program hodin pro ATmega168 - Soubory BIN, HEX a BAS (zdroják z BASCOM).
Nastavení Fuses: Low=0xE2, High=0xDC, Extended=0xF9 - tedy jede na tovární nastavení interní RC-8MHz, CKDIV8 nezatrženo



hodiny_foto_dps hodiny_foto_7 hodiny_foto_1 hodiny_foto_8 hodiny_foto_5 hodiny_foto_6 hodiny_foto_4 hodiny_foto_3


ZPĚT PaJa © PaJa-trb 2011- E-mail
VPŘED