Cyfrowy pomiar temperatury w browarze

Z Wiki piwo.org
Wersja z dnia 13:04, 8 sty 2011 autorstwa Pablo (dyskusja | edycje) (Instalacja OWFS i pierwsze uruchomienie.)
Przejdź do nawigacji Przejdź do wyszukiwania

Przywykliśmy do klasycznego pomiaru temperatury termometrami analogowymi, ale w prosty i szybki sposób można samodzielnie wykonać dokładny, wielopunktowy termometr elektroniczny oparty na układach DS1820 (dokładnie DS18B20 lub DS18S20) firmy Maxim (wcześniej Dallas). Zaletą takiego rozwiązania jest brak możliwych uszkodzeń mechanicznych (metalowa kapilara), wysoka dokładność, możliwość używania na jednej magistrali wielu czujników, brak konieczności kłopotliwej kalibracji, niska cena układu. Do obrazowania oraz zapisu pomiary będziemy wykorzystywać komputer PC wyposażony w port RS232

Wymagane elementy i schemat ideowy

Do wykonania układu wystarczą proste elementy, dostępne w każdym sklepie elektronicznym. Cena nie powinna przekroczyć 20zł

  • 1x DallasSemiconductor DS1820 temperature sensor (został użyty DS18S20)
  • 2x dioda schottky 1N5818 (lub odpowiedniki - BAT85)
  • 1x dioda zenera 6.2V 1N5234 (lub odpowiednik)
  • 1x dioda zenera 3.9V 1N5228 (lub odpowiednik)
  • 1x złącze RS232C żeńskie + obudowa
  • 1x rezystor 1,5KOhm

Ds9097e.gif

Układ możemy wykonać lutując elementy na tzw. "pająka", czyli bez płytki drukowanej i zamknąć w obudowie DB9.

Cały układ pomiarowy oparty na czujnikach DS1820 to DS9097 - warto zapamiętać ten symbol, ponieważ właśnie taki występuje w oprogramowaniu.

Zmontowany układ DS9097 - zdjęcie: www.eko.one.pl

Oprogramowanie

MS Windows

Najpopularniejsze programy na platformę MS Windows. Działają na wersjach 98/XP/2000/2003 (Vista, 7 - nie testowane)



Linux

Digitemp

Do pomiaru temperatury w systemach Linux najlepiej sprawuje się konsolowy program Digitemp. Występuje w większości repozytoriów dystrybucji Linuxowych. Instalacja w Debian/Ubuntu sprowadza się do wydania komendy:

~# apt-get install digitemp

Po zainstalowaniu wystarczy nam podstawowa konfiguracja:

~# digitemp_DS9097 -i -s /dev/ttyS0 -a

Oznaczenie przełączników:
-i inicjalizacja pliku konfiguracyjnego w katalogu domowym
-s określenie portu szeregowego. W tym przypadku port pierwszy RS232
-a zapisanie danych wszystkich wykrytych czyjników.

Powinieneś otrzymać wynik podobny do poniższego

~# digitemp_DS9097 -i -s /dev/ttyS0 -a
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
....
Searching the 1-Wire LAN
107C2F9901080026 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 107C2F9901080026
Wrote .digitemprc
Dec 28 18:50:49 Sensor 0 C: 0.50 F: 32.90

Teraz wystarczy wydać komendę

~# digitemp_DS9097 -a

dzięki czemu otrzymamy wynik odczytu temperatury:

DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Dec 28 18:52:48 Sensor 0 C: 0.50 F: 32.90

OWFS

Alternatywą dla digitemp jest owfs. Niestety program ten nie w większości dostępny w repozytoriach. Wymaga on kompilacji przez użytkownika, która jednak nie jest skomplikowana i zostanie przedstawiona poniżej.

