sef's Temperaturanzeige




Valid HTML 4.01 Transitional

Hardware

Ein normaler PC hat leider keinen OnwWire-Bus. Das ist aber nicht so tragisch, da es genug andere serielle Schittstellen (RS232, USB) gibt.
Die RS232 lässt sich dazu am besten verwenden, da die Hardware standardisiert ist und die Schnittstellen gut bekannt sind.

Zwei Hürden gibt es an der RS232-Schnittstelle zu nehmen.
Erstens ist der unidirektionale Bus auf bidirektionalen Bus umzusetzen. Das lässt sich aber durch etwas elektronisches "Hünerfutter" lösen.
Zweitens braucht jede el. Schaltung eine Betriebsspannung. Diese hat RS232 aber nicht. Der DS1820 braucht jedoch so wenig Energie, dass sich die Betriebsspannung aus den Daten- und Steuersignalen erzeugen lässt. Der DS1820 kann seine Betriebspannung aus der Datenleitung entnehmen. Bei mehreren Sensoren ist aber eine extra Betriebsspannung angebracht.

Wie diese Schatung genau funktioniert, habe ich noch nicht rausgefunden. Ich vermute, dass es damit zu tun hat, dass der Spannungspegel von RS232 (bei ±15V) damit zu tun hat. Jedenfalls habe ich mir diese Schaltung nicht selbst ausgedacht.

DS1820 parasitär
DS1820 an RS232 mit parasitärer Spannungsversorgung

DS18S20 mit Spannung
DS18S20 an RS232 mit extra Spannungsversorgung

Stecker 1 Stecker 2
in RS232-Stecker eingebaute Schaltung mit extra Spannungsversorgung

Sensor
Sensor DS18S20 mit Kabel

Bussystem
Bussystem steckbar ausgelegt

Bei dem Kondensator ziehe ich ein Tantalkondensator vor. Es funktioniert aber auch mit jedem andere Elko.

Die Dioden sollten ähnlich gewählt werden:
D1 ist eine BZX79C3V6 3,9V Z-Diode.
D2 ist eine BZX79C6V2 6,2V Z-Diode.
D3 und D4 sind Shottky-Dioden 1N5818.
D5 ist eine BZX79C5V6 5,6V Z-Diode.
D6 ist eins 1N4148 Schaltdiode.

Diese ganze Schaltung findet noch in der Griffschale des DB9-Stechers platz.

             Belegung:
des       2  RxD            des     1  Gnd
DB9       3  TxD            DS1820  2  Data
Steckers  4  DTR                    3  Vdd
          5  Gnd
      

Raspberry Pi

Eine neue Herausforderung ist es, das auf einem Raspberry Pi laufen zu lassen. Also habe ich ein Debian darauf installiert.

Mit apt-get install digitemp rrdtool librrdp-perl funktionierte es prinzipiell mit einem USBtoSerial-Adapter.
Es war noch nötig gawk nachzuinstallieren und die Datenbank neu zu erstellen. Damit lief erst mal alles wie auf einem normalen PC.

Die Herausforderung ist es aber, den 1wire-bus direkt per GPIO (GPIO04) anzuschließen. Nach laden von zwei Modulen ist der 1w aktiviert. Die Temperaturwerte kann man im sys-Filesystem einfach auslesen
Dadurch ist digitemp noch nicht einmal mehr notwendig. Die Formatierung der Messwerte ist aber ein wenig aufwändiger. Statt gawk verwende ich awk.

Zur Datei /boot/config.txt muss mann bei Raspian wheezy (war vorher nicht nötig) noch die Zeile "dtoverlay=w1-gpio,gpiopin=4,pullup=on" hinzifügen.
In die Datei /etc/modules müssen noch die Module w1-gpio und w1-therm eingetragen werden.

RP 1Wire
nur 1wire

Luftdruck und Feuchtigkeit am Raspberry Pi

Den Sensor für Luftdruck und Feuchtigkeit zu integrieren ist mittlerweile über einen Arduino Mini erfolgt. Da der Spannungsregler des Arduino Minis nicht mehr funktioniert, versorge ich ihn direkt mit 3,3V.
Die beiden Sensoren und der Arduino Mini sind in einem Gehäuse im Freien.

RP 1Wire/ser
1wire und ser. Anschluss

Zur Vorbereitung muss in der Datei /boot/cmdline.txt der Abschnitt console=ttyAMA0,115200 entfernt werden.
Außerdem muss in der Datei /etc/inittab die Zeile, die mit T0 beginnt, auskommentiert werden.

Die Belegung des Arduinos und die Software folgt demnächst.

Links

DS18S20

DS18B20

DS1822 (2°C Toleranz)

zurück

letzte Änderung: 03.01.2016 sef