Hodiny, Teploměr, Vlhkoměr - Hodiny 2012 Publikované: 20.03.2013, Kategória: Mikroprocesory www.svetelektro.com Tyto "kapesní" hodiny s rozměry 50x6x5cm a váhou 1,4kg jsou mým dalším dílem do sbírky elektronických udělátek. Hlavní požadavky byly velké displeje, přehlednost, přesnost měření, záznam teplot.
Základní funkce a vlastnosti: ● ● ● ● ●
● ● ●
Hodiny s velkým displejem 38mm, které běží na RTC DS3231, s automatickou změnu letního/zimního času Alarm s několika druhy výstupu (piezo, optočlen, wav player), a nastavení na jednotlivé dny v týdnu Teplota In - DS18B20 s přesností ±0,5°C Teplota a Vlhkost Out - SHT71 s přesností ±3%RH a ±0,4°C. Zaznamenávání Min/Max Out teploty + času, kdy byla dosažena. Před půlnocí uložení této teploty do EEprom pro pozdější zobrazení (kterýkoli den v roce) Veškeré nastavení v menu přes 4 tlačítka nebo pohodlněji univ. dálkovým ovladačem na protokolu Philips RC-5 Zobrazení na postranních displejích lze nastavit (Teplota Out, In, Vlhkost Out, Datum) Wav player - přehrává každou celou hodinu gong (1-12x), na výběr ze 2 zvuků gongu. Při alarmu lze nastavit přehrání 2minut písničky z microSD karty.
Celé hodiny jsou, po mechanické stránce, částečně navrženy pro libovolného rozmístění displejů a přizpůsobení mechanické konstrukce potřebám a dovednostem konstruktéra. Obsahují desku ovládání, kde je i zdroj a wav player, k té je přímo připojena deska zobrazení času. A pak následují 2 identické desky pro zobrazení ostatních údajů (teplot, vlhkosti, datumu).
Popis ovládání Po zapnutí hodin se zobrazí na displejích: PAJA HodinY 1.0 (1.0 - verze sw) a proběhlo-li načtení čidla DS18B20 v pořádku, tak pípne piezo. Potom následuje samotný běh hodin, kdy každou 0,5s dojde k přerušení od RTC, procesor si načte čas a vyšle ho na displej. Každou celou sekundu blikne dvojtečkami, pak následuje porovnávání co má zobrazit na malých displejích (Teplotu Out, In, vlhkost, datum) a podle toho načítá data a zobrazuje. Standardně je nastaveno na levém displeji venkovní teplota a na pravém vlhkost. Dále každou sekundu kontroluje zda má povolen gong a nastala celá hodina (přesněji zapíná wav player v 59min 58sec a přičte si hodinu, kvůli zpožděnému náběhu přehrávače). Pak v 23hod 59min 45sec ukládá min, max teploty a časy teplot do eeprom 24C512. Tlač. 1 vstup do menu nastavení Tlač. 2 zobrazí minimální (Lo) out teplotu, čas a datum / nebo slouží jako - při pohybu v menu Tlač. 3 zobrazí maximální (Hi) out teplotu, čas a datum / nebo slouží jako + při pohybu v menu Tlač. 4 zobrazí na 3s na levém displeji in teplotu / nebo slouží jako OK potvrzení v menu K ovládání je možno použít i dálkový ovladač na protokolu Philips RC-5. Použil jsem univerzální DO z Kauflandu, po dlouhém testování jsem skončil na kódu 0026 (viz. manuál DO). Na obrázku je popis jednotlivých tlačítek DO. Menu a nastavení Rozkreslení struktury menu hodin a možné kroky.
● ●
●
● ●
SEt - zobrazí se spolu s pípnutím na cca 1s, pak skočí na další položku old tEPLot Y - OK - na pravém displeji se zvolí datum (dd:mm), OK, zobrazí se na 3s Lo teplota, čas a datum, pak Hi teplota, čas. Poté skočí zpátky na výběr datumu. Z této nabídky je možné dostat se jen vyskočením z menu (stiskem tl. menu, do menu, off). dISP L - OK - zde se vybere jedna ze 4 možností zobrazení na levém displeji (out tEP, in tEP, out rh, dAt) - teplota venkovní, vnitřní, vlhkost, datum dISP P - OK - zde se vybere jedna ze 4 možností zobrazení na pravém displeji (out tEP, in tEP, out rh, dAt) CAS - OK - CAS hh:mm:00 - kde se namísto hh:mm tlačítky - a + nastaví skutečný čas (hodiny:minuty). V okamžiku přičtení
● ● ● ●
minuty se vynulují sekundy a čas se okamžitě uloží do RTC, který od této chvíle běží s novým časem. dAtE - OK - dd:mm:00 - kde se nastaví den a měsíc - OK - dd:mm:00 20rr - a pak i rok (2000-2099) LEZi - OK - LEZi Ano - povolena změna letního/zimního času - LEZi NE - zakázána změna GonG - OK - GonG A1 - gong 1, GonG A2 - gong 2, GonG NE - gong zakázán ALArnn - OK - na levém displeji se nastaví který den má být alarm aktivní (PonE - Pondělí-Neděle=vždy, nE - Neděle, Po Pondělí, ... , PoPa - Pondělí-Pátek, SonE - Sobota-Neděle )
- na pravém displeji se nastaví druh alarmu (nE 0 - žádný-zakázán, Pi 1 - piezo výstup, Pio2 - Piezo+sepne optočlen, hr 3 přehraje 2min písničky z wav playeru, hro4 - hraj wav+opto, o 5 - sepne jen optočlen). Hodiny jsem dal do užívání laikům (rodině), proto bylo nutné vytvořit jednoduchý manuál, pro jejich seznámení s chodem a funkcemi hodin.
Program Osazený procesor Atmega32 je zaplněný asi ze 3/4 a z vývodů zůstal volný jenom jeden. Vytvoření a odladění sw dalo (jak jsem čekal) nejvíc práce na hodinách. Raději nepočítám ty stovky hodin co jsem u toho proseděl ... Hodiny běží na kódu poskládaném v Bascomu (kód má 1800 řádek). V současné době nemám v plánu zveřejňovat celý zdroják pro free použití. Jednak mě to stálo hromadu úsilí to dát do konečné podoby a pak bych si chtěl nechat ještě nějaký čas na testování, sledování v provozu a případné doladění. Do světa pustím očesanou verzi a to pouze přeložený HEX soubor. V této verzi nebude funkční komunikace s eeprom, wav player a na disleji se po spuštění zobrazí "PAJA HodinY L 1.0" Download: Hodiny 2012 - SW light 1.0 , Nastavení Fuses : High=0xD9, Low=0x7D
Spotřeba Napájení 9-12V DC - šero "tma": 0,06A / světlo-max : 0,7A Spotřeba financí ... materiál na výrobu (součástky, DPS, krabice, barva) po dlouhém sčítání ... asi 2700kč A spotřeba času - nepočítaně, realizace hodin začala v listopadu 2012 a dokončení začátkem února 2013. HW byl až na malé změny a úpravy v ovládací části hotový za cca 1-2 týdny, pak následovaly stovky hodin psaní a ladění SW a nakonec si vyrobit na míru krabici - cca týden.
Ovládání, zdroj, wav player Funkce: Srdcem hodin je procesor ATmega32 v SMD provedení, který ovládá všechny další části. Jako RTC jsem použil DS3231, který nepotřebuje externí krystal, má již v sobě integrovaný přesný TCXO krystal s přesností ±2ppm v rozsahu 0°C do +40°C. Obsahuje také kalendář s kompenzací přestupných roků, počtu dnů v měsíci, 2 alarmy, ... já jej však využívám jen na čtení času a datumu každou 0,5sekundu. A samozřejmostí je záložní 3V baterka, které udrží RTC v chodu při výpadku napájení. Na společné I2C sběrnici s RTC běží i eeprom paměť 24C512, která slouží k záznamu minimální a maximální venkovní teploty a času (HH:MM). Hodiny sledují během dne teploty, zaznamenávají si min a max (spolu s časem). Minimální teplotu si procesor zapamatuje hned, ale maximální je potřeba (kvůli teplotním výkyvům a eliminaci chybného načtení) uložit až po 3 stejných měřeních - tedy ustálené teplotě. Proto může být na displeji současná teplota vyšší než je v paměti uložená Hi teplota. Každý den se před půlnocí uloží do eeprom min, max teplota a čas konkrétního dne. V eeprom paměti je pak možno dohledat teplotu kteréhokoli dne v roce (pokud již byla uložena). Následující rok se teploty přepisují. Na měření teplot slouží jako vnitřní čidlo obvod DS18B20 s přesností ±0,5°C, jako venkovní teplota a vlhkost čidlo SHT71 s přesností ±3%RH a ±0,4°C (nejdražší součástka hodin). U SHT71 je připojen pull-up odpor R7 10k, vyskytly se ovšem problémy s načítáním dat na pinu procesoru, kde je čidlo připojeno, nakonec bylo řešením zmenšení hodnoty odporu přibližně na polovičku. Svoji roli hrálo určitě i 10m dlouhé vedení k čidlu. Hodiny mají i výstup přes optočlen, který je aktivován (v závislosti na nastavení v menu) při alarmu, může se tak v určitou dobu ovládat další zařízení. Jako bonus jsem do hodin integroval Wav player mono. Na microSD kartě mám uloženy 2 druhy zvuků gongu (odbíjení hodin) a pro budík jednu písničku (lze použít libovolnou, min. 2minuty délky), která se může přehrávat při alarmu jako budík. Jelikož bylo nad moje síly integrovat přehrávač do hlavního procesoru, zvolil jsem nouzové řešení. Procesor sepne napájení pro přehrávač, stejně tak i pro zesilovač LM386 a po pauze přes relé připojí i reproduktor (soft-start , zabrání tak lupancům při zapnutí přehrávače). Dále může ještě procesor skočit na další skladbu přemostěním tlačítka Next. Je to sice komplikovanější
řešení, ale hlavní procesor jen aktivuje příslušné výstupní piny a už se nemusí o nic dalšího starat, přehrávač jede sám. Jelikož jsou použité LED displeje, tak jsem integroval i regulaci jejich jasu přes PWM, o snímání intenzity osvětlení se stará fotoodpor na desce displeje času. Hodiny se dají ovládat pomocí 4 tlačítek v horní části desky, nebo pohodlněji přes univerzální dálkové ovládání. Konstrukce: Většina součástek je v SMD, takže stavba vyžaduje nějaké zkušenosti a pevnou ruku. Zvláště při pájení procesoru. Na desce je několik drátových propojek, místo těch nejkratších (tlustá červená čára) lze osadit nulové SMD odpory vel. 1206. Použil jsem sirénku KPE242 (průměr 13,7mm, RM 7,62mm), ale na DPS je místo pro osazení třeba pezosirénou KPE212A (na DPS jsou označeny pady jako piezo a +5V). Napájení je řešeno přes napájecí konektor zašroubovaný do DPS, tak aby směřoval do zadní části hodin (směrem ven). Stejně tak jsou přiletovány i ostatní konektory ISP, SHT71, DS18B20 a opto. Diodový můstek se vejde i na stojato nebo je možnost jej položit na DPS. Je třeba ještě dodělat chladič (AL plech 5mm), který bude začínat vlevo u diod. můstku a může klidně přesahovat doprava ven přes DPS. Protože max. odběr hodin dosahoval až 0,7A, je vhodné napájet hodiny menším napětím, třeba 9V/1A. Konstrukční uspořádání by mělo být patrné i z fotek.
Zde je návrh plošného spoje o rozměrech 220 x 50 mm
Seznam použitých součástek - Ovládání + zdroj + wav player: C1,C2 C3-C6 C10-C13 C14 C7,C8 C9 C17 C15 C16 C19 C20
-
22p 100n 100n 100n 470M/25V 220M/25V 220M/16V 2M2/50V 47n 1n 100M/16V
SMD vel. 0805 SMD vel. 0805 SMD vel. 1206
IO1 IO2 IO3 IO4 IO5 IO6 IO7 IO8 IO9
-
ATmega32L-8AU DS3231 24C512 78S05 DS18B20 SHT71 LF33CDT ATtiny85 LM386
T1-T3 T4,T5 T6 D1 M1 L1 OK1 Q1
-
BC817 IRFD9120 BC846 1N4148 B250C8000 10uH LTV357 8MHz
SOT-23
P1 R1-3,9-12 R4 R13 R14 R15
-
10k 4k7 10k 10 100 330
PT6V - ležatý SMD vel. 1206 SMD vel. 1206 SMD vel. 1206 SMD vel. 1206 SMD vel. 1206
1x 7x 5x 1x 1x 1x
REL1 REP1
- RELSIA05 - KPE242 (KPE212A)
(LD-BZEG-1205 - TME)
1x 1x
SMD vel. 1206 SMD vel. 1206
TQFP44 SO16L SO-08 + (SK09-20SA220 - TME) + PSH02-03P + PFH02-03 + PSH02-04P + PFH02-04 SOIC08 SO08
SOT-23 SOD80 5mm
2x 4x 4x 1x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 2x 1x 1x 1x 1x 1x 1x
Repro
- 50CP08K
8ohm/0,3W
1x
SD1 Next SW1-4
- MICROSD - P-B1720 - P-TACTN68-F
(MCC-SDMICRO/1 - TME)
1x 1x 4x
CON1,2 ISP1 K2 AC,K1 BAT1 Konektor
-
MLW10 MLW06G PSH02-02P ARK500/2 SN2032 SIL8PZ
(TACTA-68N-F - TME)
+ PFH02-02 držák + bat 2032 -3V precizní dutin. lišta
2x 1x 1x 2x 1x 4x
Download: Návrh DPS a SCH - Ovládání pro Eagle (od verze 5.6). Obrázek pl. spoje PNG - Ovládání v rozlišení 600x600 DPI
Displej - čas Funkce: Jedná se prakticky jen o desku zobrazovačů, kde jsou displeje (4x38mm a 2x25mm), LED, posuvné registry, fotoodpor a přijímač DO TSOP31236 Konstrukce: Opět několik drátových propojek, některé lze nahradit nulovými odpory SMD vel. 1206. IO7 je ohnut o 90, aby směřovala jeho přijímací část před hodiny. Pod trimrem je možno vyvrtat díru a regulovat tak jas malým šroubováčkem zezadu. Odpory jsou v SMD i THT, ty je nutné osadit ze strany spojů, stejně tak T1 a precizní konektor k propojení s deskou ovládání. V TME se mi nepodařilo sehnat stejný typ displejů, 38mm jsou od jiného výrobce. Mají ovšem horší zpracování led segmentů, ale hlavně jinou velikost a krátké vývody. Bylo proto nutné u všech 25mm displejů odstřihnout rohové výčnělky, a tak posadit malé displeje přímo na DPS (jinak by byly v vzduchu). Displeje 38mm naopak vyvýšit, aby vrchní část lícovala s 25mm displeji.
Zde je návrh plošného spoje o rozměrech 220 x 50 mm.
Seznam použitých součástek - Displej čas: C1-C6 C7
- 100n - 4M7/10V
SMD vel. 1206 SMD vel. B - tantal
6x 1x
D1,D2 D3,D4
- LED 5mm - zelena - LED 3mm - zelena
(LED5-G-LC - TME) (LED3-G-LC - TME)
2x 2x
DIS1-4 DIS5,6
- LED 7-segment 38mm - LED 7-segment 25mm
(LD-S150G-C - TME) (SA10-21GWA - TME)
4x 2x
IO1-6 IO7
- 74HC595D - TSOP31236
SO16 (SFH506-36)
6x 1x
RFOTO T1 P1 Konektor
-
PT6V - ležatý precizní dutin. lišta
1x 1x 1x 4x
VT43N1 BD140 5k SIL8PZ
R1,2,6,7,9,10,14,15,17,18,22,23,25,26,30,31,33,34,38,39,41,42,43,46,47 - 68 SMD vel. 1206 25x R3-5,11-13,19-21,27-19,35-37,44,45 - 68 17x R16 - 150 1x R32 - 220 1x R50 - 220 SMD vel. 1206 1x R40 - 390 1x R48 - 390 SMD vel. 1206 1x R8,24 - 470 SMD vel. 1206 2x R49 - 1k SMD vel. 1206 1x Download:
Návrh DPS a SCH - Displej čas pro Eagle (od verze 5.6). Obrázek pl. spoje PNG - Displej čas v rozlišení 600x600 DPI
Displej - malý Funkce: Jedná se o 2 identické desky (proto vše vyrobit a nakoupit 2x !). Stejně jako u desky času je i tato jen zobrazovač. Obsahuje 4, 25mm displeje. Navíc ještě 5, 7mm displeje pro zobrazení dalších stavů jako in, out (vlevo nahoře) a pak ještě vlhkost rh + z LED diod složený znak % Vše se ovládá přes posuvné registry a napájení přes PWM a T5. Na DPS jsou 2 vývody označené N.C., ty nemají reálný využití. Jedná se pouze o nevyužité vývody pos. registru, jelikož jsem v době návrhu hw nevěděl co všechno v hodinách bude. Konstrukce: Většina součástek je taktéž v SMD + několik propojek. U displejů jsem taky zastřihával rohové výčnělky, aby si sedly přímo na DPS. V návrhu je zakreslen konektor MLW10-90°, ale nakonec jsem použil AWLP10, do kterého se po naletování přímo zacvakne kabel. Výhoda je jeho malá velikost.
Zde je návrh plošného spoje o rozměrech 133 x 50 mm.
Seznam použitých součástek - Displej malý: - pro 2 desky všechno 2x ! C1-C5 CON1 D1,D2 D3-D5 DIS1-4 DIS5-9 IO1-5
-
100n AWLP10 LED 3mm - zelena LED 2x5mm - zelena LED 7-segment 25mm LED 7-segment 7mm 74HC595D
SMD vel. 1206 (AWLP-10 - TME) (LED3-G-LC - TME) (LL-254GD - TME) (SA10-21GWA - TME) (LD-S028G-C - TME) SO16
R1,2,6,7,9,10,14,15,17,18,22,23,27-29 - 68 SMD R3-5,11-13,19-21,25,26,30,31 - 68 R41 - 82 SMD R37,38,40 - 120 SMD R39 - 150 SMD R36 - 180 SMD R33-35 - 270 SMD R8,16,24 - 390 R32 - 390 SMD R42-45 - 4k7 SMD R46 - 1k SMD T1-T4 T5
- BC846 - BD140
vel. 1206
vel. vel. vel. vel. vel.
1206 1206 1206 1206 1206
vel. 1206 vel. 0805 vel. 1206
SOT-23
5x 1x 2x 3x 4x 5x 5x
15x 13x 1x 3x 1x 1x 3x 3x 1x 4x 1x 4x 1x
Download: Návrh DPS a SCH - Displej malý pro Eagle (od verze 5.6). Obrázek pl. spoje PNG - Displej malý v rozlišení 600x600 DPI
Konstrukční uspořádání + krabice Krabice: je vyrobená na míru z pozinkovaného plechu tloušťky 0,8mm. Nechal jsem si u klempíře ustřihnout plech 54x1200mm a ohnout 6mm hranu o 90°. A plech na záda 508x60mm. Doma jsem si pak vystříhal výkroje v rozích, naohýbal do tvaru finální krabice a všechno zaletoval cínem a velkou pájkou (s pomocí plynového hořáku, pro lepší prohřátí plechu). Finální krabice má tak rozměry 510x62x48mm (d,v,š). Obrázek plechů a rozměrů v PNG - výkres. Spoje jsem přebrousil, některé ještě překytoval a po navrtání děr šla na řadu barva. Základ Formex (na lehké kovy) a pak sprejem několik vrstev černé. Nechal jsem si uříznou kouřové plexisklo (505x59mm - míry jsem bral až po vyrobení krabice) tloušťky 3mm, ale pro moje účely bylo moc průsvitné, tak jsem ho nechal ještě přelepit tmavou fólií na tónování autoskel. Teprve potom byla průhlednost akorát. Jednotlivé DPS jsou přišroubovány na 2ks duralových vinglů 15x15mm. Jejich rozměry, výřezy a vrtání děr jsou ke stažení v PNG. Všechny díry jsou vrtané 2,5mm a jsou v nich vytočeny závity M3. Mezi DPS a vinglíky jsou plastové podložky tloušťky 1mm, aby se nedotýkaly součástky nebo vývody vinglů.
Mezi DPS ovládání a displejem čas jsou distanční sloupky M3 (díry se závitem z obou stran) délky 20mm - 6ks. Pak je osazeno na šroubcích, které drží malé displeje 8ks distanček délky 25mm, které drží zadní víko hodin. Hodiny jsou v krabičce uchycené pomocí 6ks šroubků (3 dole, 3 nahoře), které drží v závitech vinglů. Výsledná krabička byla trošku větší, proto jsem musel vymezit vůli nalepením pásků plastů na horní část vinglů (viz. fotky). Nakonec jsem dolů nalepil 4 gumové nožičky, výrobní štítek, popisy tlačítek a napájecího konektoru. Download: Obrázek konstrukčních vinglů v PNG - výkres vrtání a výřezů. Obrázek plechů a rozměrů v PNG - výkres. Obrázek štítků v PNG - 600x600 DPI
Fotky
Autor článku: PaJa-trb, http://paja-trb.cz