Operácie

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:
Sem príde správa z riešenia projektu.
+
'''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


  1. Zobrazte teplotu z dvoch snímačov teploty pripojených na zbernicu 1-Wire.

Vypracovanie


  1. Bc. Ján Baláž
  2. 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é

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

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.

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.

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é

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

stiahnuť tu

Vyhotovenie senzora

Senzor sa vyrába v troch púzdrach: TO-92, SO-8 a uSOP-8.

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

Pamet.jpg

Bajt číslo 4

Bajt c 4.png

Nastavenia konfiguračných bitov v Bajte čislo 4

Confg Bajt c4.jpg






Reset 1 wire.png

Vysielanie na 1 wire.png

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.
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č.

Schéma zapojenia snímača
DS18B20 externe napajanie.png

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)