Termometr cyfrowy na układzie DS1820

Teoria, praktyka, sprzęt, kolumna
Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Termometr cyfrowy na układzie DS1820

Post autor: Citizen Kane » 2006-02-10, 16:26

Pomiar temperatury za pomocą układu DS1820

<center><img src="http://bimber.ovh.org/images/czujnik.jpg" border="1"></center>

Jakiś czas temu na Oliwce pojawiły się posty o pomiarze temperatury za pomocą układu DS1820. Jako, że osobiście zmontowałem ten termometr, postanowiłem zebrać wszystkie informacje w jednym miejscu aby ewentualnie zachęcić was do samodzielnego wykonania tego układu. Budowa jest na tyle prosta, że powinnią sobie z nią poradzić nawet osoby nie mające doświadczenia z elektroniką. Jak widać na zdjęciu elementów nie ma wiele i są na tyle małe, że wszystkie z powodzeniem mieszczą się z standardowej wtyczne złącza RS232. Można co prawda zbudować wszystko w tzw. pająka, ale tej metody nie polecam. Wykonanie układu we wtyczne wydaje mi się bardziej eleganckie, a już na pewno bardziej trwałe i co za tym idzie niezawodne.

<center><img src="http://bimber.ovh.org/images/moje_rs232.jpg" border="1"></center>

Czym jest DS1820 (zamienniki to DS18S20 lub DS18B20) - jest to układ scalony produkwany przez firmę Dallas Semiconductor, będący czujnikiem temperaturowym. Podstawowe parametry układu:

- unikalny kod 64-bitowy w każdym czujniku
- zakres temperatur -55°C - +125°C
- dokładność 0,5°C (w zakresie -10°C - +85°C)
- używa interfejsu 1-Wire(tm)
- 12 bitowa rozdzielczość pomiaru
- maksymalna długość magistrali pomiarowej 30m

Układ nie wymaga żadnej kalibracji, jest już ustawiony przez producenta i komunikuje się przez magistralę 1-Wire za pomocą sygnałów cyfrowyvh. Magistrala 1-Wire oznacza, że do przesłania sygnałów z termometru do komputera wykorzystywany jest tylko jeden przewód (oczywiście nie może obyć się bez masy (GND), która jest drugą żyłą). Liczba czujników może być zwielokrotniona, i dalej wszystkiem będą mogły korzystać do przesyłania danych z tego samego przewodu. Identyfikację poszczególnych termometrów w aplikacji sterującej zapewnia indywidualny 64 bitowy kod zapisany w układzie. Dokładność pomiaru wydaje się być niewielka, ale zaręczam że jest wystarczająca dla naszych celów. Myślę, że w większy błąd możemy być wprowadzeniu przez zróżnicowanie ciśnienia atmosferycznego, niż z powodu błędu pomiaru czujnika. Dla ścisłości dodam, że istnieje możliwość znacznego zwiększenia dokładności pomiaru, ale w warunkach domowych jest ona praktycznie nie do zrealizowania. Mimo względne dużego błędu pomiaru, sama rozdzielczość czujnika jest bardzo wysoka. W trybie 12bit (największa rozdzielczość) pomiar dokonywany jest z dokładnością do 0,0625°C. To zadowoli to chyba już wszystkich.

Układ elektroniczyny jest badzo prosty. Jest to adapter dostosowujący magistralę 1-Wire do portu szeregowego komputeera RS-232. Jeżeli w swoim sprzęcie nie masz portu RS-232 musisz użyć odpowiedniej przejściówki USB-RS232 (do nabycia na Allegro).

<center><img src="http://bimber.ovh.org/images/ds_schemat.gif" alt="schemat"></center>

<ul>
<li>UL DS1820 (odpowiednik DS18S20. DS18B20) <li>D1 Dioda Schottky BAT85 (odpowiednik 1N5818)<li>D2 Dioda Zenera 6,2V<li>D3 Dioda Zenera 3,7V <li>D4 Dioda Schottky BAT85 (odpowiednik 1N5818)<li>R1 Rezystor 1,5K Ohm<li>Wtyczka RS232 żeńska plus obudowa </ul>

