Klimasz Cezary termometr ds18b20, AVR
[ Pobierz całość w formacie PDF ]
sss
1
Spis tre
Ļ
ci
1. Przedstawienie standardu 1-wire ......................................................
str. 3
2. Dokumentacja układu DS18B20 ........................................................
str. 3
3. Obsługa termometru DS18B20 w j
ħ
zyku C .....................................
str. 16
4. Podsumowanie ....................................................................................
str. 20
5. Bibliografia ..........................................................................................
str. 20
DODATEK – Podstawowe operacje bitowe ..........................................
str. 20
2
jest rodzajem interfejsu elektronicznego jak rwnieŇ i protokoþu komunikacyjnego
pomiħdzy dwoma (lub wiħcej) urzĢdzeniami. Jego nazwa wywodzi siħ stĢd, Ňe do caþkowitej
komunikacji uŇywana jest tylko jedna linia danych. Dodatkowo, odbiornik moŇe byę zasilany
bezpoĻrednio z linii danych, wykorzystujĢc zasilanie pasoŇytnicze, co jest ogromnĢ zaletĢ tego
interfejsu. Odbiornik wyposaŇony jest bowiem w kondensator o pojemnoĻci 800 pF, ktry jest
þadowany bezpoĻrednio z linii danych - nastħpnie energia w nim zgromadzona uŇywana jest
do zasilania odbiornika.
PoþĢczenie 1-Wire zostaþo opracowane przez Dallas Semiconductor. UmoŇliwia ono
stosunkowo niewielkĢ przepustowoĻę transmisji danych - standardowo 16 kbps (w trybie
overdrive maksymalnie do 142 kbps).
1-Wire jest podobne do interfejsu IčC, ale z uwagi na pojedynczĢ liniħ komunikacyjnĢ jest
zarwno wolniejsze, jak i taısze. Interfejs 1-Wire jest zazwyczaj uŇywany do komunikacji
pomiħdzy niewielkimi urzĢdzeniami, takimi jak: termometry cyfrowe, instrumenty
metrologiczne, sterowniki þadowania akumulatorw, zamki elektroniczne typu iButton, itd.
Protokþ 1-wire zakþada wsplnĢ liniħ danych dla ukþadw master i slave
Ukþad firmy Dallsa Semiconductors DS18B20 jest
cyfrowym termometrem o programowalnej
rozdzielczoĻci. Jego podstawowe cechy to:
o
komunikacja za pomocĢ interfejsu 1-wire,
o
kaŇdy odbiornik posiada unikalny 64 bitowy
kod umieszczony w wewnħtrznej pamiħci
ROM ukþadu,
o
maksymalnie uproszczony sposb odczytu
temperatury,
o
nie potrzebuje Ňadnych zewnħtrznych
komponentw,
o
moŇe byę zasilany z linii danych,
o
zasilanie od 3V do 5,5V,
3
o
dokþadnoĻę 0,5
o
C dla zakresu -10
o
C Ô 85
o
C,
o
moŇliwoĻę ustawienia rozdzielczoĻci od 9 do 12 bitw,
o
konwersja 12 bitowego sþowa Î max. 750ms.
Rysunek poniŇej przedstawia budowħ logicznĢ ukþadu DS18B20. Pamiħę ROM 64-bitowa
zawiera unikalny adres ukþadu. Scratchpad (notatnik) zawiera 2 bajtowy rejestr z wartoĻciĢ
temperatury dostarczonĢ cyfrowo z czujnika. W dodatku, scratchpad zapewnia dostħp do
jedno-bajtowego rejestru porwnaı (T
H
i T
L
) oraz do jedno-bajtowego rejestru
konfiguracyjnego. Rejestr konfiguracyjny pozwala na ustawienie rozdzielczoĻci konwersji
temperatury (9, 10, 11 lub 12 bitw). T
H,
T
L
oraz rejestry konfiguracyjne sĢ typu EEPROM,
dlatego ich zawartoĻę nie zmienia siħ po wyþĢczeniu zasilania.
Ukþad DS18B20 korzysta z magistrali oraz protokoþu 1-Wire opisujĢcego komunikacjħ przy
uŇyciu tylko jednej linii sygnaþowej. Linia ta potrzebuje rezystora podciĢgajĢcego (pullup). Dla
takiej magistrali, mikroprocesor rozpoznaje i adresuje urzĢdzenia uŇywajĢc unikalnych 64-
bitowych kodw (tzw. kod ROM). KaŇde urzĢdzenia ma swj wþasny unikalny kod, dlatego
iloĻę urzĢdzeı moŇliwych do zaadresowania w wirtualnej magistrali jest praktycznie
nieograniczona. JednĢ z cech ukþadu DS18B20 jest moŇliwoĻę obsþugi bez zewnħtrznego
Ņrdþa zasilania. Mwi siħ tutaj o tzw. zasilaniu pasoŇytniczym.
PodstawowĢ zaletĢ ukþadu DS18B20 jest cyfrowe przedstawienie temperatury. RozdzielczoĻę
czujnika jest konfigurowalna przez uŇytkownika: 9, 10, 11 lub 12 bitw, odpowiadajĢce
odpowiednio dokþadnoĻciom 0.5
o
C, 0.25
o
C, 0.125
o
C, 0,0625
o
C. Ustawienia domyĻlne to 12
bitw. Aby zainicjowaę tryb pomiaru temperatury i przeprowadzię konwersjħ A-C, ukþad
master musi wysþaę polecenie Convert T (0x44). Po konwersji, wynik jest przechowywany w
dwu-bajtowym rejestrze w pamiħci scratchpada, zaĻ ukþad slave odpowiada na to przechodzĢc
w stan bezczynnoĻci. JeĻli DS18B20 jest zasilany z zewnħtrznego Ņrdþa, wtedy po konwersji
master moŇe zapytaę o read time slots, zaĻ czujnik powinien odpowiedzieę, przez wysþanie
zera (kiedy jest w trakcie konwersji) lub jedynki (kiedy konwersja siħ zakoıczyþa). W trybie
pracy pasoŇytniczym nie jest moŇliwa taka opcja.
WyjĻciowa temperatura jest wyskalowana w stopniach Celcjusza. Dane o temperaturze
przechowywane sĢ jako 16-bitowe rozszerzone o znak, dwie uzupeþniajĢce siħ liczby w
rejestrze temperature register.
4
Bit znaku (S) sygnalizuje, czy temperatura jest dodatnia (S=0), czy ujemna (S=1). JeĻli
DS18B20 jest ustawiony na 12-bitowĢ rozdzielczoĻę, wszystkie bity w rejestrze zawierajĢ
dane. Dla 11-bitowego trybu, bit 0 jest niezdefiniowany. Dla 10-bitowej rozdzielczoĻci bity 0,
1 sĢ niezdefiniowane, zaĻ dla 9-bitowej, bity: 2, 1, 0. PoniŇej znajduje siħ przykþadowa tabela
z rŇnymi temperaturami (rozdzielczoĻę 12-bitw).
Po wykonaniu przez ukþad konwersji temperatury, wartoĻę temperatury jest porwnywana z
wartoĻciĢ zdefiniowanĢ przez uŇytkownika poprzez ustawienie wartoĻci w rejestrze 1-
bajtowym T
H
i T
L
. Bit znaku (S) sygnalizuje znak otrzymanej wartoĻci. JeĻli jest dodatnia
(S=0), zaĻ ujemna (S=1). Rejestr ten jest pamiħciĢ typu EEPROM, dlatego ustawienia nie sĢ
kasowane po odþĢczeniu zasilania.
Tylko zakres od jedenastego do czwartego bitu z rejestru temperature register jest
uŇywanych przy porwnaniu. JeĻli mierzona temperatura jest niŇsza niŇ zadeklarowane T
L
lub
wyŇsza niŇ T
H
ustawiana jest flaga alarmu. Flaga ta jest aktualizowana po kaŇdym pomiarze.
Master moŇe sprawdzię status flagi alarmu przez wysþanie polecenia Alarm Search (0xEC).
KaŇdy ukþad DS18B20 posiada unikalny 64-bitowy numer umieszczony w pamiħci ROM. Osiem
najmþodszych bitw dla tego typu ukþadw to kod 0x28. Nastħpne 48 bitw zawiera unikalny
numer. Osiem najstarszych bitw zawiera CRC obliczone z pierwszych 56 bitw kodu.
5
[ Pobierz całość w formacie PDF ]