OWFS umożliwia dostęp do urządzeń 1-wire w bardzo prosty sposób. Ten prosty i elastyczny program pozwala monitorować i sterować procesami fizycznymi. Umożliwia odczyt temperatur, sterowanie grzałkami, wyświetlenie informacji na LCD, logowanie danych...

Dostęp dodanych realizowany może być na kilka sposobów:

  • owfs - urządzenia 1-wire widoczne jako struktura katalogu na dysku.
  • owserver - dostęp dodanych poprzez sieć
  • owhttpd - dostęp do danych poprzez przeglądarkę WWW
  • perl, python, php, tcl, Java, C - wsparcie dla języków programowania, możliwość pisania skryptów.
Instalacja
Okno przeglądarki po podłączeniu do serwera owhttpd.

Instalacja zostanie przedstawiona na przykładzie Ubuntu 10.10 Server. Najpierw instalujemy zależności potrzebne do skompilowania programu

pablo@virserver:~/sudo  apt-get install \
automake autoconf autotools-dev gcc g++ \
libtool libusb-dev fuse-utils libfuse-dev \
swig python2.4-dev tcl8.4-dev php5-dev

Następnie ściągamy źródła programu do utworzonego folderu i rozpakowujemy

mkdir owfs
cd owfs/
/owfs$ wget http://mesh.dl.sourceforge.net/project/owfs/owfs/2.8p5/owfs-2.8p5.tar.gz
/owfs$ tar zxpf owfs-2.8p5.tar.gz

Kompilujemy i instalujemy program. Zostanie on domyślnie zainstalowany w folderze /opt/owfs

/owfs$ cd owfs-2.8p5
/owfs/owfs-2.8p5$ ./configure
/owfs/owfs-2.8p5$ make
/owfs/owfs-2.8p5$ sudo make install

Teraz Możemy uruchomić serwer programu, który zapewni dostęp do urządzeń 1-wire przez inne programy wchodzące w skład owfs (jest to jedna z metod postępowania). Serwer połączy się z interfejsem podłączonym do poru szeregowego. Dostęp do serwer będzie możliwy przez port 3001 komputera na którym jest uruchomiony.

sudo ./opt/owfs/bin/owserver -d /dev/ttyS0 -p 3001

Dostęp do 1-wire przez przeglądarkę WWW zapewni program owhttpd. Uruchamiamy go poleceniem:

sudo ./opt/owfs/bin/owhttpd -s 3001 -p 3000

Teraz możemy się zalogować wpisując w przeglądarce adres _ip_komutera_:3000

Konfiguracja

Kiedy już program jest zainstalowany czas na wykorzystanie. Aby uruchomić serwer programu lub inny program przy starcie systemu tworzymy plik owserver w katalogu /eta/init.d.

#! /bin/sh
# /etc/init.d/owserver
case "$1" in
  start)
        /opt/owfs/bin/owserver -d /dev/ttyS0 -p 3001
        ;;
  stop)
        killall owserver
        ;;
  *)
        echo "Usage: $N {start|stop}" >&2
        exit 1
        ;;
esac
exit 0

Następnie dopisujemy ten skrypt do listy startowej

sudo update-rc.d owserver defaults

OWFS oraz rejestracja danych poprzez Mumin

Budowa sondy pomiarowej

dedykowana obudowa czujnika Zdjęcie: josefik

Aby nasz termometr sprawdził się w działaniu w środowisku o dużej wilgotności (czytaj - w zacierze lub brzeczce) musimy ochronić układ przez dostępem wody i zwarcia wyprowadzeń. W praktyce można zastosować kapilarę wykonaną z:

  • rurki miedzianej
  • rurki z stali nierdzewnej
  • dedykowanej obudowy
  • długiej koszulki termokurczliwej

W przypadku dwóch pierwszych rozwiązań zakończenie możemy zalutować lub zaklepać w imadle. Warto umieścić czujnik w silikonie termo-przewodzącym. (pasta termo-przewodząca do procesorów komputerowych)