Operácie

Zbernica 1-Wire: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentDVPS (diskusia | príspevky)
StudentDVPS (diskusia | príspevky)
 
(22 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:


== '''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]]
==='''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. Master vyšle resetovací impulz a Slave mu odpovie
[[Súbor:ramec1Wire.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
[[http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf|datasheet]].
== ''' 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
[[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>

Aktuálna revízia z 17:30, 6. január 2013