This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:sensor:humidity [2014/10/13 10:30] – raivo.sell | et:examples:sensor:humidity [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Kombineeritud niiskus-temperatuuriandur ====== | ====== Kombineeritud niiskus-temperatuuriandur ====== | ||
- | //Vajalikud teadmised: [HW] [[et: | + | //Vajalikud teadmised: |
+ | [HW] [[et: | ||
+ | [LIB] [[et: | ||
+ | [LIB] [[et: | ||
===== Teooria ===== | ===== Teooria ===== | ||
- | [{{ : | + | [{{ : |
- | Temperatuuri ja niiskuse mõõtmiseks on olemas väga lai valik andureid, millest osa on ka kombineeritud andurid, mis väljastavad nii temperatuuri, | + | Temperatuuri ja niiskuse mõõtmiseks on olemas väga lai valik andureid, millest osa on ka kombineeritud andurid, mis väljastavad nii temperatuuri, |
- | Niiskus on sisuliselt vee osakaal õhus. Niiskuse erinev väärtus mõjutab seadmete tööd, korrosiooni ja elusorganismide talitlusvõimet ning elukeskkonda olulisel määral ja seetõttu on robottehnilistes seadmete oluline mõõta suhtelise niiskuse osakaalu õhus, et vastavalt sellele mingeid protsesse juhtida. Levinud niiskusanduri kasutusvaldkond on targa maja või targa kasvuhoone rakendused, kus vastavalt õhuniiskuse tasemele lülitatakse sisse konditsioneere, | + | Niiskus on sisuliselt vee osakaal õhus. Niiskuse erinev väärtus mõjutab seadmete tööd, korrosiooni ja elusorganismide talitlusvõimet ning elukeskkonda olulisel määral ja seetõttu on robottehnilistes seadmete oluline mõõta suhtelise niiskuse osakaalu õhus, et vastavalt sellele mingeid protsesse juhtida. Levinud niiskusanduri kasutusvaldkond on targa maja või targa kasvuhoone rakendused, kus vastavalt õhuniiskuse tasemele lülitatakse sisse konditsioneere, |
[{{ : | [{{ : | ||
1-juhtme ühendus on peamiselt kasutusel erinevate andurite ja mäludega suhtlemiseks. Saavutatav maksimaalne kiirus jääb 16,3 kbit/s piirimaile. Juhtseade alustab suhtlust taaskäivituse (inglise keeles //reset//) pulsiga, mis tõmbab siini maha vähemalt 480 µs. Peale seda järgneb 8 bitine korraldus, mida kuulavad kõik seadmed. Seade, millele see adresseeritud on, vastab. Andmeid saadetakse ja võetakse vastu 8 bitilistes gruppides, kus igal seadmel on unikaalne 64 bitine seerianumber. | 1-juhtme ühendus on peamiselt kasutusel erinevate andurite ja mäludega suhtlemiseks. Saavutatav maksimaalne kiirus jääb 16,3 kbit/s piirimaile. Juhtseade alustab suhtlust taaskäivituse (inglise keeles //reset//) pulsiga, mis tõmbab siini maha vähemalt 480 µs. Peale seda järgneb 8 bitine korraldus, mida kuulavad kõik seadmed. Seade, millele see adresseeritud on, vastab. Andmeid saadetakse ja võetakse vastu 8 bitilistes gruppides, kus igal seadmel on unikaalne 64 bitine seerianumber. | ||
- | |||
Bittide edastamine toimub pulsi pikkuse järgi. " | Bittide edastamine toimub pulsi pikkuse järgi. " | ||
Line 19: | Line 21: | ||
1-juhtme standardset andmevahetusliidest kasutab digitaalne termomeeter DS18S20, mille mõõdetav temperatuurivahemik on -55...+100 °C. | 1-juhtme standardset andmevahetusliidest kasutab digitaalne termomeeter DS18S20, mille mõõdetav temperatuurivahemik on -55...+100 °C. | ||
- | DS18S20 temperatuurianduri saab ühendada tavalisse digitaalviiku, | + | DS18S20 temperatuurianduri saab ühendada tavalisse digitaalviiku, |
- | Robootika Kodulaboris on standardse 1-juhtme andmeside liidese kasutamiseks loodud eraldi teek // | + | Robootika Kodulaboris on standardse 1-juhtme andmeside liidese kasutamiseks loodud eraldi teek // |
Lisaks standard 1-juhtme protokollile on sarnastel omadustel põhinevad, kuid veidi erinevat toimeloogikat kasutatavad 1-juhtme siini andmevahetusprotokollid. Ühte sellist rakendatakse ka odavate kombineeritud niiskuse temperatuuriandurite DHTxx seeria juures. DHTxx andmesidepakett jaguneb järgmiselt: | Lisaks standard 1-juhtme protokollile on sarnastel omadustel põhinevad, kuid veidi erinevat toimeloogikat kasutatavad 1-juhtme siini andmevahetusprotokollid. Ühte sellist rakendatakse ka odavate kombineeritud niiskuse temperatuuriandurite DHTxx seeria juures. DHTxx andmesidepakett jaguneb järgmiselt: | ||
- | * Start bit | + | * Start bitt |
- | * 8-bit niiskuse kõrgem bait | + | * niiskuse kõrgem bait |
- | * 8-bit niiskuse madalam bait | + | * niiskuse madalam bait |
- | * 8-bit temperatuuri kõrgem bait | + | * temperatuuri kõrgem bait |
- | * 8-bit temperatuuri madalam bait | + | * temperatuuri madalam bait |
- | * 8-bit CRC kontrollbait (eelnevate baitide summa madalaim bait) | + | * CRC kontrollbait (eelnevate baitide summa madalaim bait) |
DHT11 anduril on temperatuuri ja niiskuse mõõtetulemus otseselt loetav kõrgemast baidist ning madalam bait on tühi. DHT22 anduril on temperatuuri ja niiskuse mõõtetulemus paketis 16 bitise arvuna ning ühe komakohaga, st tagastatud number 245 vastab temperatuurile 24,5 °C. | DHT11 anduril on temperatuuri ja niiskuse mõõtetulemus otseselt loetav kõrgemast baidist ning madalam bait on tühi. DHT22 anduril on temperatuuri ja niiskuse mõõtetulemus paketis 16 bitise arvuna ning ühe komakohaga, st tagastatud number 245 vastab temperatuurile 24,5 °C. | ||
[{{ : | [{{ : | ||
- | Andmesiinil käib suhtlus avatud kollektor režiimis. See tähendab, et kõrge nivoo tuleneb siinile ühendatud //pullup// takistist ning andur ning mikrokontroller tekitavad andmebitte | + | Andmesiinil käib suhtlus avatud kollektor režiimis. See tähendab, et kõrge nivoo tuleneb siinile ühendatud //pullup// takistist ning andur ning mikrokontroller tekitavad andmebitte |
Anduri lugemine on realiseeritud Kodulabori andurite teegis // | Anduri lugemine on realiseeritud Kodulabori andurite teegis // | ||
+ | |||
+ | Näitekoodis loetakse PORTE viiku 0 ühendatud andurit DHT11 ja PORTE viiku 1 ühendatud andurit DHT22. | ||
[{{: | [{{: | ||
~~CL~~ | ~~CL~~ | ||
- | |||
- | Näitekoodis loetakse PORTE viiku 0 ühendatud andurit DHT11 ja PORTE viiku 1 ühendatud andurit DHT22. | ||
<code c> | <code c> | ||
// Kodulabori DHT niiskus ja temperatuurianduri lugemise näidisprogramm | // Kodulabori DHT niiskus ja temperatuurianduri lugemise näidisprogramm | ||
- | // LCD-le kuvatakse temperatuur ja niiskus | + | // LCD-le kuvatakse temperatuur ja niiskus |
#include < | #include < | ||
#include < | #include < | ||
Line 57: | Line 59: | ||
int main(void) | int main(void) | ||
{ | { | ||
- | char text[60]; | + | |
- | | + | char i=0; |
- | // LCD ekraani algseadistamine | + | |
- | | + | lcd_gfx_init(); |
- | // Lõputu tsükkel | + | |
- | | + | while (1) |
- | | + | { |
lcd_gfx_goto_char_xy(3, | lcd_gfx_goto_char_xy(3, | ||
- | lcd_gfx_write_string(" | + | |
- | // DHTxx anduri näidu lugemine ja kuvamine LCD-l | + | |
- | // DHT_update esimene parameeter on anduri tüüp, | + | |
- | // mis on vastavalt | + | // DHT_update esimene parameeter on anduri tüüp |
- | DHT_update(DHT11,DHTpin); | + | DHT_update(DHT22,DHTpin); |
- | lcd_gfx_goto_char_xy(0, | + | lcd_gfx_goto_char_xy(0, |
- | sprintf(text," | + | sprintf(text," |
- | lcd_gfx_write_string(text); | + | lcd_gfx_write_string(text); |
- | + | ||
- | // Temperatuuri graafiku joonistamine | + | |
- | lcd_gfx_drawPixel(i++, | + | |
- | // Viide 1 s | + | // Temperatuuri graafiku joonistamine (toimib vaid kodulabor III generatsioonil) |
- | sw_delay_ms(1000); | + | lcd_gfx_drawPixel(i++, |
+ | sw_delay_ms(500); | ||
- | // Graafiku otsast alustamine | + | // Graafiku otsast alustamine, kui joon on lõppu jõudnud |
- | // kui joon on lõppu jõudnud | + | if (i>126) |
- | if (i>120) { | + | |
i=0; | i=0; | ||
lcd_gfx_clear(); | lcd_gfx_clear(); | ||
} | } | ||
- | } | + | |
} | } | ||
</ | </ |