Domovní monitor 3 - Řídící jednotka
Nejsložitější částí domovního monitoru je řídící jednotka plnící roli moderátora, tedy modulu, který celou komunikaci řídí. Údaje získané z periferií určeným způsobem zpracovává a zobrazuje na displeji.
Umožňuje nastavit teplotní limity, které určují, při jakých teplotách bude spuštěn alarm (překročení horního limitu) a kdy bude vydán zvukový signál (teplota pod spodním limitem), obsahuje vestavěné teplotní čidlo pro měření teploty v místě jednotky, baterií zálohovaný obvod reálného času (RTC) a piezo pro zvukové signály.
Procesor
Mozkem řídící jednotky je 8-bitový jednočipový mikropočítač Microchip PIC18F25K50 v pouzdru DIP28 taktovaný na 20MHz. Velkou výhodou procesorů této architektury je nestránkovaná programová paměť. Nepříjemnosti s přepínáním stránek tedy odpadají a všech 32kB paměti je plnně využitelných pro program. V této aplikaci je z nadstandardních funkcí procesoru využito ještě vestavěné I2C rozhraní pro komunikaci s RTC obvodem a USB port, který zatím pouze zvyšuje možnosti budoucího rozšíření.
Displej
Po dlouhém rozhodování padla volba na alfanumerický OLED displej s 20x2 znaky od Raystar Optronics REC002002AWPP5N00000 s řadičem WS0010. Výška znaků 5,55mm zajišťuje dobrou čitelnost údajů i z větších vzdáleností a průměrná spotřeba 35mA při polovině rozsvícených pixelů přímo vybízí k nasazení v této aplikaci. S procesorem komunikuje 4-bitově.
Obvod reálného času
DS1307 v sobě integruje nejen hodiny, ale také kalendář do roku 2100 včetně dne v týdnu a přestupných roků. To vše je zálohováno malou baterií CR2032, která by měla zajistit běh vnitřních hodin bez vnějšího napájení po dobu cca 10 let. S procesorem komunikuje pomocí I2C.
Teplotní čidlo
S oblibou používám kalibrovaná digitální teplotní čidla DS18B20 komunikující prostřednictvím 1-Wire protokolu. Jeho podpora v procesoru není integrovaná, proto jsem pro komunikaci s čidlem vytvořil jednoduchou knihovnu.
Programování pomocí ICSP
K programování procesoru je trvale vyveden ICSP konektor, který je přístupný i po uzavření krabičky a umožňuje programování za chodu zařízení. Protože je u procesorů řady 18F povoleno na pinu MCLR při programování napětí max 9V, je mezi ICSP konektor a procesor zařazen ještě omezovač napětí v podobě rezistoru R7 a zenerovy diody ZD1. To je nutné pro případ použití programátoru, který umí pouze 13V programovací napětí, jako můj Asix Presto.
Mechanické provedení
Všechny součástky jsou připájeny k jednostranné desce plošných spojů (140 x 70mm), pouze tlačítka jsou na menší destičce, která je o několik milimetrů blíže k přednímu panelu krabičky. Displej je umístěný nad součástkami hlavní DPS, se kterou je propojen pomocí dutinkové lišty na straně displeje a oboustranných kolíků připájených do hlavní DPS. Protože jsou využity jen některé piny, je třeba upravit lištu s oboustrannými kolíky vyjmutím nepotřebných kolíků. Rozmístění součástek je patrné z následujícího obrázku. Motiv DPS je ke stažení zde.
Celý přístroj je vestavěný do nástěnné krabičky KP33 (Z-44). Její zadní stranu lze přišroubovat na zeď a přední na ní poté jednoduše zacvaknout. Krabičku je třeba upravit vytvořením otvorů pro displej, tlačítka, na spodní straně vyvedený programovací konektor ICSP a na levém boku USB.
Program
Po správném osazení a spuštění řídící jednotky se pochopitelně nebude dít vůbec nic. K plné funkčnosti je potřeba naprogramovat mikroprocesor. Přestože plánuji jednotlivé části programu v budoucích dílech popsat, můžete si ho už nyní celý stáhnout. Po zkompilování a náhrání do procesoru bude displej bez připojených periferií zobrazovat množství chybových hlášení a proto se hned v dalším díle podíváme na první modul měřící teplotu kotle a napětí akumulátoru náhradního zdroje.
Seznam součástek
OZNAČENÍ | POČET | NÁZEV | TYP |
IO1 | 1 | 8-bitový mikropočítač v pouzdru DIP28 | PIC18F25K50 |
IO2 | 1 | obvod reálného času (RTC) v pouzdru DIP8 | DS1307 |
IO3 | 1 | digitální teplotní čidlo | DS18B20 |
displej | 1 | OLED 20x2 | REC002002AWPP5N00000 |
R1, R3, R4, R8-R12 | 8 | rezistor | 4k7 |
R7 | 1 | rezistor | 1k2 |
R2, R6 | 2 | rezistor | 10k |
R5 | 1 | rezistor | 1k |
C1 | 1 | elektrolytický kondenzátor | 100u/25V |
C2/1-3, C5, C6 | 5 | keramický kondenzátor | 100n |
C3, C4 | 2 | keramický kondenzátor | 22p |
C7 | 1 | keramický kondenzátor | 220n |
XT1 | 1 | krystalový oscilátor | 20MHz |
XT2 | 1 | krystalový oscilátor | 32,768kHz |
ZD1 | 1 | zenerova dioda | 8V2 |
TL1-TL4 | 4 | mikrospínač s hmatníkem | HIGHLY KS01-B-B |
reset | 1 | mikrospínač do DPS | |
piezo | 1 | piezoelektrický měnič 4kHz | LD-BZPN-1705 |
ICSP | 1 | oboustranný kolík | 6 - pin |
USB | 1 | USB konektor | typ B |
BAT | 1 | baterie | CR2032 |
pozdro pro baterii | 1 | pozdro pro baterii do DPS | TE CONNECTIVITY 120591-1 |
svorkovnice | 2 | svorkovnice do DPS trojitá, rozteč 5mm | |
krabička | 1 | plastová krabička | KP33 (obdoba Z-44) |
konektor pro připojení displeje spodní | 1 | oboustranný kolík 2x8 pinů s roztečí 2,54mm | |
konektor pro připojení displeje horní | 1 | dutinková lišta 2x8 pinů s roztečí 2,54mm | |
konektor pro připojení tlačítek spodní | 1 | dutinková lišta 1x5 pinů s roztečí 2,54mm, snížená | např ZL305 |
konektor pro připojení tlačítek horní | 1 | oboustranný kolík 1x5 pinů s roztečí 2,54mm |
Ke stažení
motiv DPSprogram asm