<center><img src="http://bimber.ovh.org/images/rs232.jpg" border="1"></center>

Z widocznej na zdjęciu wyżej wtyczki będziemy wykorzystywać następujące piny:
<ul><li> 2 - RXD<li> 3 - TXD<li> 4 - DTR <li> 5 - GND</ul>
Numery nóżek DS-a, w położeniu układu jak na pierwszym zdjęciu u góry to: 1-2-3. Koszt części przy założeniu, że wykorzystamy jeden element pomiarowy wyniesie około 11 PLN. Jednym z miejsc gdzie można najtaniej nabyć części elektroniczne jest Allegro. DS18S20 (najdroższy elemet zestawu) w zależności od sprzedawcy kosztuje około 7,5 PLN. Pozostałe części to groszowa sprawa.

Do odczytu czujników Dallasa wykorzystamy komputer z zainstalowanym odpowiednim oprogramowaniem. W sieci istnieje stosunkowo dużo różnych aplikacji. Ja wykorzystałem program Lampomittari. Potrafi on obsługiwać większa liczbę czujników, posiada możliwość zaprogramowania alarmów i wszystko prezentuje na zgrabnym wykresie. Program mozna pobrać z jego <a href="http://elektroniikka.org/thermometer/">strony domowej</a>, lub ze strony <a href="http://termik.ok.9x.pl/">Alarmusa</a>, który prowadzi, mniej więcej, jej polski odpowiednik. Polecam jednak wizytę na stronie pierwszej z uwagi na ewentualną możliwość ściągnięcia najnowszej wersji programu. Na stronie Alarmusa znajduje się obrazkowa konfiguracja, więc nikt nie powienien miec problemów z przystosowaniem programu do swoich potrzeb.

Przed budową układu przejrzałem forum Alarmusa i Elektrody w celu zorientowania się co do problemów, które mogą mnie czekać. Szczęśliwie okazało się, że w moim przypadku wszystko zadziałało od razu. Mam trzy czujniki w magistrali równoległej, całkowita długość do skrajnego elementu wynosi u mnie około 7 metrów. Firma Dallas podaje w notach katalogowych, że maksymalna długość magistrali 1-wire nie powinna przekraczać długości 30 metrów, ale doświadczenia użytkowników wskazują, że poprawny odczyt temperatury jest możliwy nawet z odległości 100 metrów!. Kierując się uwagami z forum zmieniłem w stosunku do oryginalnego schematu diodę zenera z 6,2V na 5,1V oraz dodałem kondensator 4,7nF/250V, podłączony równolegle do tej diody.

