DS18S20


8
Ocena: None Średnia: 8 (1 głosujący)

Układ DS18S20, wyprodukowany przez firmę MAXIM/DALLAS (http://www.maxim-ic.com/), jest cyfrowym termometrem pracującym na magistrali 1-Wire. Do komunikacji z mikrokontrolerem wymagany jest tylko jeden przewód (oraz masa). Zasilanie potrzebne do odczytu oraz konwersji temperatury pobierane może być z linii danych lub dodatkowym przewodem z układu sterującego. Każdy z czujników ma własny niepowtarzalny numer seryjny co sprawia że na jednej magistrali może ich pracować teoretycznie dowolna ilość.

Kartę Katalogową układu DS18S20 można pobrać ze strony producenta. Link bezpośredni dostępny tutaj

Ważniejsze właściwości:
- Magistrala 1-Wire wymagająca tylko jednego pinu do komunikacji
- Każdy z układów posiada własny unikalny 64-bitowy kod
- Nie potrzebuje elementów zewnętrznych
- Może być zasilany napięciem od 3V do 5.5V
- Mierzy temperaturę od -55 do +125 stopni
- Zapewnia dokładność 0.5 stopnia dla temperatur -10 do 85 stopni
- 9-bitowa rozdzielczość
- Konwertuje temperaturę nie dłużej niż 750ms
- Zawiera termostat

Wyprowadzenia:
Na rysunku poniżej przedstawiony jest rozkład wyprowadzeń dla czujnika DS18S20 w obudowie TO-92

GND - masa; DQ - linia danych; Vdd - zasilanie

Krótki opis działania:
Ds18S20 będący w stanie uśpienia musi otrzymać od mikrokontrolera rozkaz konwersji temperatury (Convert T [44h]). Po pomiarze temperatura wpisywana jest do dwóch bajtów rejestru (scratchpad memory) a układ znowu powraca do stanu uśpienia. Na poniższym rysunku przedstawione są dwa pierwsze bajty w pamięci DS18S20.

Wszystkie bity starszego bajtu MSB oznaczone jako S zawierają informację o znaku temperatury, natomiast bajt LSB zawiera teperaturę pomnożoną przez 2. Dla teperatur dodatnich jest ona wyrażona w kodzie binarnym a dla ujemnych w kodzie U2 (uzupełnień do dwóch). Widok całego rejestru ukladu DS18S20 przedstawia poniższy rysunek.

Po dokładny opis pozostałych bajtów w rejestrze odsyłam do orginalnej karty katalogowej. W praktyce przy budowie prostych urządzeń wykorzystujących czujnik DS18S20 będziemy odczytywać tylko dwa pierwsze bajty a potem nastąpi reset magistrali 1-Wire.

Komunikacja i Rozkazy:
Komunikacja z układem DS18S20 odbywa się w trzech krokach

a) Inicjalizacja
Jest to sygnał esetu magistrali wykonywany przez mikrokontroler sterujący. Każda transmisja przez magistralę 1-Wire musi rozpocząć się od tego sygnału.

b)Komendy ROM
Są to polecenia służące do operowania na unikalnym 64-bitowym kodzie układu. Zapewniają określenie ile i jakie układy podpięte są do magistrali, odczytanie numerów zapisanych w ich pamięci ROM oraz uaktywnienie układu o znanym wcześniej numerze.
Do najważniejszych poleceń z tej grupy należą:
Reed Rom [33h] - Pozwala procesorowi na odczyt 8 bajtów numeru seryjnego układu. Nie działa gdy na magistrali jest więcej niż jeden układ.
Match Rom [55h] - Umozliwia aktywowanie jednego z układów na magistrali za pomocą jego 64-bitowego numeru.
Skip Rom [CCh] - Pozwala na pominięcie sprawdzania numerów układów i wysłanie jednocześnie rozkazów do wszystkich układów na magistrali. Komenda jest przydatna do wysyłania poleceń konwersji temperatury do wszystkich czujników temperatury pracujących na jednej magistrali, lub gdy używamy tylko jednego układu DS18S20.

c) Komendy Funkcji Układu
Rozkazy te następują po komendach dotyczących wyboru układu lub pominięcia sprawdzania numeru. Służą do konwersji temperatury oraz do zapisu lub odczytu danych z rejestrów DS18S20. Do najważniejszych poleceń z tej grupy należą:
Convert T [44h] - Rozkaz ten rozpoczyna proces konwersji temperatury, po jego zakończeniu wyniki będą umieszczone w dwóch bajtach rejestru DS18S20
Read Scratchpad [BEh] - Rozkaz powoduje sekwencję odczytu danych z rejestru czujnika począwszy od bajtu 0 do 8. Odczyt może być przerwany przez sygnał resetu magistrali 1-Wire jeżeli nie potrzeba wszystkich 9 bajtów.

Uwaga! Rysunki użyte w opisie pochodzą z karty katalogowej, zostały zamieszczone tylko w celach edukacyjnych.