Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python_projekt_ds18b20_digitaler_temperatursensor

Dies ist eine alte Version des Dokuments!


Projekt DS18B20 digitaler Temperatursensor

☚ zurück

FIXME BEITRAG IN ENTSTEHUNG

Überblick

  • Voraussetzungen
    • 1-Wire aktivieren
  • Hardware ansteuern
    • Messprinzip
  • Software
    • Environment aktivieren
    • Beispiel Programm

Voraussetzungen

Details

Software

Environment aktivieren

DS18B20 API

hardware.py
import glob
import time
 
 
# -----------------------------
# API-Funktionen ds18b20
# -----------------------------
SENSOR_TIMEOUT = 1  # Sekunden
 
def is_sensor():
    """Prüft, ob mindestens ein DS18B20 Sensor angeschlossen ist"""
    sensors = glob.glob("/sys/bus/w1/devices/28-*")
    return len(sensors) > 0
 
def get_sensor():
    """Gibt den ersten DS18B20 Sensor zurück oder None"""
    if not is_sensor():
        return None
    sensors = glob.glob("/sys/bus/w1/devices/28-*")
    return sensors[0] + "/w1_slave"
 
def get_temperature():
    """Liest Temperatur vom ersten Sensor aus, None bei Fehler oder Timeout"""
    sensor_file = get_sensor()
    if sensor_file is None:
        return None
 
    start_time = time.time()
    while True:
        with open(sensor_file, "r") as f:
            lines = f.readlines()
 
        if lines[0].strip().endswith("YES"):
            break
 
        if time.time() - start_time > SENSOR_TIMEOUT:
            return None
 
        time.sleep(0.1)
 
    temp_line = lines[1]
    temp_str = temp_line.split("t=")[1]
    return float(temp_str) / 1000.0

Test

test.py
from hardware import get_temperature
 
def main():
    temp = get_temperature()
    if temp is not None:
        print(f"Temperatur: {temp:.2f} °C")
    else:
        print("Sensor nicht gefunden!")
 
if __name__ == "__main__":
    main()
projekt/python_projekt_ds18b20_digitaler_temperatursensor.1771598668.txt.gz · Zuletzt geändert: von torsten.roehl