Oto małe FAQ po wizycie na forach:
<ul><li>Nie mam komunikacji z czujnikiem<br> Sprawdź czy w programie odczytującym temperaturę prawidłowo wybrano numer portu COM. Sprawdź poprawność montażu elektrycznego elementów. Diody Zenera muszą mieć moc 500mW.
<li>Program pokazuje ---- zamiast temperatury<br> Zmień czas oczekiwania na 1 sekundę. Temperatura powinna pojawiać się szybciej.
<li>Mam kłopoty z komunikacją na dużych odległościach, przy krótkim kablu jest OK<br> Należy do nózki Data czujnika (środkowa) dolutować rezystor 100 omów. Dodatkowo można wstawić równolegle do diody Zenera 6,2V kondensator 4,7nF/250V. Inną metodą do prawidłowej komunikacji czujników przy większych odległościach i topologii sieci typu gwiazda jest zastosowanie tzw. przełączników (np. DS2409), ang. Couplers http://pdfserv.maxim-ic.com/en/ds/DS2409.pdf
<li>Używam DS1820 soft i dostaje wyniku na przemian -999.9 i 85<br> pierwsza część odpowiedzi wyżej.
<li>Termometr pokazuje cały czas +85C lub brak jest wskazania<br> Prawdopodobie winę za to ponosi zwiększony prąd pobierany przez przetwornik. Należy podać napięcie +5V na nóżkę VDD czujnika (zmodyfikowany układ: http://www-e.uni-magdeburg.de/mthraenh/newapp74.pdf). </ul>

Linki o DS1820:
Elektroda Komputerowy termometr DS1820: http://www.elektroda.net/dla_kompa/ds1820/
Elektroda - forum: http://www.elektroda.pl/rtvforum/topic1 ... asc-0.html
Karta katologowa DS18S20: http://pdfserv.maxim-ic.com/en/ds/DS18S20.pdf
Strona Alarmusa: http://termik.ok.9x.pl/ lub http://termik.alarmus.boo.pl/
Termometr cyfrowy: http://ds18b20.friko.pl/index.html
Miernik temperatury: http://eko.one.pl/index.php?page=Termometr
Soft do Linuksa: http://www.digitemp.com/
Termometr do PC: http://www.republika.pl/grzesiek21/termo.htm
Opis układów, programowanie: http://republika.pl/rejestr/strony/termometr.html

Coś o kalibracji czyjników

Post z forum Alarmusa:
"Te układy są tak czułe, że porównywanie z termometrem wzorcowym musi się obywać w ośrodku o dużej przewodnosci cieplej aby na małej odległości nie było różnicy temperatur, bo w powietrzu to byle dmuchnięcie zakłamie pomiar tak że kalibracja nie zwiększy dokładności. Dlatego najlepiej by było aby to zrobić w specjalnej komorze cieplnej gdzie błąd pomiaru jest mniejszy niż 0.05°C. Przyjęcie samego alfa sprawi że wyrównamy błąd pomiaru do błędu w miejcu Tzero _slope na cały przedział (-55°C - 125°C) pod warunkiem że poprawnie go odgadliśmy, a może się on zawierać w przedziale 10-30°C. Jeżeli nie zgadniemy, to zmienimy błąd tak że będzie się zmieniał liniowo i w ten sposób zawężamy zakres na którym mamy największą precyzję pomiaru do temperatur dodatnich jeżeli nie znamy błędu w tym punkcie. Patrząc na wykresy błędów można się spodziewać że dla całego zakresu temperatur ujemnych możemy mieć błąd mniejszy niż 0.5°C a błąd pomiaru rośnie do ~+2°C tylko dla wysokich temperatur. Moje próby porównań z termometrami wzorcowymi skończyły się fiaskiem ze względu na brak warunków.

Najlepsza rada, to nie wpisywać niczego do alfa i Tzero_slope ani OFFset(jeżeli jest ujemny) jeżeli chcemy mierzyć temperatury ujemne. Jeżeli chcemy mierzyć temperatury powyżej 70°C to napewno zmniejszymy błąd pomiaru jak użyjemy alfa=0.000125 i Tzero_slope=20 podanej przez KK nie znając nawet OFFsetu. OFFset sprawdzałbym w temperaturze 20stC, co też nie jest łatwe w domowych warunkach jak masz wykryć różnice 0.2°C lub mniejszą. Wpisywanie samego OFFsetu da dobre rezultaty w temperaturach pokojowych."
Ostatnio zmieniony 2007-10-21, 17:37 przez Citizen Kane, łącznie zmieniany 2 razy.

Fenol
101%
101%
Posty: 230
Rejestracja: 2006-02-03, 16:43

Post autor: Fenol » 2006-02-11, 09:32

Cześć

Solidne opracowanie, gratulacje, odwaliłeś kawał dobrej roboty.
Mam tylko małą sugestię dla wszystkich, którzy zamierzają mierzyć temp. w okolicach 90*C - 100*C, żeby stosowali układ adaptera z wymuszonym zasilaniem.
Link do niego podaje Citizen Kane w 5 punkcie FAQ .Termometr pokazuje cały czas +85C ( http://www-e.uni-magdeburg.de/mthraenh/newapp74.pdf ).

Pozdrawiam
Fenol

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-11, 11:03

Ja zastosowałem 1-wire, bez osobnego zasilania i sprawdzałem (na skrajnym czujniku) temperaturę w gotującej się wodzie - dobiło do 98,3°C. Nie przejmuję się za bardzo zmierzoną wartością, ponieważ czujka była umieszczona w nierdzewnej rurce, i dodatkowo nie czekałem na ustabilizowanie się wskazania. Chodziło mi głównie o sprawdzenie czy odczyt temparatury w okolicach 100°C będzie możliwy (zamierzam umieścić ten czujnik w boilerze).

Niemniej aby nie było problemów z odczytem wyższych wartości, także polecam wykonać połączenie DS-ów trzema kablami. Da to 100% pewność, że układ zadziała poprawnie.

I pytanie, nie spotkał ktoś kalkulatora on-line, do obliczania zależności temperatury wrzenia od ciśnienia. Nadmienię, że wzór widziałem, ale jest dla mnie makabryczny.

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-13, 20:10

@Fenol i all... Maxim ponownie wysyła, a przynajmniej przyjmuje zamówienia na stronie www, z potwierdzeniem wysyłki. Dzisiaj zamówiłem darmowe próbki m.in. układów Dallas DS18S20 na http://www.maxim-ic.com/

Awatar użytkownika
Aabratek
101%
101%
Posty: 1395
Rejestracja: 2006-02-05, 16:20

Post autor: Aabratek » 2006-02-14, 21:11

chciałem zamówić ale za groma nie wiem co wybrać i jak wypełnić opcje :cry: normalnie zieleń

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-14, 22:32

Jak zamówić układy krok po kroku:
<ul>
<li>Pierwszą rzeczą jaką należy wykonać jest rejestracja na wspomnianej stronie http://www.maxim-ic.com/ Uruchamiamy przeglądarkę, odpalamy stronę, wchodzimy w Members, a następnie w Register For Membership
<li>W otworzonym formularzu podajemy:
<ul><li>e-mail - wiadomo <li>Password - hasło <li>Repeat Password - powtarzamy hasło <li>First Name - imię <li>Last Name - nazwisko <li>Address 1 - ulica i numer <li>City - miasto <li> Zipcode/Postal - kod pocztowy <li> Country - kraj</ul>
i na koniec naciskamy Submit
<li>Jeśli wszystko wpisaliśmy poprawnie, wyświetli się komunikat o treści Thanks For Registering, czyli podziekują nam za rejestrację. Na podaną w formularzu skrzynkę mailową przyjdzie list, którym trzeba następnie potwierdzić rejestrację (kliknięciem na link).
<li>Membership Activated - tak powinien wyglądać komunikat po aktywacji. Logujemy się wpisując adres e-mail i hasło, klikamy Log Me In
<li>Po poprawnym procesie rejestracji i zalogowaniu pojawi i zestawienie naszych danych
<li>Aby wyszukać układ na stronie w okienko szukajki wpisujemy DS18S20 i naciskamy Search Site
<li>Wyświetli się wiele linków, u mnie pierwszym od góry był: DS18S20 1-Wire Parasite-Power Digital Thermometer, klikamy i na dole otworzonej strony szukamy wiersza Links to More Information i znajdujemy Request Samples: DS18S20 - klik
<li>W tabeli w pierwszym rzędzie figuruje DS18S20 HI PRECIS MICROLAN DIG THERM TO-92 itd. naciskamy przycisk po prawej Sample Now, przycisk powienien zmienić się na Added. Warto jeszcze zwrócić uwagę czy w wierszu istnieje napis TO-92 jest to oznaczenie obudowy naszego czujnika.
<li>Przechodzimy do koszyka Sample Cart i tu w formularzu podajemy Sample Quantity - ilość zamawianych sztuk. Klikamy na Continue
<li>Otwiera się formularz danych, które podawaliśmy przy rejestracji. Wpisujemy dane, o ile nie są pełne (pomijamy pole State/Province) i naciskamy Submit.
<li>Tu, dokładnie nie pamiętam, ale pojawi się jeszcze ramka do wpisania, do czego mamy zamiar wkorzystać zamawiane układy. Można więc podać np. digital termometer, fan controler...
<li>Na koniec, jeżeli wszystkie etapy przebiegły pomyślnie, powinno pojawić się potwierdzenie, że na nasz adres przyjdzie przesyłka
<li>Cóż, pozostaje już tylko cierpliwie czekać... :-)
</ul>

Awatar użytkownika
Aabratek
101%
101%
Posty: 1395
Rejestracja: 2006-02-05, 16:20

Post autor: Aabratek » 2006-02-14, 23:05

a są jeszcze pozycje:
2 DS18S20+ HI PRECIS MICRN DIG THERM TO-92 LF
5 DS18S20-PAR PARASITE POWER DS18S20 TO-92
.. cóż to za ustrojstwa?

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-14, 23:22

Odmiany układu, bierz te sprawdzone DS18S20, DS18B20 w obudowach TO-92

Fenol
101%
101%
Posty: 230
Rejestracja: 2006-02-03, 16:43

Post autor: Fenol » 2006-02-15, 00:07

Cześć
AAbratek pisze:a są jeszcze pozycje:
...
5 DS18S20-PAR PARASITE POWER DS18S20 TO-92
...
.. cóż to za ustrojstwa?
Z tego co pamiętam to DS18S20-PAR (DS18S20P) jest wersją z zasilaniem "pasożytniczym". Nie wymaga, (i nie ma możliwości) dodatkowego (zewnętrznego) zasilania, może mieć problemy z pomiarem temp powyżej 85-90*C.

Pozdrawiam
Fenol

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-15, 00:39

Nie wiem jak pomiarem w okolicach 90°C, ale powyżej 100°C odczytu nie uzyskamy:
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2816

Awatar użytkownika
Aabratek
101%
101%
Posty: 1395
Rejestracja: 2006-02-05, 16:20

Post autor: Aabratek » 2006-02-15, 11:57

no tak to sami wprowadzają w błąd
DS18S20-PAR PARASITE POWER DS18S20 TO-92 TO92 Military (-55 deg C to +125 deg C)
- mniejsza o to, zamówiłem te pierwsze z listy - ciekawe czy przyślą :?: , czytałem że to jest różnie :?

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-02-15, 12:41

Jeśli przyślą, poinformuj nas, że wszystko jest OK. Ja zresztą zrobię to samo.

abstynent34

Post autor: abstynent34 » 2006-03-04, 19:55

pytanko

jak zaizolować ten czujnik żeby włożyć go do kolumny?

Awatar użytkownika
Citizen Kane
-#Admin
-#Admin
Posty: 5058
Rejestracja: 2005-12-19, 23:37
Lokalizacja: Polska
Kontaktowanie:

Post autor: Citizen Kane » 2006-03-04, 20:52

Tuleja z rurki nierdzewnej, zaspawana / zalutowana z jednej strony, to chyba jedyne sensowne rozwiązanie.

Awatar użytkownika
Aabratek
101%
101%
Posty: 1395
Rejestracja: 2006-02-05, 16:20

Post autor: Aabratek » 2006-03-04, 20:54

Ja zrobilem wg. opisu CO2 ( post: [27.09] 13:29 http://f.kuchnia.o2.pl/temat.php?id_p=1 ... start=1020 )
tu sposób umieszczenia: http://gorzalka.ovh.org/abratek/destyla ... zujnik.jpg - za pomocą rurki silikonowej (na wcisk)
Ten akurat jest w szklanej rurce:
Załączniki
czuj.jpg
... a Goździkowa przypomina - na ból głowy walnijcie klina !

ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości