DHT17 temperatuuri- ja niiskusandur on populaarne ja odav andur, mida saab kasutada üsna laias temperatuuride ja suhtelise niiskuse vahemikus. Vaatame, kuidas seda Arduinoga ühendada ja kuidas sealt andmeid lugeda.
Vajalik
- - Arduino;
- - DHT17 temperatuuri ja niiskuse andur.
Juhised
Samm 1
Niisiis, anduril DHT11 on järgmised omadused:
- mõõdetud suhtelise õhuniiskuse vahemik - 20..90%, veaga kuni 5%, - mõõdetud temperatuuride vahemik - 0..50 kraadi Celsiuse järgi, veaga kuni 2 kraadi;
- reageerimisaeg niiskuse muutustele - kuni 15 sekundit, temperatuur - kuni 30 sekundit;
- minimaalne valimisperiood on 1 sekund.
Nagu näete, pole DHT11 andur eriti täpne ja temperatuurivahemik ei kata negatiivseid väärtusi, mis meie kliimas külmhooajal vaevalt sobib välismõõtmisteks. Kuid selle madal hind, väike suurus ja kasutusmugavus kompenseerisid need puudused osaliselt.
Joonisel on kujutatud anduri välimus ja mõõtmed millimeetrites.
2. samm
Mõelge DHT11 temperatuuri- ja niiskusanduri ühendusskeemile mikrokontrolleriga, eriti Arduinoga. Pildil:
- MCU - mikrokontroller (näiteks Arduino või muu sarnane) või üheplaadiline arvuti (Raspberry Pi või muu sarnane);
- DHT11 - temperatuuri- ja niiskusandur;
- DATA - andmesiin; kui anduri ja mikrokontrolleri vahelise ühenduskaabli pikkus ei ületa 20 meetrit, siis on soovitatav see buss toiteallikasse tõmmata 5, 1 kOhm takisti abil; kui üle 20 meetri, siis teine sobiv väärtus (väiksem).
- VDD - anduri toiteallikas; lubatud pinged vahemikus ~ 3,0 kuni ~ 5,5 volti DC; kui kasutatakse toiteallikat ~ 3,3 V, on soovitatav kasutada toitetraati, mis ei ole pikem kui 20 cm.
Üks anduri juhtmetest - kolmas - pole millegagi ühendatud.
DHT11 andurit müüakse sageli tervikuna koos vajaliku torustikuga - ülestõmbetakisti ja filtri kondensaatoriga.
3. samm
Paneme kokku kaalutud skeemi. Ühendan vooluringiga ka loogikaanalüsaatori, et saaksin uurida anduriga suhtlemise ajastusskeemi.
4. samm
Läheme lihtsal viisil: laadige DHT11 anduri jaoks raamatukogu alla (link jaotises "Allikad"), installige see tavapärasel viisil (pakkige lahti Arduino arenduskeskkonna kataloogi / libraries).
Kirjutame nii lihtsa visandi. Laadime selle Arduinosse. See visand väljastab DHT11 andurilt loetud RH ja temperatuuri teated iga 2 sekundi järel arvuti jadaporti.
5. samm
Kasutame nüüd loogikaanalüsaatorist saadud ajadiagrammi abil välja, kuidas toimub teabevahetus.
DHT11 temperatuuri- ja niiskusandur kasutab mikrokontrolleriga suhtlemiseks ühe juhtmega jadaliidest. Üks andmevahetus võtab aega umbes 40 ms ja sisaldab: 1 päringubitti mikrokontrollerilt, 1 biti anduri vastust ja 40 andmebitti andurilt. Andmed sisaldavad: 16 bitti niiskusteavet, 26 bitti temperatuuri teavet ja 8 kontrollbitti.
Vaatame lähemalt Arduino DHT11 anduriga suhtlemise ajagraafikut.
Jooniselt on näha, et impulsse on kahte tüüpi: lühike ja pikk. Lühikesed impulsid selles vahetusprotokollis tähistavad nulle, pikad impulsse.
Kaks esimest impulssi on Arduino taotlus DHT11-le ja vastavalt ka anduri vastus. Järgmisena tuleb 16 bitti niiskust. Pealegi on need jagatud baitideks, kõrged ja madalad, kõrged vasakul. See tähendab, et meie joonisel on niiskuse andmed järgmised:
0001000000000000 = 00000000 00010000 = 0x10 = 16% suhteline õhuniiskus.
Temperatuuriandmed on sarnased:
0001011100000000 = 00000000 00010111 = 0x17 = 23 kraadi Celsiuse järgi.
Kontrollbitid - kontrollsumma on vaid 4 saadud andmebaidi liitmine:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 binaarses vormis või 16 + 23 = 39 kümnendkohaga.