Temperaturmessung mit Linux

Temperaturdiagramm rrdtool

Temperaturmessung mit Linux über Com-Port (RS232) oder USB

Es gibt einen Folgeartikel, mit einem DS9490R Baustein.

Um einen Temperaturfühler an einen Linux Rechner anzuschliessen empfiehlt sich die Verwendung eines 1-Wire Bus Systems, an dem ?beliebig? viele Fühler angeschlossen werden können. Der Bus kann dabei im idealfall bis zu 20meter lang sein.

Als Temperaturfühler wird hierbei der Dallas DS1820 verwendet, dieser kann bei z.B. Reichelt "DS 18S20" für 2,80€ erworben werden (07.2012). Dies ist der Nachfolger des DS2409. Der Fühler sieht aus wie ein Transistor, und bei kurzen Kabellängen werden nur zwei der drei Beine verwendet und das "überflüssige" Bein mit auf Masse gelegt.

Hardware

Um den Fühler an einen ComPort anzuschliessen wird eine einfache Schaltung von linuxnetmag.org benötigt. Diese kann zum testen auf einem Experementierboard schnell zusammengesteckt werden. In meinem Fall wurde diese über einen USB auf Serial Adapter mit meinem PC verbunden.

Es ist statt eines Eigenbaus auch möglich einen DS9490 USB Adapter einzusetzen, dieser kostet ca 20Euro.

Die Schaltung als gelötete Variante, man kann auch alles direkt an den ComPort Buchse löten, aber eine Platine schien mir etwas übersichtlicher. Ich habe einen DS1820 direkt aufgelötet, weitere können Parallel an den Aufgelöteten Temperaturfühler angeschlossen werden. Das ungenutzte Bein des Fühlers wird auf Masse gelegt.

Software

Als erstes installieren wir digitemp, danach sind die drei Programme digitemp_DS2490, digitemp_DS9097 und digitemp_DS9097U verfügbar. Da der DS1820 der Nach­folger des DS9097 ist, verwende ich digitemp_DS9097.

sudo apt-get install digitemp
benutzer zu dialout gruppe hinzufuegen damit dieser auf den Comport/UsbPort zugreifen darf
sudo usermod -G dialout -a Benutzername

Wichtig ist, das man sich nun an- und abmeldet, damit die neue Gruppenzugehörigkeit auch greift. Die Liste der aktuellen Gruppen zu denen der angemeldete Benutzer gehört läßt sich mit dem Befehl groups anzeigen.

Als device ist in diesem Fall der USB Port /dev/ttyUSB0 angegeben. Falls die Hardware direkt an den ComPort angeschlossen ist, ist z.B. /dev/ttyS0 anzugeben.

  • -a Read all sensors
  • -w Display serial number
  • -v Verbose output
  • -s Set device

digitemp_DS9097 -a -w -v -s /dev/ttyUSB0 
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
.
Devices on the Main LAN
108CD58202080007 : DS1820/DS18S20/DS1920 Temperature Sensor

Um geziehlt einen Sensor anzusprechen, wenn mehrere am 1-Wire Bus hängen schreibt man zuerst eine Config Datei mittels digitemp und kann dann beim Auslesen einen Sensor wählen.

digitemp_DS9097 -i -s /dev/ttyUSB0

Den ersten (Nummer 0) Sensor ansprechen und Temperatur in Grad Celsius ausgeben. Dies Ausgabe diese Aufrufs ergibt z.B. 23.123412.

  • -o Output format
  • -t Sensor number
  • -q Quit

digitemp_DS9097 -o "%C" -t0 -q

Weiter gehts

Als nächstes habe ich die Temperaturen Grafisch auf dem Webserver anzeigen lassen.

digitemp und BeagleBoard-xM

! Funktioniert bei mir nur mittels USB auf ComPort Adapter. Die folgenden Hinweise haben nicht zum Erfolg geführt!

Als erstes ist wichtig zu wissen, dass die ComPorts beim BeagleBoard mittes /dev/tty00 bis /dev/tty03 angesprochen werden. Dabei ist der ComPort /dev/tty02, welcher auf dem Board angeschlossen ist, mit tty0 als Debug Console verknüpft ist. Dies kann man mittels dmesg | grep tty sehen.

[    0.000000] Kernel command line: console=ttyO2,115200n8 console=tty0 irqpool vram=12MB omapfb.mode=dvi:1280x720MR-16@60 omapdss.def_disp=dvi root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc mpurate=auto buddy=none buddy2=none
[    0.000000] console [tty0] enabled
[    0.715576] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0
[    0.715942] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1
[    0.716308] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2
[    1.486785] console [ttyO2] enabled
[    1.490814] omap_uart.3: ttyO3 at MMIO 0x49042000 (irq = 80) is a OMAP UART3
[ 4485.773071] init: ttyO2 main process (1092) terminated with status 1
[ 4485.773498] init: ttyO2 main process ended, respawning

Um die debug console auf dem Beagle zu deaktiveren sind folgende Einträge aus der Datei "/boot/uboot/uEnv.txt" zu entfernen:

  • console=ttyO2,115200n8
  • optargs=console=tty0
  • console=${console} ${optargs}
Sowie die Datei "/etc/init/ttyO2.conf" zu löschen, z.B. mittels sudo rm /etc/init/ttyO2.conf

Quellen

Last Change: 01-Sep-2017 03:26

Kontakt und Infos zur Person: Thomas Eimers