Zpět

Měření teploty a vlhkosti čidlem AM2302/DHT22

Začalo to dotazem od kolegy: "Hele, mám tady jedno digitální čidlo. Šlo by ovládat přímo počítačem, nebo se bude muset udělat nějaký převodník z jednočipu?" Jak se ukázalo, obyčejné písíčko postačí. Jenom budete potřebovat bootovací disketu s Dosem, protože Windows dělají na pozadí neplechu a neumožňují přesné časování.

Čidlo

AM2302 je digitální senzor teploty a relativní vlhkosti řízený mikroprocesorem. Z výroby je kalibrovaný, takže vysílá rovnou zpracované hodnoty bez nutnosti dalších přepočtů.

Komunikace probíhá obousměrně po jednovodičové sběrnici. Linka je v klidovém stavu udržována na logické 1 (H), obě koncová zařízení vysílají stažením napětí na logickou 0 (L). Komunikaci začíná počítač vysláním impulsu L. Čidlo odpoví podobným impulsem, potom pošle naměřená data ve formě 40 datových bitů a nakonec pustí linku zpátky na H. Datové bity se skládají z krátkého synchronizačního impulsu L, po kterém následuje různě dlouhý impuls H; jeho délka určuje, jestli je to 0 nebo 1. Je to celkem jednoduchý a elegantní systém, jediná potíž je v tom, že na měření délek impulsů v řádu desítek mikrosekund potřebujete hodně přesné časování bez rušivých vlivů.

Zapojení čidla: vývod 1 - napájení (+3,3..+5,5 V), 2 - datová linka, 3 - nezapojeno, 4 - zem. Pokud jde o dosah, fungovalo mi na cca 7 m, na větší vzdálenost už docházelo k chybám. Ale když použijete pořádný stíněný datový kabel a ne jako já zbytky ze šuplíku nastavené třemi metry obyčejné prodlužovačky na 220 V, měli byste dosáhnout i dál. Jenom nevím, jestli až na těch 100 m, které slibuje manuál.

Zapojení

Varianta A

Na první pokusy jsme použili jednoduchý obvod s minimem součástek, kde ani moc nezáleží na přesných hodnotách rezistorů. Nevýhodou je nutnost použití externího napájecího zdroje; v našem případě to byl stabilizovaný zdroj 5 V napájený ze sítě, ale jde použít i baterie.

jednodušší varianta s externím zdrojem

Zdroj napájí čidlo a zároveň přes rezistor R2 zvedá datovou linku na úroveň H. Logická 1 na vývodu DTR otevře tranzistor T1 a tím stáhne datovou linku na úroveň L, bázový proud tranzistoru je omezený rezistorem R1. Vývod CTS na straně počítače a kolík 2 na straně čidla čtou stav datové linky. Zem (SG / 4) je společná.

Varianta B

Ze sériového portu dostaneme proud až 10 mA, což stačí na napájení jak čidla (max. odběr 1,5 mA), tak datové linky (1..3 mA). Jenom je potřeba ochránit čidlo proti přepětí a přepólování, protože napětí na portu může být až 15 V, při úrovni L záporné.

druhá varianta napájená přímo z portu

Vývod RTS napájí čidlo a datovou linku. Dioda D1 zabraňuje přepólování, zenerka D2 omezuje napětí na 5,1 V. Rezistor R3 omezuje proud tekoucí přes D2 na cca 4,5 mA (s menším proudem není jisté, že bude správně fungovat). Zvedací rezistor R2 a vysílací část z R1 a T1 fungují stejně jako v první variantě.

Rezistory R2 a R3 jsou dimenzovány na napětí výstupu RTS kolem 10,8 V a napětí na vstupu CTS 3,5 V (menší hodnoty se neberou jako úroveň H). Pokud má váš port jiné parametry a CTS pořád hlásí nulu, i když na datové lince nějaké napětí je, zkuste trochu zmenšit odpor R2. Ale opatrně, jinak vám po otevření T1 spadne napájecí napětí.


Zadní strana plošného spoje


Hotový přípravek před zakrytováním

Číslování vývodů na sériovém portu

 9 pinů25 pinů
DTR420
RTS74
TXD32
CTS85
DSR66
SG57

Obslužný program

ZIP Ke stažení zde. Spolehlivě funguje jedině v čistém Dosu. Při měření mikrosekundových časových intervalů totiž záleží na každém taktu procesoru a jestli na pozadí lítají systémová přerušení, je celé časování v háji. Ve Windows 98 (a nejspíš i 95, ale ty jsem nezkoušel) se měření někdy povede, jindy je pár bitů rozhozených. Ve Windows XP je to bez šance, přístup na port je tam zpožděný a nechytíte ani bit.

Program umožňuje jak okamžité měření s výstupem na obrazovku, tak dlouhodobé automatické sledování hodnot se záznamem do souboru. Běží v textovém režimu, ovládá se klávesnicí pomocí několika nabídek a nápovědy má v sobě víc než dost, takže asi nemá cenu ovládání nějak zevrubněji popisovat. Samozřejmě je co vylepšovat, napadá mě třeba ukládání konfigurace do souboru nebo eliminace náhodných chyb vícenásobným měřením. Ale to už nechám na vás :-).

Naměřené hodnoty se ukládají ve formátu CSV, který se dá kromě přímého čtení zpracovávat i tabulkovými editory. Tohle třeba vyrobí Excel:

ukázka naměřených hodnot

Na začátku čidlo leželo jen tak na stole. Po čtvrtém vzorku jsem ho vzal do ruky, po 21. jsem ho zase pustil. Malá vlnka okolo vzorku 40 vznikla krátkým fouknutím, o čtyři vzorky dál jsem foukal několik vteřin. Z průběhů veličin je vidět, že tepelný senzor má mnohem větší setrvačnost.

Zpět

Reklamy: