Zrobiłem sobie dwucyfrowy termometr z czerwonym wyświetlaczem siedmiosegmentowym ELD-515SURWA (wylutowanym z termostatu Euroster 1100E) i czujnikiem DS18B20.
Układ elektroniczny mieści się na wycinku płytki uniwersalnej 2x8 cm o wymiarach 6x17 oczek.
Obudową jest białe gniazdo telefoniczne 2xRJ11 6P4C natynkowe.
Zasilanie z zasilacza impulsowego 5 V / 120 mA.
Schemat
Firmware
Mózgiem układu jest AT89C2051. Program w asemblerze zajmuje 410 bajtów. Załączam źródło i hex.
Termometr może pokazywać temperaturę od -9 do +99 °C.
Używam najmniejszej rozdzielczości pomiaru czyli 9 bitów i pokazuję tylko część całkowitą wyniku.
Dzięki użyciu trzech przewodów (tzn. zasilanie osobnym przewodem, a nie pasożytniczo) można pytać czujnik, czy już skończył mierzyć. Gdy to nastąpi, program odczytuje scratchpad, sprawdza CRC i aktualizuje wartość na wyświetlaczu.
Multipleksowanie odbywa się w przerwaniu timera z częstotliwością 1302 Hz. Podczas krytycznych czasowo operacji odebrania i wysłania bitu na magistrali 1-wire przerwania są blokowane (nawet do pół milisekundy przy resetowaniu 1-wire); nie zauważyłem gołym okiem wpływu takiego przywieszania multipleksowania na jasność wyświetlacza.
Kody błędów
| -- | Brak czujnika | E1 | Czujnik zgłosił zakończenie pomiaru temperatury od razu po zleceniu pomiaru | E2 | Czujnik nie zgłosił zakończenia pomiaru temperatury w odpowiednim czasie | E3 | Błąd CRC danych odebranych ze scratchpada czujnika | __ | Temperatura ≤ -10 °C | ^^ | Temperatura ≥ +100 °C |
Działanie
Czujnik mierzy tutaj temperaturę ciepłej wody na wylocie z piecyka. Oczyściłem kawałek rurki papierem ściernym i na kropli pasty termoprzewodzącej przyłożyłem czujnik stroną z napisami do rurki, przykleiłem srebrną taśmą naprawczą, a potem owinąłem kilkoma warstwami gąbki.
Wydaje się, że mimo tych zabiegów termometr jednak zaniża temperaturę wody o jakieś 2-3 stopnie...
Fajne? Ranking DIY