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 an RS232 mit parasitärer Spannungsversorgung
DS18S20 an RS232 mit extra Spannungsversorgung
in RS232-Stecker eingebaute Schaltung mit extra Spannungsversorgung
Sensor DS18S20 mit Kabel
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.
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.
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.