Projekt: Snímač teploty DS18B20: Rozdiel medzi revíziami
Z SensorWiki
(Vytvorená stránka „Sem príde správa z riešenia projektu. Category:AVR Category:DVPS“) |
|||
Riadok 1: | Riadok 1: | ||
− | + | '''Zadanie''' | |
+ | ---- | ||
+ | |||
+ | # Zobrazte teplotu z dvoch snímačov teploty pripojených na zbernicu 1-Wire. | ||
+ | |||
+ | '''Vypracovanie''' | ||
+ | ---- | ||
+ | |||
+ | # '''Bc. Ján Baláž''' | ||
+ | # '''Bc. Jozef Kupčiha''' | ||
+ | |||
+ | |||
+ | *Študijný odbor: '''Aplikovaná mechatronika''' | ||
+ | *Ročník: '''2. Ing.''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == '''1-Wire Zbernica''' == | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Ako už z názvu vyplýva ide o jednovodičové sériove rozhranie s možnosťou polo | ||
+ | |||
+ | duplexnej obojsmernej komunikácie. Zbernica sa skladá v podstate z dvoch | ||
+ | |||
+ | vodičov a to dátového a zemiaceho. Dátový vodič slúži zároveň na napájanie | ||
+ | |||
+ | zariadeni pripojených na tuto zbernicu. | ||
+ | |||
+ | '''Oblasti použitia napr:''' | ||
+ | |||
+ | - identifikačné systémy | ||
+ | |||
+ | - senzory (teploty, vlhkosti a podobne ) | ||
+ | |||
+ | - digitálne potenciometre a iné | ||
+ | |||
+ | [[Súbor:1Wire.gif]] | ||
+ | |||
+ | |||
+ | |||
+ | '''Vlastnosti:''' | ||
+ | |||
+ | - dĺžka vodiča až 100m | ||
+ | |||
+ | - na jednu linku je možné pripojiť do 150 zariadení s unikátnym | ||
+ | |||
+ | sériovým číslom | ||
+ | |||
+ | - zabezpečenie pomocou 8-bitového CRC kódu | ||
+ | |||
+ | - obojsmerná poloduplexná prevádzka | ||
+ | |||
+ | - identifikácia zariadenia na základe 8-bajtového sériového čísla a 1- | ||
+ | |||
+ | bajtovej informácie o type zariadenia | ||
+ | |||
+ | - realizácia prepojenia je pomocou skrútenej dvojlinky – twisted pair | ||
+ | |||
+ | |||
+ | '''Zapojenie:''' | ||
+ | Zariadenia sú trvalo pripojené na napájacie napätie „PullUp“ rezistor obr.1 | ||
+ | |||
+ | [[Súbor:Blokova.jpg]] | ||
+ | |||
+ | |||
+ | ==='''Komunikacia'''=== | ||
+ | |||
+ | Komunikácia je inicializovaná mikropočítačom zmenou úrovne napätia na zbernici | ||
+ | |||
+ | na 0 V. Komunikácia je založená na takzvaných „časových slotoch“, čiže od | ||
+ | |||
+ | závislosti doby trvania poklesu úrovne napätia je slave zariadením | ||
+ | |||
+ | identifikovaný typ operácie (zápis log.1 alebo log.0, čítanie log.1 alebo | ||
+ | |||
+ | log.0, reset a identifikácia zariadenia). | ||
+ | : | ||
+ | ===='''Inicializácia''' ==== | ||
+ | :- Na začiatku uPC (master) ztiahne zbernicu k zemi (cez pull up rezistor) na | ||
+ | |||
+ | minimálne 480us, potom ju uvoľní. | ||
+ | :- Na uvoľnenie zbernice a vrátenie do kľudového stavu je potrebných 60us. Po | ||
+ | |||
+ | tejto dobe je možné prečítať stav zbernice. | ||
+ | :- Ak je na zbernici pripojené nejaké zariadenie, odpovedá ztiahnutím zbernice | ||
+ | |||
+ | na dobu 60 až 240 us. Ak sa na zbernici nenacháda žiadne zariadenie, zbernica | ||
+ | |||
+ | ostáva po celú dobu v kľudovom stave. | ||
+ | :- Celková dĺžka trvania inicializačného procesu je minimálne 2x480us, teda až | ||
+ | |||
+ | po dobe 960us môže prísť ďalší signál od mástra. | ||
+ | |||
+ | [[Súbor:Reset_Pulse.png]] | ||
+ | : | ||
+ | ===='''Vysielanie'''==== | ||
+ | :'''Log 1''' | ||
+ | : - stiahnutie zbernice po dobu mnimálne 1us. | ||
+ | : - uvoľnenie zbernice. | ||
+ | : - dĺžka slotu pre zápis je v rozsahu 60 až 120us. | ||
+ | |||
+ | :'''Log 0''' | ||
+ | : - stiahnutie zbernice po dobu mnimálne 60us. | ||
+ | : - uvoľnenie zbernice. | ||
+ | : - dĺžka slotu pre zápis je v rozsahu 60 až 120us. | ||
+ | |||
+ | ===='''Čítanie'''==== | ||
+ | : - čítanie je inicializované mástrom. Ten najprv stiahne zbernicu po dobu | ||
+ | |||
+ | minimálne 1us, následne ju uvoľní. | ||
+ | : - následuje čítanie zbernice mástrom. To je inicializované po minimálne 15us | ||
+ | |||
+ | od začiatku slotu (ten je určený počiatkom stiahnutia zbernice mastrom). | ||
+ | : - ak slave chce vyslať log 1, ponechá zbernicu uvoľnenú až do konca slotu | ||
+ | |||
+ | (master prečíta log 1 - uvoľnená zbernica). | ||
+ | : - ak slave chce vyslať log 0, ztiahne zbernicu (master prečíta log 0 - | ||
+ | |||
+ | ztiahnutá zbernica). | ||
+ | : - celková dĺžka slotu čítania je 60 až 120us. | ||
+ | [[Súbor:Zapis_Citanie_1wire.png]] | ||
+ | |||
+ | V našom prípade sme pracovali so snímačmi teploty s označením DS18B20. | ||
+ | Preto sú na obrázkoch vyššie použité pre lepšie pochopenie komunikácie na | ||
+ | |||
+ | zbernici informácie z datasheetu snímača DS18B20 | ||
+ | |||
+ | ==='''Priebeh komunikacie na zbernici 1Wire'''=== | ||
+ | |||
+ | Každé zariadenie obsahuje výrobcom nastavenú 64-bitovú informáciu v internej | ||
+ | |||
+ | ROM pamäti. Prvých horných 8 bitov slúži na zabezpečenie CRC kódom, potom | ||
+ | |||
+ | nasleduje 48-bitové sériové číslo zariadenia a dolných 8 bitov tvorí kód | ||
+ | |||
+ | identifikujúci typ zariadenia. Táto 64-bitová informácia je unikátna pre každé | ||
+ | |||
+ | vyrobené zariadenie s možnosťou tak jednoznačnej identifikácie aj viacerých | ||
+ | |||
+ | zariadení rovnakého typu pripojených na jednu linku. | ||
+ | |||
+ | Komunikácia má tri stupne: | ||
+ | * ''Inicializácia'' | ||
+ | Vykonáva sa pri resete PRESENCE pulsom od slave zariadenia | ||
+ | * ''ROM príkaz'' | ||
+ | V prípade, že je na jednej zbernici viac zariadení tak použíjme tieto príkazy | ||
+ | |||
+ | pre prácu s jednotlivými zariadeniam. | ||
+ | |||
+ | Príkazy: | ||
+ | |||
+ | a) Search ROM [F0h] - Vyhladavanie adries zariadení pripojených na zbernicu | ||
+ | |||
+ | b) Read ROM [33h] – tento príkaz môže byť použitý iba pri jednom zariadení na | ||
+ | |||
+ | zbernici – umožňuje prečítať 64 bitový ROM kód | ||
+ | |||
+ | c) Match ROM [55h] – tento príkaz spolu so 64 bit ROM kódom umožňuje vybrať to | ||
+ | |||
+ | zariadenie s ktorým chceme pracovať. | ||
+ | Odpovedá iba SLAVE, ktorého ROM kód sa zhoduje s odoslaným ROM kódom | ||
+ | |||
+ | d) Skip ROM [CCh] – bez adresácie – komunikuje sa s zariadením bez adresácie – | ||
+ | |||
+ | iba jedno zariadenie na zbernici | ||
+ | |||
+ | e) Alarm search [ECh] – podobný príkazu Search ROM s tým že odpovedá iba SLAVE | ||
+ | |||
+ | s nastaveným alarm bitom | ||
+ | |||
+ | * ''Funkčný príkaz'' | ||
+ | Tieto príkazy umožňujú čítať, zapisovať do pamäte, merať teplotu a zisťovať | ||
+ | |||
+ | (stav) napájanie. | ||
+ | |||
+ | Napr: | ||
+ | |||
+ | a) CONVERT [44h] – zmeria sa teplota a zapíše do pamäte. | ||
+ | |||
+ | b) READ SCRATCHPAD [BEh] - Čítanie pamäte (data o teplote). Čítajú sa postupne | ||
+ | |||
+ | bajty od LSB. | ||
+ | |||
+ | c) A iné | ||
+ | |||
+ | [[Súbor:ramec1Wire.png ]] | ||
+ | |||
+ | |||
+ | == ''' Senzor teploty DS18B20''' == | ||
+ | === '''Popis''' === | ||
+ | * napájanie je 3,0V – 5,5V | ||
+ | * rozsah meranej teploty od –55°C do +125°C (-67°F do +257°F) | ||
+ | * presnosť 0,5°C v rozmedzí –10°C do +85°C | ||
+ | * rozlíšenie senzora je voliteľné v rozsahu 9 až 12 bit | ||
+ | * meranie teploty s rozlíšením 12 bit trvá 750ms | ||
+ | |||
+ | Všetky informácie su uvedené v DataSheete obvodu Ktorý si môžte | ||
+ | |||
+ | [[Médiá:DS18B20DataSheet.pdf | stiahnuť tu ]] | ||
+ | |||
+ | '''Vyhotovenie senzora ''' | ||
+ | |||
+ | Senzor sa vyrába v troch púzdrach: TO-92, SO-8 a uSOP-8. | ||
+ | |||
+ | [[Súbor:PuzdraDS18B20.png | Puzdra senzora DS18B20]] | ||
+ | |||
+ | === '''Pamäť senzora'''=== | ||
+ | |||
+ | Pamäť senzora – nazvaná SCRATCHPAD obsahuje 8 bajtov. | ||
+ | Bajt 0 a 1 obsahujú 16 bitové číslo s údajom o teplote. | ||
+ | Ďalšie Bajty sú vysvetlené v obrázku nižšie | ||
+ | |||
+ | [[Súbor:Pamet.jpg]] | ||
+ | |||
+ | Bajt číslo 4 | ||
+ | |||
+ | [[Súbor:Bajt_c_4.png]] | ||
+ | |||
+ | Nastavenia konfiguračných bitov v Bajte čislo 4 | ||
+ | |||
+ | [[Súbor:Confg_Bajt_c4.jpg]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | [[Súbor:reset_1_wire.png]] | ||
+ | |||
+ | [[Súbor:vysielanie_na_1_wire.png]] | ||
+ | |||
+ | [[Súbor:Citanie_z_1_wire.png]] | ||
+ | |||
+ | |||
+ | |||
+ | == '''Zapojenie a Program''' == | ||
+ | |||
+ | ''' | ||
+ | === '''Funkcia zariadenia''' === | ||
+ | ''' | ||
+ | Zariadenie ma za úlohu odmerať teplotu na viacerých snímačoch (v tomto prípade | ||
+ | |||
+ | dvoch). Následne tieto hodnoty zobraziť na displeji. <br /> | ||
+ | Snímače sú pripojené k zberici 1-wire. Identifikácia jednotlivých snímačov je | ||
+ | |||
+ | základe ich jedinečného sériového čísla. <br /> | ||
+ | Snímače využívajú v zapojení tri vodiče. Dátový vodič, vodič pre napájanie | ||
+ | |||
+ | snímača a spoločný neutrálny vodič. <br /> | ||
+ | <br /> | ||
+ | |||
+ | '''Schéma zapojenia snímača''' | ||
+ | <br /> | ||
+ | [[Súbor:DS18B20_externe_napajanie.png]] | ||
+ | <br /> | ||
+ | |||
+ | '''Bloková schéma celého zapojenia''' <br /> | ||
+ | - tu vlozit blokovku zapojenia procak + LCD + snimače + zdroj (ešte nemame | ||
+ | |||
+ | urobenu blokovku) | ||
+ | |||
+ | === '''Program''' === | ||
+ | Program je písaný v jazyku C, v AVR Studio 4, určenom pre prácu so zariadeniami | ||
+ | |||
+ | firmy Atmel. <br /> | ||
+ | Použitý je 8-bitový mikrkontrolér s označením ATmega16. <br /> | ||
+ | Pre komunikáciu so snímačmi teploty je použitý pin 0 portu A. <br /> | ||
+ | Pre komunikáciu s LCD displejom sú využívané piny 0 až 5 portu C. <br /> | ||
+ | <br /> | ||
+ | |||
+ | '''Využívané piny''' <br /> | ||
+ | |||
+ | Port A <br /> | ||
+ | |||
+ | pin 0: 1-wire komunikacia <br /> | ||
+ | <br /> | ||
+ | |||
+ | Port C <br /> | ||
+ | |||
+ | pin 0: treti datovy bit <br /> | ||
+ | pin 1: druhy datovy bit <br /> | ||
+ | pin 2: prvy datovy bit <br /> | ||
+ | pin 3: nulty datovy bit <br /> | ||
+ | pin 4: enable pin <br /> | ||
+ | pin 5: RS pin <br /> | ||
+ | <br /> | ||
+ | |||
+ | '''Štruktúra programu'''<br /> | ||
+ | Program je pre lepšiu prehľadnosť napísaný vo viacerých súboroch. | ||
+ | Skladá sa z týchto časti: <br /> | ||
+ | - main.c ktorý obsahuje hlavný program <br /> | ||
+ | - lcd.c ktorý obsahuje funkcie pre obsluhu a komunkáciu s LCD displejom <br /> | ||
+ | - 1wire.c ktorý obsahuje funkcie potrebné pre správnu komunikáciu na zbernici | ||
+ | |||
+ | (z pohľadu mástra) <br /> | ||
+ | - hlavičkové subory k 1wire zbernici a LCD displeju (1wire.h a lcd.h)<br /> | ||
+ | |||
+ | <br /> | ||
+ | <br /> | ||
+ | <source lang="c"> | ||
+ | |||
+ | </source> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
[[Category:AVR]] [[Category:DVPS]] | [[Category:AVR]] [[Category:DVPS]] |
Verzia zo dňa a času 09:53, 6. január 2013
Zadanie
- Zobrazte teplotu z dvoch snímačov teploty pripojených na zbernicu 1-Wire.
Vypracovanie
- Bc. Ján Baláž
- Bc. Jozef Kupčiha
- Študijný odbor: Aplikovaná mechatronika
- Ročník: 2. Ing.
Obsah
1-Wire Zbernica
Ako už z názvu vyplýva ide o jednovodičové sériove rozhranie s možnosťou polo
duplexnej obojsmernej komunikácie. Zbernica sa skladá v podstate z dvoch
vodičov a to dátového a zemiaceho. Dátový vodič slúži zároveň na napájanie
zariadeni pripojených na tuto zbernicu.
Oblasti použitia napr:
- identifikačné systémy
- senzory (teploty, vlhkosti a podobne )
- digitálne potenciometre a iné
Vlastnosti:
- dĺžka vodiča až 100m
- na jednu linku je možné pripojiť do 150 zariadení s unikátnym
sériovým číslom
- zabezpečenie pomocou 8-bitového CRC kódu
- obojsmerná poloduplexná prevádzka
- identifikácia zariadenia na základe 8-bajtového sériového čísla a 1-
bajtovej informácie o type zariadenia
- realizácia prepojenia je pomocou skrútenej dvojlinky – twisted pair
Zapojenie:
Zariadenia sú trvalo pripojené na napájacie napätie „PullUp“ rezistor obr.1
Komunikacia
Komunikácia je inicializovaná mikropočítačom zmenou úrovne napätia na zbernici
na 0 V. Komunikácia je založená na takzvaných „časových slotoch“, čiže od
závislosti doby trvania poklesu úrovne napätia je slave zariadením
identifikovaný typ operácie (zápis log.1 alebo log.0, čítanie log.1 alebo
log.0, reset a identifikácia zariadenia).
Inicializácia
- - Na začiatku uPC (master) ztiahne zbernicu k zemi (cez pull up rezistor) na
minimálne 480us, potom ju uvoľní.
- - Na uvoľnenie zbernice a vrátenie do kľudového stavu je potrebných 60us. Po
tejto dobe je možné prečítať stav zbernice.
- - Ak je na zbernici pripojené nejaké zariadenie, odpovedá ztiahnutím zbernice
na dobu 60 až 240 us. Ak sa na zbernici nenacháda žiadne zariadenie, zbernica
ostáva po celú dobu v kľudovom stave.
- - Celková dĺžka trvania inicializačného procesu je minimálne 2x480us, teda až
po dobe 960us môže prísť ďalší signál od mástra.
Vysielanie
- Log 1
- - stiahnutie zbernice po dobu mnimálne 1us.
- - uvoľnenie zbernice.
- - dĺžka slotu pre zápis je v rozsahu 60 až 120us.
- Log 0
- - stiahnutie zbernice po dobu mnimálne 60us.
- - uvoľnenie zbernice.
- - dĺžka slotu pre zápis je v rozsahu 60 až 120us.
Čítanie
- - čítanie je inicializované mástrom. Ten najprv stiahne zbernicu po dobu
minimálne 1us, následne ju uvoľní.
- - následuje čítanie zbernice mástrom. To je inicializované po minimálne 15us
od začiatku slotu (ten je určený počiatkom stiahnutia zbernice mastrom).
- - ak slave chce vyslať log 1, ponechá zbernicu uvoľnenú až do konca slotu
(master prečíta log 1 - uvoľnená zbernica).
- - ak slave chce vyslať log 0, ztiahne zbernicu (master prečíta log 0 -
ztiahnutá zbernica).
- - celková dĺžka slotu čítania je 60 až 120us.
V našom prípade sme pracovali so snímačmi teploty s označením DS18B20. Preto sú na obrázkoch vyššie použité pre lepšie pochopenie komunikácie na
zbernici informácie z datasheetu snímača DS18B20
Priebeh komunikacie na zbernici 1Wire
Každé zariadenie obsahuje výrobcom nastavenú 64-bitovú informáciu v internej
ROM pamäti. Prvých horných 8 bitov slúži na zabezpečenie CRC kódom, potom
nasleduje 48-bitové sériové číslo zariadenia a dolných 8 bitov tvorí kód
identifikujúci typ zariadenia. Táto 64-bitová informácia je unikátna pre každé
vyrobené zariadenie s možnosťou tak jednoznačnej identifikácie aj viacerých
zariadení rovnakého typu pripojených na jednu linku.
Komunikácia má tri stupne:
- Inicializácia
Vykonáva sa pri resete PRESENCE pulsom od slave zariadenia
- ROM príkaz
V prípade, že je na jednej zbernici viac zariadení tak použíjme tieto príkazy
pre prácu s jednotlivými zariadeniam.
Príkazy: a) Search ROM [F0h] - Vyhladavanie adries zariadení pripojených na zbernicu b) Read ROM [33h] – tento príkaz môže byť použitý iba pri jednom zariadení na
zbernici – umožňuje prečítať 64 bitový ROM kód
c) Match ROM [55h] – tento príkaz spolu so 64 bit ROM kódom umožňuje vybrať to
zariadenie s ktorým chceme pracovať.
Odpovedá iba SLAVE, ktorého ROM kód sa zhoduje s odoslaným ROM kódom d) Skip ROM [CCh] – bez adresácie – komunikuje sa s zariadením bez adresácie –
iba jedno zariadenie na zbernici
e) Alarm search [ECh] – podobný príkazu Search ROM s tým že odpovedá iba SLAVE
s nastaveným alarm bitom
- Funkčný príkaz
Tieto príkazy umožňujú čítať, zapisovať do pamäte, merať teplotu a zisťovať
(stav) napájanie.
Napr: a) CONVERT [44h] – zmeria sa teplota a zapíše do pamäte. b) READ SCRATCHPAD [BEh] - Čítanie pamäte (data o teplote). Čítajú sa postupne
bajty od LSB.
c) A iné
Senzor teploty DS18B20
Popis
- napájanie je 3,0V – 5,5V
- rozsah meranej teploty od –55°C do +125°C (-67°F do +257°F)
- presnosť 0,5°C v rozmedzí –10°C do +85°C
- rozlíšenie senzora je voliteľné v rozsahu 9 až 12 bit
- meranie teploty s rozlíšením 12 bit trvá 750ms
Všetky informácie su uvedené v DataSheete obvodu Ktorý si môžte
Vyhotovenie senzora
Senzor sa vyrába v troch púzdrach: TO-92, SO-8 a uSOP-8.
Pamäť senzora
Pamäť senzora – nazvaná SCRATCHPAD obsahuje 8 bajtov.
Bajt 0 a 1 obsahujú 16 bitové číslo s údajom o teplote. Ďalšie Bajty sú vysvetlené v obrázku nižšie
Bajt číslo 4
Nastavenia konfiguračných bitov v Bajte čislo 4
Zapojenie a Program
Funkcia zariadenia
Zariadenie ma za úlohu odmerať teplotu na viacerých snímačoch (v tomto prípade
dvoch). Následne tieto hodnoty zobraziť na displeji.
Snímače sú pripojené k zberici 1-wire. Identifikácia jednotlivých snímačov je
základe ich jedinečného sériového čísla.
Snímače využívajú v zapojení tri vodiče. Dátový vodič, vodič pre napájanie
snímača a spoločný neutrálny vodič.
Bloková schéma celého zapojenia
- tu vlozit blokovku zapojenia procak + LCD + snimače + zdroj (ešte nemame
urobenu blokovku)
Program
Program je písaný v jazyku C, v AVR Studio 4, určenom pre prácu so zariadeniami
firmy Atmel.
Použitý je 8-bitový mikrkontrolér s označením ATmega16.
Pre komunikáciu so snímačmi teploty je použitý pin 0 portu A.
Pre komunikáciu s LCD displejom sú využívané piny 0 až 5 portu C.
Využívané piny
Port A
pin 0: 1-wire komunikacia
Port C
pin 0: treti datovy bit
pin 1: druhy datovy bit
pin 2: prvy datovy bit
pin 3: nulty datovy bit
pin 4: enable pin
pin 5: RS pin
Štruktúra programu
Program je pre lepšiu prehľadnosť napísaný vo viacerých súboroch.
Skladá sa z týchto časti:
- main.c ktorý obsahuje hlavný program
- lcd.c ktorý obsahuje funkcie pre obsluhu a komunkáciu s LCD displejom
- 1wire.c ktorý obsahuje funkcie potrebné pre správnu komunikáciu na zbernici
(z pohľadu mástra)
- hlavičkové subory k 1wire zbernici a LCD displeju (1wire.h a lcd.h)