User Tools

Site Tools


ds18s20

Arduino - Temperaturmessung mit DS18S20

Für Außentemperaturmessungen habe ich gute Erfahrungen mit dem wasserfesten Sensor DS18S20 gemacht. Dabei handelt es sich um einen 1-wire-Anschluss mit drei Kontakten. Mehrere Sensoren können parallel damit betrieben werden.

Schaltung:

Der Sensor wird an 3.3V (rot), GND (schwarz) und GPIO4 (gelb) angeschlossen. Zwischen 3.3V und GPIO4 wird ein Widerstand von 4.7 k angeschlossen.

Software:

1. Vorbereitung für den 1-Wire-Anschluss:

sudo modprobe w1-gpio
sudo modprobe w1-therm

Prüfen, ob alles geklappt hat:

lsmod

Nun Module dauerhaft beim Start laden:

sudo vi /etc/modules
w1_gpio
w1_therm
  Sensor-ID lesen
ls /sys/bus/w1/devices/
28-041750b734ff           <----
w1_bus_master1

Anzeige der Sensordaten in der Bash:

cat /sys/bus/w1/devices/28-041750b734ff/w1-slave
4e 00 4b 46 7f ff 0c 10 38 : crc=38 YES
4e 00 4b 46 7f ff 0c 10 38 t=4875

Die Angabe t=4875 ist die Temperatur in milliCelsius.

2. Temperaturabfrage mit Python

#!/usr/bin/python3
# coding=utf-8
 
import os, sys
 
def aktuelleTemperatur():    
    # 1-wire Slave Datei lesen
    file = open('/sys/bus/w1/devices/28-041750b734ff/w1_slave')
    filecontent = file.read()
    file.close()
 
    # Temperaturwerte auslesen und zurückgeben
    stringvalue = filecontent.split("\n")[1].split(" ")[9]
    temperature = float(stringvalue[2:]) / 1000
    return(temperature)
 
# Temperatur ausgeben
print("Temperatur = {0:0.3f} C".format(aktuelleTemperatur())
ds18s20.txt · Last modified: 2024/03/11 13:18 by walter