Lekce 6 - čidlo DHT11 - teplota, vlhkost

04.02.2013 14:36

Dnes použijeme opět náš displej a k Arduinu si připojíme čidlo vlhkosti a teploty DHT11. Jedná se o jednodrátové digitální čidlo jehož podrobnou specifikaci nebudeme zkoumat. Jeho cena se pohybuje i pod 2$. Nevýhodou je docela malá přesnost, avšak pro naše zkoumání naprosto dostačuje. Kdo by chtěl přesnost vyšší, může si objednat čidlo DHT22 s daleko větší přesností a rychlostí. Cena je však někde jinde. Datasheet ke stažení zde.

Parametry DHT11

  • Měřený rozsah: 20-90%RH; 0-50℃
  • Přesnost měření vlhkosti: ±5%RH
  • Přesnost měření teploty: ±2℃

 

Zapojení s mikroprocesorem

Zapojení pinů na DHT11

Schema zapojení

Teď něco málo k samotnému programu. Protože chytré hlavy již vymyslely a napsali potřebnou knihovnu pro komunikaci s DHT11, ušetřili nám tím hodně práce. Nám bude stačit, když si knihovnu stáhnete zde (vzhledem k tomu, že tento web nepodporuje soubory s příponou *.rar a *.zip, nahrál jsem to na ulozto.cz - v případě, že by tento soubor byl na odkaze nedostupný, napiště na mail a já vám ho pošlu nebo uplouduji znova). Poté rozbalíte a nakopírujete adresář "DHT11" do adresáře "libraries" do místa kde máme nainstalované prostředí Arduino. Samotný program je vysvětlen v komentářích ke každému řádku.


Program

 
!!! Upozornění !!! 
Vzhledem k tomu, že čidlo je napojeno na pin 0, který slouží při programování ke komunikaci, odpojete propojovací vodič z pin 0 vedoucí do DHT11 při nahrávání programu do Arduina. V opačném případě počítač při programování ukáže chybovou hlášku. Toto platí i pro Arduino UNO. Další možností je připojit datový vývod z DHT11 k jinému pinu např. 10 a upravit program. 

Pokud jste vše udělali správně není důvod, aby něco nefungovalo. Za domácí úkol si na LCD můžete vypisovat i další data z Adruina např. vlhkost. Tuto hodnotu vrací proměná:

int vlhkost = MojeCidlo.humidity; // zapíše hodnotu vlhkosti do proměné vlhkost

 

Zpět

Diskusní téma: Lekce 6 - čidlo DHT11 - teplota, vlhkost

Datum
Vložil
Titulek

Nenájdená knižnica

Mne vypisuje to isté, čo Davidovi, knižnicu som tam dal:
Arduino: 1.6.1 (Windows XP), Vývojová deska: "Arduino Uno"

dht11.ino:2:70: fatal error: dht11.h: No such file or directory

compilation terminated.

Chyba kompilace.

Datum
Vložil
Titulek

n

Ahoj co stím když mi to píše chybuže není žádn takový soubor přitom tam je :D
_1.ino:2:70: fatal error: dht11.h: No such file or directory
compilation terminated.
Chyba kompilace.

Datum
Vložil
Titulek

Debuging

Stupeň celsia je možné zapsat takto
MojeLCD1.print((char)223);

Pokud se někomu zobrazují pouze bílé čtverce a text je čitelný pouze ze strany, pak je potřeba zapojit 10K potenciometr mezi LCD pin3 a zem. (lze potom ladit kontrast)

Datum
Vložil
Titulek

použití čidla dallas

Lze tento program použit rovněž na čidlo dallas??

Datum
Vložil
Titulek

Celočíselné hodnoty

Děkuji za návod. Zajímalo by mě, zda lze z čidla dostat hodnoty s rozlišením na jedno desetinné místo? Nyní, i když nadefinuji proměnné jako float, mi arduino s dht11 zobrazuje celočíselné hodnoty. Nebo to toto čidlo neumí?

Datum
Vložil
Titulek

Re: Celočíselné hodnoty

Přesně tak, toto čidlo umí jenom teplotu na celá čísla a to ještě jenom nad nulou (nemínusové teploty) v rozsahu 0-50°C. Je potřeba koupit dražší verzi čidla např. DHT22. Bohužel mám zkušenost, že snad u všech čidel (i dražších) je velká chyba v měření relativní vzdušné vlhkosti. Datasheet sice píše o přesnosti 2-5%, ale skutečnost je taková, že chyba 30% není žádná vyjímka :-(
Co se týká měření teploty, tak čidla DHT22 a jeho klon AM2321 mají rozumnou přesnost a u měření teploty není co vytknout.

Datum
Vložil
Titulek

Re: Celočíselné hodnoty

Přišly mi teď čidla DHT11 z Aliexpressu. Podle jednoho návodu jsem je zobrazil a úspěšně jsem si do konzole vypisoval celé hodnoty. Protože jsem ale nevěděl, že DHT11 umí jen celé stupně, prošel jsem celou DHT knihovnu, abych pochopil, co dělám špatně. Ve finále jsem dospěl k tomu, že knihovna vyčítá 5 hodnot do pole.
V datasheetu zde https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf
píšou toto: Data consists of decimal and integral parts. A complete data transmission is 40bit, and the sensor sends higher data bitfirst. Data format:8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum.
Tak jsem si upravil knihovnu, že mi na teplotu vrací ne int pole[2], ale float pole[2]+pole[3]*0.1. A desetinné místo je na světě. Desetinné místo pro vlhkost vrací nulu, ale tam mi to v jednotkách opravdu stačí.

Datum
Vložil
Titulek

Chyba

Dobrý den

při compilaci vyskočí chyba:

temp:9: error: 'dht11' does not name a type
temp.ino: In function 'void loop()':
temp:21: error: 'MojeCidlo' was not declared in this scope

co dělám špatně?

Díky

Datum
Vložil
Titulek

Re: Chyba

Postupoval jsi přesně? Máš naimportovanou knihovnu? Restartoval jsi potom arduino-soft?

Datum
Vložil
Titulek

DHT22

Zdravím Vás a prosím o radu.
Nemohu hodnoty vypsat na sériová port, vždy vyhodí hodnotu 0 a 2 na všech pinech krom 0, tam vypisuje pouze nulové hodnoty.

díky Marvni

1 | 2 | 3 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.