Kącik BASCOM'a

HOME
 
Wstęp
Mój Projekt
Strony BASCOM'owe
EdWin
Kolejki
PDF'y
 
>> PCB <<
 
Strony z  Elektroniką
 
O mnie
49.468
 

Termomert cyfrowy

z użyciem układu DALLAS DS1820.

Sam układ jest prosty, lecz stanowi początek większej całości, tzn.: sterownika ogrzewania z piecem gazowym, bojlerem ciepłej wody i pompki cyrkulacyjnej dla domku jednorodzinnego. Celem jest ograniczenie zużycia gazu oraz prądu, z uwzględnieniem taniej/drogiej taryfy prądu (dni tygodnia itd.) w oparciu o złomowe komputery (PC klasy 286/386/486 z DOS-em).
Układ termometru zbudowałem w oparciu o płytkę AVT-2500 z dołączonym tylko jednym elementem - DS1820 zgodnie z rys. poniżej:
 

AVT-2500
--------
       I                  ----------------
 GND   <------------------| 1            | \
1WIRE  <------------------| 2   DS1820   | |
       I            NC ---| 3            | /
--------                  ----------------



Układ DS1820 jest scalonym termometrem/termostatem, który do pomiaru temperatury używa dwóch generatorów o różnych współczynnikach temperaturowych. Z różnicy częstotliwości tych generatorów wylicza się temperaturę, którą możemy odczytać na 9 bitach. Zakres mierzonych temperatur -55 do +125 st. C z dokładnością do 0,5 stopnia.
W materiałach firmy DALLAS opisany jest sposób zapisu temperatury oraz przykładowe sposoby komunikacji urządzenia MASTER na magistrali 1WIRE w celu odczytania temperatury (jak i ustawienia termostatu).

Procedura inicjująca pomiar temperatury i odczytująca ją (DS1820.PDF str. 21):

wysłanie RESETu na 1WIRE,
sprawdzenie obecności układu,
wysłanie polecenia "Match ROM" wskazanie na konkretny układ,
wysłanie polecenia "Convert T" odczytaj temperaturę,
odczekaj minimum 500 ms,
wysłanie RESETu,
sprawdzenie obecności układu,
wysłanie polecenia "Match ROM",
wysłanie polecenia "Read Scratchpad" - żądanie odczytania zawartości pamięci,
czytanie temperatury,
RESET,
sprawdzenie obecności układu.

Powyższa procedura jest zaimplementowana w załączonym programie dla BASCOM 8051 DEMO (2.06) - Termometr wer. 1.1 (starsza wersja 1.0 z błędem - Termometr.BAS)

Uwagi do projektu:

całkowicie pominąłem kontrolę CRC przekazywanych danych;
układ wydaje mi się działa prawidłowo, tzn. nie sprawdzałem jego odczytów z przyrządami laboratoryjnymi ale porównując z termometrem zaokiennym (temperatury ujemne) i pokojowym
(dodatnie) otrzymałem zbliżone odczyty;
podczas prób z wysokimi temperaturami powyżej 41,5 st. termometr zaczyna pokazywać 0 (zero) stopni (patrz uwaga poniżej). 
:-))
Nie wiem, czy jest to wada mojego egzemplarza czy coś trzeba jeszcze zrobić by osiągnąć katalogowy zakres do 125 st., który jest mi potrzebny (do pomiaru np. temp. wody w bojlerze).
Temperatury ujemne sprawdziłem maksymalnie do -24 st. w zamrażarce :-))
 

Opis błędu:

Okazało się, że popełniłem błąd, który mi wskazał Krzysztof S. (dzięki !). Przeoczyłem fakt, opisany w helpie, że polecenie Waitms dopuszcza tylko wartości 1-255. 
Zamiast polecenia Waitms 500 użyłem teraz dwa razy Waitms 250, co dało czujnikowi DS1820 czas na pełne dokonanie konwersji temperatury i zacząłem je odczytywać również w zakresie powyżej 41,5 st. C.


  Rumia, maj 2015.