| 
				     | 
				
| (7 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]]
  |  | 
 | 
  |  | 
 | 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. 
  |  | 
 |  Bajt 2 a 3 slúžia 
  |  | 
 | 
  |  | 
 | 
  |  | 
 | 
  |  | 
 | [[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>
  |  |