Mój DS18B20 czyta wysoki. Jak mogę uzyskać prawidłową temperaturę?

10

Pracuję nad systemem sterowania ogrzewaniem w moim domu, ale mam problemy z odczytem czujnika temperatury wyższym niż się spodziewam.

Mam klon 5 V Arduino Mini Pro podłączony do modułu przekaźnika, wyświetlacz HD47780 i moduł Tiny RTC z dołączonym DS18B20.

DS18B20 jest zasilany z 5 V Vcc zastosowanego do modułu Tiny RTC zamiast zużywania pasożytniczej energii na linii DQ (ponieważ nie byłem pewien, czy biblioteki Onewire obsługują ten tryb pracy), a arkusz danych DS18B20 mówi, że Vcc może być pomiędzy 3,0v i 5,5v. Zmierzyłem regulowaną moc z Mini Pro na 5.2v.

Porównuję temperaturę z DS z istniejącym termostatem pokojowym (bimetalicznym), biurkowym monitorem temperatury RS z dwoma czujnikami, małym „termohigrometrem” i bimetalicznym termometrem lodówkowym (w górnej części jego temperatury zakres) . Odczyt z DS jest zawsze o około 1-2 stopnie wyższy niż odczyt z innych czujników, które znajdują się w pewnym stopniu od siebie.

† Nie faktyczny, ale coś podobnego.

Czytając różne fora, słyszałem, że czujniki te są dość dokładne, ale mogą cierpieć z powodu miejscowego nagrzewania się komponentów znajdujących się w pobliżu, więc przesunąłem czujnik na kabel o długości 20 cm i umieściłem go z dala od reszty elektroniki. To nie miało znaczenia.

Przeczytałem wtedy, że DS może stać się samonagrzewający, jeśli będzie zasilany zbyt wysokim napięciem Vcc, więc dodałem czerwoną diodę LED o spadku 1,7 V i zmierzyłem nowe napięcie na DS jako 3,5 V, ale ponownie, po odczekaniu na temperatury, by ustabilizować się ponownie, nie miało to znaczenia.

Czy ktoś może zasugerować, dlaczego DS może czytać wysoko i co mogę zrobić, aby temu zapobiec?

Mark Booth
źródło
Czy jesteś pewien, że twój termostat pokojowy nie tylko odczytuje 1-2 stopnie poniżej ? Powinieneś dostać trzeci termometr i porównać, aby ustalić, skąd faktycznie pochodzi twoje przesunięcie . Ponieważ termometr RS prawdopodobnie używa tej samej elektroniki odczytu dla obu czujników, prawdopodobnie nie jest tak naprawdę przydatny jako dwa odrębne odniesienia kalibracyjne.
Connor Wolf,

Odpowiedzi:

9

Umieściłem teraz wiele czujników DS18B20 na różnych węzłach czujników - może około 50. Dowiedziałem się trochę o odczytach od nich zwróconych. Wiem, że izolowałeś niektóre z nich jako nie będące przyczyną, ale dobrze jest potwierdzić, że są to problemy.

Nie wiem, czy używasz stopni Celsjusza czy Fahrenheita, więc stopień problemu nie jest jasny.

Zlokalizowane ogrzewanie

Nie uważam Arduino za „gorący” układ, ale umieszczenie DS18B20 w obudowie z Arduino i LCD spowodowało, że zobaczyłem odczyty o 2-3 ° C wyższe niż oczekiwano.

Usunięcie go poza obudowę naprawiło to.

Ogrzewanie od wysokiego Vcc / częstych konwersji

Jeśli dostarczysz chipowi wysokie Vcc i wykonasz częste konwersje (tj. Tak często, jak to możliwe), chip się nagrzewa. Widziałem ten wzrost odczytów o 1-2 ° C.

Nie widziałem problemu z samym wysokim Vcc, ale większość DS18B20 pracuję w trybie pasożytniczym i konwersję co najwyżej raz na 10s. Te działające w trybie aktywnym generalnie mają wyłączone zasilanie, gdy nie jest używane.

OneWire i DallasTemperature obsługują tryb pasożytniczy.

Nie wszystkie czujniki temperatury są sobie równe

Miałem kilka czujników temperatury, zanim zacząłem bawić się DS18B20. Niemal bez wyjątku są one niedokładnie przeczytane. Większość z nich opiera się na termistorach, a kalibracja jest słaba. Myślałem, że DS18B20 przestał czytać, ale kiedy użyłem dobrej termopary i miernika, mogłem sprawdzić, czy były poprawne.

Chodziło o naukę zaufania do DS18B20.

Ciepło przewodzone wzdłuż drutu

Jeśli masz czujniki na przewodzie, drut przewodzi zaskakującą ilość ciepła. Może to stanowić problem podczas prowadzenia okablowania wzdłuż rur.

Fałszywy DS18B20

Te czujniki są bardzo popularne i wydaje się, że spowodowało to pojawienie się podróbek. Mam partię wodoodpornych czujników ze stali nierdzewnej, które przeliczyły się i czasy zostały przekroczone. Pracowali z biblioteką OneWire, ale nie nadrzędnym DS2482 OneWire. Słyszałem również, że normalne obudowy TO-92 są fałszywe.

Cybergibbons
źródło
W wielkiej mądrości oprogramowania forum nie mogę odpowiedzieć na to pytanie, dlatego dodam tutaj komentarz. Jak dowiedziałem się na własnej skórze na github.com/PaulStoffregen/OneWire/issues/91 , jeśli używasz układu 3,3 V, musisz wymienić rezystor 4,7 k na rezystor 2,7 k, w przeciwnym razie niektóre czujniki zwrócą nieprawidłowe wartości.
Marc Merlin
2

W moim przypadku okablowanie między moim komputerem a czujnikiem było zbyt krótkie i przenosiło ciepło. Na początku myślałem, że nie może tak być, ponieważ inny czujnik temp zgłasza dokładne temperatury z tej samej odległości. Przeniosłem go w inne miejsce na planszy i voila!

Jordan Sitkin
źródło
1

Być może warto skalibrować czujnik.

Co to jest, gdy zanurzone jest we wrzącej wodzie (przy założeniu poziomu morza)? 102,5 Celsjusza? To daje kalibrację w wysokiej temperaturze -2,5 ° C.

Oczywiście lepiej jest skalibrować wokół temperatur, których ode mnie oczekujesz. Oznacza to zaufanie do (lub uśrednianie?) Jakiegoś urządzenia pomiarowego i skalibrowanie do tego.

Kingsley
źródło
1

Widziałem przesunięcia o kilka stopni C, gdy korzystałem z DS18B20 na szynie 3,3 V, przełączając się na stabilną szynę 5,0 V i otrzymałem bardziej rozsądne wartości. (testowany z i bez mocy pasożytniczej)

NiKiZe
źródło
To ciekawe, dzięki, i wręcz przeciwnie do tego, co zgłaszali niektórzy ludzie. Zastanawiam się, czy to kolejny fałszywy problem z DS18B20.
Mark Booth,
0

Przeprowadziłem kilka eksperymentów. Jeśli DS18B20 był na krótkim kablu <1 cm do mojego Arduino Pro Micro, odczyty były o 5 stopni wyższe niż w otoczeniu. Na długości kabla> 10 cm od płytki arduino i bez względu na to, gdzie zamontowano rezystor (w pobliżu arduino lub w pobliżu DS18B20) odczyty były prawidłowe.

Michał S.
źródło