Autor: Dondu
Na dole widok od nóżek
|
Temperatura - jak ją mierzyć?
Wystarczy, że kupisz popularny tani czujnik temperatury DS18B20.
Wystarczy, że kupisz popularny tani czujnik temperatury DS18B20.
Cena w dniu 14.04.2011 około 5.00 zł
Pomiar temperatury to jeden z ciekawych i niezbyt skomplikowanych projektów dających wiele satysfakcji.
Częstym problemem jest konwersja odczytanej temperatury na postać możliwą do wyświetlenia. Rozwiązanie tego problemu znajdziesz tutaj: Temperatura - konwersja na wyświetlacz
Tutaj znajdziesz więcej teorii:
- Cezary Klimasz - Termometr wraz z całym opisem używania DS18B20
- Using DS18B20 on AVR microcontrolers
- Interfacing the DS18X20/DS1822 with microcontroler
Ciekawe projekty:
Inne możliwości
Jeżeli masz w swoim mikrokontrolerze dostępny przetwornik ADC i wolny jakiś kanał pomiarowy, to możesz skorzystać z termistorów, które są znacznie tańsze (koszt około 1 zł - cena 2011r.).
Przykładem takiego układu jest rodzina MCP9700, MCP9701. To termistory, które za niską cenę oferują wystarczające parametry dla wielu zastosowań.
Dokumentacja: MSP970x datasheet
Ciekawe projekty:
Trzeci link nie działa
OdpowiedzUsuńLink poprawiony, dzięki za info!
OdpowiedzUsuńUWAGA! Brakuje BARDZO WAŻNEJ INFORMACJI:
OdpowiedzUsuńmały rysunek termometru u dołu to WIDOK OD DOŁU! - już parę osób przez niedoczytanie tego w dokumentacji posłało ds18b20 do "elektronicznego nieba", a tu WOGÓLE brak tej informacji.
Chyba kolega nie chce mieć tych biednych ds18b20 na sumieniu :D
Opisy zawsze są od strony wyprowadzeń. W tym przypadku od dołu. Nóżki są wyraźnie zaznaczone, więc jeśli Kolega patrząc z góry widzi nóżki, to nic tylko pogratulować wzroku :)
UsuńNapisać nigdy nie zaszkodzi. Zawsze znajdzie się jakiś początkujący co jeszcze nie przewertował tysięcy datasheet'ów i nie wie o tej, zdawać by się mogło trywialnej zasadzie.:)
UsuńWydaje mi się, że przy powiększeniu rysunek jest jednoznaczny, ale faktem jest że jako początkujący nie takie, rzeczy wyprawiałem, więc dodałem napis. :-)
OdpowiedzUsuńDzięki za zwrócenie uwagi!
Ja polecam znakomity temometr analogowy LM35 - łączymy do dowolnej nóżki ADC, puszczamy pomiary w free running mode i bez problemu idzie uzyskać 20000 odczytów na sekundę :) to wszystko uśredniamy i można tym sposobem uzyskać stabilny odczyt do 2 miejsc po przecinku (więcej nie ma sensu).
OdpowiedzUsuńCzy zna ktoś sposób jak na podstawie zmierzonej rezystancji termistora NTC obliczyć jego temperaturę?
OdpowiedzUsuńNie polecajcie opisu Cezarego Klimasza. Przykładowe kody są beznadziejnie napisane, a w niektórych miejscach wręcz błędne.
OdpowiedzUsuńCzy możesz wskazać jakieś przykłady błędów? Ułatwisz mi ewentualne ich poszukiwanie.
UsuńTo prawda, jestem właściwie początkujący, a mimo to widzę, że kod w kilku miejscach jest bez sensu.
UsuńW dokumentacji jest wyraźnie napisane, że Master ma czytać odpowiedź DS18b20 do 15us od chwili wystawienia "0" (co zresztą sam autor w swoim opisie potwierdza). Tymczasem w kodzie mamy:
OdpowiedzUsuńCLEAR_1WIRE;
_delay_us(2);
SET_1WIRE;
_delay_us(15);
if(bit_is_set(PORT_1WIRE,WE)) PRESENCE=1;else PRESENCE=0;
czyli ponad 17us nie licząc czasów wykonania pozostałych rozkazów (które przy niskich wartościach F_CPU maja spore znaczenie). Nie zachowanie minimalnego czasu slotu odczytu bitu (60us). itd.