projekt:python_projekt_ds18b20_digitaler_temperatursensor
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_projekt_ds18b20_digitaler_temperatursensor [2026/02/20 15:43] – [Messprinzip] torsten.roehl | projekt:python_projekt_ds18b20_digitaler_temperatursensor [2026/02/23 12:09] (aktuell) – [Ausführen des Programms] torsten.roehl | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| [[python| ☚ zurück]] | [[python| ☚ zurück]] | ||
| - | FIXME BEITRAG IN ENTSTEHUNG | + | |
| + | //In diesem Projekt wird ein digitaler Temperaturfühler vom Typ DS18B20 am Raspberry Pi per 1-Wire-Schnittstelle betrieben. Nach Aktivierung der 1-Wire-Schnittstelle liefert der Kernel die Messwerte über das // | ||
| + | // | ||
| + | |||
| ====== Überblick ====== | ====== Überblick ====== | ||
| Zeile 22: | Zeile 26: | ||
| |{{ : | |{{ : | ||
| - | |< | + | |< |
| ===== Hardware ansteuern | ===== Hardware ansteuern | ||
| + | |||
| + | Der DS18B20 kommuniziert über die 1-Wire-Schnittstelle. Dabei erfolgt die gesamte Datenübertragung seriell über die DATA-Leitung (**GPIO4**) mit einem Pull-Up-Widerstand gegen <color # | ||
| |{{ : | |{{ : | ||
| | Für Einsteiger sind die //etwas teureren Fertigmodule// | | Für Einsteiger sind die //etwas teureren Fertigmodule// | ||
| + | |||
| Verdrahtung: | Verdrahtung: | ||
| - | * GND → Raspberry Pi GND | + | |
| - | | + | ^ Modul ^ Raspberry Pi GPIO ^ |
| - | | + | | GND | beliebigen GND | |
| + | | <color # | ||
| + | | <color # | ||
| + | |||
| + | |||
| <note tip> | <note tip> | ||
| Zeile 42: | Zeile 54: | ||
| * Auflösung: 0,0625 °C (12 Bit) | * Auflösung: 0,0625 °C (12 Bit) | ||
| * Genauigkeit: | * Genauigkeit: | ||
| + | * Messbereich −55 °C bis +125 °C | ||
| ==== Messprinzip ==== | ==== Messprinzip ==== | ||
| - | {{ : | ||
| - | Das Messprinzip ist unter Linux sehr einfach: | ||
| - | Nach Aktivierung von 1-Wire über raspi-config stellt der Kernel die Temperatur als Datei im Sysfs bereit, z. B.: | + | < |
| - | /sys/ | + | **Ein Programm muss lediglich die Datei '' |
| + | </note> | ||
| - | Der Name 28-000000714b90 ist die eindeutige 64-Bit-ROM-ID des DS18B20 und ist bei jedem Sensor unterschiedlich (Familiencode 28). | + | |{{ : |
| + | |Mit '' | ||
| - | Ein Programm muss lediglich diese Datei auslesen. Die gesamte 1-Wire-Kommunikation übernimmt der Kernel. | + | ++++ Hintergrund | |
| - | Wichtig: | + | Nach Aktivierung von 1-Wire über '' |
| - | - Bei jedem Lesezugriff auf diese Datei stößt der Kernel automatisch eine neue Temperaturumwandlung an. | + | Der Name '' |
| - | - In der ersten Zeile signalisiert „YES“, dass die CRC-Prüfung erfolgreich war. | + | |
| - | - In der zweiten Zeile steht der Temperaturwert hinter „t=“ in Milligrad Celsius. | + | |
| - | Beispiel: | + | Die gesamte 1-Wire-Kommunikation übernimmt der Kernel. |
| - | 80 01 7f 80 7f ff 10 10 49 : crc=49 | + | * Bei jedem Lesezugriff auf diese Datei stößt der Kernel automatisch eine neue Temperaturumwandlung an. |
| - | 80 01 7f 80 7f ff 10 10 49 t=24000 | + | * In der ersten Zeile signalisiert „YES“, dass die CRC-Prüfung erfolgreich war. |
| + | * In der zweiten Zeile steht der Temperaturwert hinter „t=“ in Milligrad Celsius. | ||
| + | ++++ | ||
| - | Hier entspricht t=24000 einer Temperatur von 24.000 °C. | ||
| - | ====== Details ====== | ||
| ===== Software ===== | ===== Software ===== | ||
| + | === Programmstruktur === | ||
| + | |{{ : | ||
| + | |Im Projektordner „course_temp_reader“ befinden sich im Verzeichnis '' | ||
| + | |||
| ==== Environment aktivieren ==== | ==== Environment aktivieren ==== | ||
| + | |||
| + | |||
| + | <note important> | ||
| + | **Aktiviere die Python-Environment** | ||
| + | |||
| + | Die Programmierung erfolgt nun immer mit der gewählten Umgebung! | ||
| + | < | ||
| + | source ~/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| ==== DS18B20 API ==== | ==== DS18B20 API ==== | ||
| + | Unsere Beispiel-API ist bewusst einfach gehalten und unterstützt hier nur einen einzelnen Sensor. Bei Bedarf kann die Implementierung problemlos auf mehrere Sensoren erweitert werden; darauf wird in diesem Projekt jedoch verzichtet. | ||
| + | |||
| <code python hardware.py > | <code python hardware.py > | ||
| Zeile 119: | Zeile 147: | ||
| - | ==== Test ==== | + | ==== Temperature |
| - | <code python | + | <code python |
| + | # | ||
| from hardware import get_temperature | from hardware import get_temperature | ||
| Zeile 136: | Zeile 165: | ||
| </ | </ | ||
| - | {{ :raspberry_pi:temperture_test.png?400 |}} | + | ==== Ausführen des Programms ==== |
| + | Nach dem Programmstart wird auf der Kommandozeile die Temperatur in Grad Celsius ausgegeben, sofern der Sensor korrekt erkannt wurde und die Messung erfolgreich war. | ||
| + | |||
| + | <code bash> | ||
| + | cd ~/ | ||
| + | chmod 755 temp_reader.py | ||
| + | ./ | ||
| + | |||
| + | # Beispielausgabe: | ||
| + | Temperatur: 21.25 °C | ||
| + | </ | ||
| + | |||
| + | |||
projekt/python_projekt_ds18b20_digitaler_temperatursensor.1771602207.txt.gz · Zuletzt geändert: von torsten.roehl
