Odczyt temperatur w pomieszczeniach - system pomiaru temperatury
Rozkład kabli w moim domu jest w topologii gwiazdy, więc postanowiłem zbudować czytnik temperatur który posiada 16 wejść dla 16 termometrów 1-wire. Czytnik po zebraniu informacji od cyfrowych termometrów onewire wystawia je sterownikowi PLC po magistrali Rs-485.
(Wcześniej wypróbowałem (bez powodzenia) konwerter z jedną wspólną magistralą onewire - teraz zmiana podejścia)
ONEWIRE
Za dosłownie kilka złotych można kupić termometr cyfrowy Dallas DS18B20.
Każdy taki termometr:
- podłaczony jest bezpośrednio do mojego czytnika
- odczytuje cyfrowo temperaturę otoczenia
- komunikuje się z czytnikiem przy użyci tylko jednego przewodu + dwa zasilające
Poniżej zdjęcie zamontowanego czujnika temperatury DS18B20:
Czytnik onewire
Zaprojektowałem oraz uruchomiłem czytnik bazując na mikroprocesorze (uP) PIC 18F4550 (ze względu na sporą liczbę wejść oraz na to że taki akurat miałem wolny :) ). uP zaprogramowany jest w języku C z wykorzystaniem bibliotek CCS.
Konwerter zasilany jest z sieci 230V. Jednocześnie zasila on wszystkie termometry napięciem +5V.
Odczyt temperatur i sterowanie
Czytnik komunikuje się z termometrem onewire cyfrowo odczytując z niego temperaturę. Przechowuje są w 16 kolejnych rejestrach. Sterownik PLC wysyła do czytnika rozkaz odczytu 16 rejestrów - otrzymuje zestaw temperatur.
Na podstawie temperatur sterownik PLC będący mózgiem mojego inteligentnego domu podejmuje decyzje np. o załaczeniu pieca, wentylacji czy opuszczeniu rolet.
Schemat
Budowa czytnika (konwertera magistral:
Realizacja:
Oprogramowanie
Zamieszczam kod źródłowy:
Program czytnika onewire-modbus. Do otwarcia w środowisku Microchip IDE z użyciem bibliotek CCS.
Schematy elektroniczne płytki. Wykonane w programie EAGLE.
Działanie
Zrzut niektórych odczytanych temperatur z mojego systemu zarządzania: