Zbernica 1-Wire: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 113: | Riadok 113: | ||
== ''' Senzor teploty DS18B20''' == | == ''' Senzor teploty DS18B20''' == | ||
'''Popis''' | === '''Popis''' === | ||
* napájanie je 3,0V – 5,5V | * napájanie je 3,0V – 5,5V | ||
* rozsah meranej teploty od –55°C do +125°C (-67°F do +257°F) | * rozsah meranej teploty od –55°C do +125°C (-67°F do +257°F) | ||
Riadok 128: | Riadok 128: | ||
[[Súbor:PuzdraDS18B20.png]] | [[Súbor:PuzdraDS18B20.png]] | ||
'''Pamäť senzora''' | === '''Pamäť senzora'''=== | ||
Pamäť senzora – nazvaná SCRATCHPAD obsahuje 8 bajtov. | Pamäť senzora – nazvaná SCRATCHPAD obsahuje 8 bajtov. | ||
Bajt 0 a 1 obsahujú 16 bitové číslo s údajom o teplote. | |||
Bajt 2 a 3 slúžia | |||
Verzia z 18:39, 5. január 2013
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.
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 pre 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) COVERT T [44h] – zmeria sa teplota a zapíše do pamäte. a pre čítanie pamäte (data o teplote) sa b) READ SCRATCHPAD [BEh] - Čítanie pamäte (data o teplote). Čítajú sa postupne bajty od LSB. c) A iné
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
[[1]].
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 stiahnuť tu
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. Bajt 2 a 3 slúžia
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)