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