Both sides previous revisionPrevious revisionNext revision | Previous revision |
et:examples:sensor:1-wire [2014/02/20 09:08] – rellermaa | et:examples:sensor:1-wire [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
---|
====== 1-wire temperatuuriandur ====== | <pagebreak> |
| ====== 1-juhtme tüüpi temperatuuriandur ====== |
| |
//Vajalikud teadmised: [HW] [[et:hardware:homelab:sensor]], [HW] [[et:hardware:homelab:digi]], | //Vajalikud teadmised: [HW] [[et:hardware:homelab:sensor]], [HW] [[et:hardware:homelab:digi]], |
===== Teooria ===== | ===== Teooria ===== |
| |
==== 1-wire protokoll ==== | ==== 1-juhtme protokoll ==== |
| |
Lihtsamate seadmete ja anduritega suhtlemiseks töötas Dallas Semiconductor välja protokolli, mida kutsutakse 1-wire liideseks, kuna kogu mõlemasuunaline andmevahetus ja toide liiguvad ühe juhtme kaudu. Lisaks võimaldab liides ühele siinile üle 75 seadme ühendamist, moodustades MicroLan võrke. MicroLan võrgus on üks juhtseade, mis juhib võrgus liiklust ja tagab, et siinil olevad seadmed ei üritaks korraga rääkida. | [{{ :et:examples:sensor:1-wire_dallas.png?80|DS18S20 andur}}] |
| |
{{:et:examples:sensor:ds_network2.jpg?500|1-wire andurite võrk}} | Lihtsamate seadmete ja anduritega suhtlemiseks töötas Dallas Semiconductor välja protokolli, mida kutsutakse 1-juhtme (inglise keeles //1-wire//) liideseks, kuna kogu mõlemasuunaline andmevahetus ja toide liiguvad ühe juhtme kaudu. Lisaks võimaldab liides ühele siinile üle 75 seadme ühendamist, moodustades MicroLan võrke. MicroLan võrgus on üks juhtseade, mis juhib võrgus liiklust ja tagab, et siinil olevad seadmed ei üritaks korraga rääkida. |
| |
1-wire ühendus on peamiselt kasutusel erinevate andurite ja mäludega suhtlemiseks. Saavutatav maksimaalne kiirus jääb 16.3 kbit/s piirimaile. Juhtseade alustab suhtlust „reset“ impulsiga, 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 bitistes gruppides. Seadmeid tuntakse ära unikaalse 64 bitise seerianumbri järgi. | |
| [{{:et:examples:sensor:1-wire_yhendus.png?580|1-juhtme andurite võrk}}] |
| |
| |
| 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 „reset“ impulsiga, 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 bitistes gruppides. Seadmeid tuntakse ära unikaalse 64 bitise seerianumbri järgi. |
| |
Bittide edastamine toimub pulsi pikkuse järgi. "1" saatmiseks tekitatakse pulss pikkusega 1 - 15 µs ja "0" saatmiseks 60 µs. | Bittide edastamine toimub pulsi pikkuse järgi. "1" saatmiseks tekitatakse pulss pikkusega 1 - 15 µs ja "0" saatmiseks 60 µs. |
===== Praktika ===== | ===== Praktika ===== |
| |
Kodulabori koosseisus on 1-wire liidesega digitaalne termomeeter tootekoodiga DS18S20. Selle tehnilised omadused on järgnevad: | Robootika Kodulaboriga on lihtne kasutada 1-juhtme liidesega digitaalset termomeetrit tootekoodiga DS18S20. Selle tehnilised omadused on järgnevad: |
| |
* Toitapinge +3...+5 VDC | * Toitapinge +3...+5 VDC |
* Andmeleht [[http://www.mmajunke.de/ds1820.pdf|Link]] | * Andmeleht [[http://www.mmajunke.de/ds1820.pdf|Link]] |
| |
Toodud näiteprogramm teeb 1-wire temperatuurianduriga mõõtmisi ja kuvab tulemuse | Toodud näiteprogramm teeb 1-juhtme temperatuurianduriga mõõtmisi ja kuvab tulemuse |
kasutajaliidese ekraanile kraadides. Ühele 1-wire siinile saab programmi praeguste | Kasutajaliidese mooduli ekraanile kraadides. Ühele 1-juhtme siinile saab programmi praeguste |
seadetega ühendada kuni viis andurit. Andurite otsimine toimub automaatselt. | seadetega ühendada kuni viis andurit. Andurite otsimine toimub automaatselt. |
| |
1-wire temperatuuriandur tuleb ühendada pistikusse PE0. Peale programmi pealelaadimist ja käivitamist ilmub ekraanile anduri järjekorra number ja selle anduri mõõdetav temperatuur Celsiuse kraadides. Kui ühele siinile on ühendatud mitu andurit, siis nende temperatuure kuvatakse järjest. Lisaks näidatakse ka anduri tüüpi ja toiteviisi. Kodulabori anduri tüüp on DS18S20 ja toiteviis eraldi toitega ehk "externally". Teatavasti | 1-juhtme temperatuuriandur tuleb ühendada pistikusse PE0. Peale programmi pealelaadimist ja käivitamist ilmub ekraanile anduri järjekorra number ja selle anduri mõõdetav temperatuur kraadides Celsiuse järgi. Kui ühele siinile on ühendatud mitu andurit, siis nende temperatuure kuvatakse järjest. Lisaks näidatakse ka anduri tüüpi ja toiteviisi. Kodulabori anduri tüüp on DS18S20 ja toiteviis eraldi toitega ehk "externally". 1-juhtme andureid saab ühendada ka parasiittoitele ehk toitele läbi andmesiini. Sellisel juhul on kasutuses ainult kaks juhet ja programmi poolt kuvatakse toiteviisiks "parasite". Vea korral ilmub ekraanile viip "ERROR!". Sellisel juhul kontrollida eelkõige ühendusi. |
saab ka 1-wire andureid ühendada parasiittoitele ehk toitele läbi andmesiini. | |
Sellisel juhul on kasutuses ainult kaks juhet ja programmi poolt kuvatakse | |
toiteviisiks "parasite". Vea korral ilmub ekraanile viip "ERROR!". Sellisel juhul | |
kontrollida eelkõige ühendusi. | |
| |
Juhtmete värvid anduri ühendamiseks: | Juhtmete värvid anduri ühendamiseks: |
* Pruun - GND | * Pruun - GND |
| |
{{:et:examples:sensor:dscn0629-1.jpg?200|Anduri ühendamine}} | |
{{:et:examples:sensor:dscn0631-1.jpg?200|Ekraanipilt}} | |
/* | |
Temperatuuri lugemist võimaldava programmi näitekood on toodud allpool. Programmi tuleb kindlasti lisada "onewire.h" "onewire.c", mis sisaldavad 1-wire siinidraiverit. Andurispetsiifiline kood on failides "ds18x20.h" ja "ds18x20.c" Failid ja kogu lähetekoodi leiab projektile lisatud arhiivist. | |
| |
{{:et:examples:sensor:ds18s20demo.rar|1-wire temperatuurianduri näitekood}}*/ | Temperatuuri lugemist võimaldava programmi näitekood on toodud allpool. Programmi tuleb kindlasti lisada "onewire.h", mis sisaldab 1-juhtme siinidraiverit. Andurispetsiifiline kood on failis "ds18x20.h". |
| |
~~PB~~ | |
| |
| <pagebreak> |
| |
<code c> | <code c> |
// | // |
// DHT niiskus ja temperatuurianduri lugemise näide | // 1-juhtme temperatuurianduri lugemise näide |
// LCD-le kuvatakse temperatuur ja niiskus | // LCD-le kuvatakse temperatuuri näit |
// | // |
#include <stdio.h> | #include <stdio.h> |
lcd_gfx_init(); | lcd_gfx_init(); |
| |
// 1-Wire siini seadistamine. Anduri andmeliin on ühendatud PORTE viiku 0 | // 1-juhtme siini seadistamine. Anduri andmeliin on ühendatud PORTE viiku 0 |
ow_set_bus(&PORTE.IN,&PORTE.OUT,&PORTE.DIR,0); | ow_set_bus(&PORTE.IN,&PORTE.OUT,&PORTE.DIR,0); |
//! Kodulabori II versiooni puhul kasutage näiteks järgmist rida, | //! Kodulabori II versiooni puhul kasutage näiteks järgmist rida, |
} | } |
</code> | </code> |
| |
| |
| |