Skip to content

tempsensor

RealMerlin edited this page Mar 2, 2019 · 6 revisions

Allgemeines

Ein Tempsensor Device steuert einen 1-Wire Temperatursensor vom Typ DS18B20 an. Die Temperatur wird in regelmaessigen Abstaenden abgefragt und als 12Bit Zahl mit 4 Nachkommabits versendet:

0404 -> 0036 :SFP HES 1WIRE_TEMPERATURE gruppe:67 temp_hi:1 temp_lo:62

In diesem Falle sendet der Controller-1612 mit der Adresse 404 die aktuelle Temperatur des Temperatur-Sensors 67. Um die Messwerte direkt sehen zu koennen, kann man telican im temp-Modus laufen lassen:

$ telican --temp
group: 67 temp: 19.875
group: 3 temp: 9.4375
group: 68 temp: 19.125
group: 4 temp: 15.0625

Auch hcandq bietet mit der --interpret Option die Moeglichkeit, die Messwerte lesbar auszugeben.

Hardware

Hier ist etwas Loetarbeit erforderlich: Die DS18B20 Sensoren werden im Parasite-Modus betrieben, d.h. sie "klauen" sich den Strom fuer den Betrieb aus dem Bus-Signal. In der Praxis funktioniert das mit mehreren DS18B20; ich hatte zeitweilig 3 Stueck an einer 0,6mm^2 Doppelader ueber einige zig Meter problemlos betrieben.

Es ist aber auch problemlos moeglich die DS18B20 Sensoren "normal" also mit VCC+DATA+GND zu beutzen, falls der Parasite-Modus mal bei jemand Probleme verursacht.

An den Eingaengen 8-15 koennen Sensor-Busse angeschlossen werden - auch mehrere gleichzeitig. Die Eingaenge muessen dafuer mit einem Pullup-Widerstand von 2.0k an die 5V-Versorgung (5V Pin in der Jumperleiste) angeschlossen werden. Der Wert des Pullup-Widerstandes ist sehr wichtig: ist er zu gross, bekommen die Sensoren nicht genug Strom, ist er zu klein, uebernehmen sie sich beim Ziehen gegen Masse (siehe Datenblatt des DS18B20).

Lt. Datenblatt und diverser anderer Quellen muss der Pullup einen Wert von 4.7K haben.

anschlussplan-ds18b20

Es wird eine kleine Buchsenleiste (ggfls. kuerzen) auf die Jumperleiste gesteckt. Die 1Wire-Eingaenge werden direkt mit den dazugehoerigen Klemmen verbunden (also das, was der Jumper im Normalfall macht). Zusaetzlich wird je ein Pullup Widerstand von 2.0k (bzw. 4.7k) zwischen Input-Pin und 5V Pin geloetet.

Parasit-Modus

Die DS18B20 haben 3 Pins: Vcc, DQ und GND. Vcc wird mit GND verbunden, die 1Wire-Bus-Leitung mit DQ und der GND natuerlich mit GND.

Normaler Modus

Die DS18B20 haben 3 Pins: Vcc, DQ und GND. Vcc wird mit +5V verbunden, die 1Wire-Bus-Leitung mit DQ und der GND natuerlich mit GND.

1wire-pullups

Auf dem Foto sind im Gegensatz zum obigen Anschluss-Plan 2 1Wire Busse realisiert -- beide haben einen eigenen Pullup Widerstand zum 5V-Pin.

Bisher habe ich nur DS18B20 Typen verwendet - moeglicherweise funktionieren auch andere DS1820 Sensoren, ggfls muss der Pullup-Widerstand angepasst werden, ev. auf Normal-Stromversorgung umgestellt werden. Es wird der 12Bit AD Modus verwendet - manche Sensoren loesen nicht so gut auf, hier koennte ein Source-Patch noetig sein, welcher die Ergebnisse umrechnet.

EDS Konfiguration

create tempsensor
set io_pin 15
set gruppe 67
set modus 1
set interval 60
set ow_id 28c245e50000001c
exit
Feldname Bit Beschreibung
io_pin Nummer des Pins, an dem der 1Wire-Bus angeschlossen ist (8..15)
gruppe Gruppe des Temperatursensors
modus 1 = sendet Meldungen, 0 = nicht aktiv
interval Sendeinterval in Sekunden
ow_id 1Wire ID des Sensors, mit 'discover1wire' herauszufinden

Die ow_id wird mit dem telican Befehl discover1wire in Erfahrung gebracht. Damit man weiss, welcher Sensor welcher ist, empfielt es sich, die Sensoren nacheinander einzeln anzuhaengen und erkennen zu lassen.

> discover1wire 15
DS1820 temperature sensor:   2866b2e4000000e4
> 
Clone this wiki locally