Skip to content

tempsensor

hcanIngo edited this page Dec 19, 2015 · 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.

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).

{{:anschlussplan-ds18b20.png|}}

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 zischen Input-Pin und 5V Pin geloetet.

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.

{{:1wire-pullups.jpg|}}

//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