Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

1-Draht-Temperatursensor DS1820 am Raspberry Pi (GPIO direkt)

Um mit dem Raspberry Pi die Innen- oder Außentemperatur zu messen, gibt es mehrere Möglichkeiten. Dieser Artikel beschreibt die Version mit der minimalen Anzahl externer Komponenten. Diese basiert auf dem Temperatursensor DS18S20 und der Software-Emulation des 1-Wire-Protokolls.

Der DS18S20 und die verwandten DS18B20 und DS1822 sind integrierte Schaltkreise in einem TO-92-Gehäuse, die den Temperatursensor, den Analog-Digital-Wandler und die 1-Wire-Schnittstelle enthalten. Die genannten Typen sind pin- und softwarekompatibel, sie unterscheiden sich wesentlich in der Messgenauigkeit und im Preis. Die drei Anschlüsse (siehe Bild links) sind Masse (GND, Pin 1), Daten (DQ Pin 2) und Betriebsspannung (VDD , Stift3). Sie können VDD . anschließen und GND und betreiben Sie den Sensor mit einer parasitären Stromversorgung von 3-5 Volt. Die Verbindung der Schaltung mit dem Computer ist dann mit einem einfachen zweiadrigen Twisted-Pair-Kabel möglich.

An diesem Kabel – dem 1-Wire-Bus – können Sie mehrere DS1820 parallel anschließen. Jeder Sensor hat einen eindeutigen Code, der vom Hersteller zugewiesen wird, um sich selbst zu identifizieren.

Raspberry Pi und 1-Wire

Die Temperaturmessung mit dem Raspberry Pi und dem 1-Wire-Temperatursensor DS1820 enthält eine Liste verschiedener Möglichkeiten, einen 1-Wire-Bus vom Raspberry Pi anzusteuern. Dieses Papier beschreibt die Lösung (1) mit der geringsten Menge an externer Schaltung. Sie benötigen neben den Sensoren nur einen einzigen Widerstand, da diese Lösung das 1-Wire-Protokoll vollständig in Software simuliert.

Nur ein Widerstand

Der Datenport DQ des DS1820 wird direkt mit dem Port GPIO4 der GPIO-Schnittstelle des Raspberry Pi verbunden. GND und VDD liegen am Masseanschluss GND. Das parasitäre Netzteil hat einen Pull-Up-Widerstand von 4k7 zwischen dem 3,3-Volt-Anschluss 3V3 und GPIO4 erreicht.

Der Widerstand, eine Buchse zum Anschluss an den GPIO-Port und die 1-Wire-Verbindung sind auf ein kleines Steckbrett gelötet, das direkt auf dem GPIO-Port sitzt. Der 1-Leiter-Anschluss kann mit einer platzsparenden Winkelbuchse realisiert werden. All das passt in das TEK-BERRY Gehäuse des Raspberry Pi.

1-Wire-Softwaretreiber

Die zur Aktivierung des 1-Wire-Temperatursensors benötigten Kernel-Module sind Bestandteil der Linux-Distribution Raspbian „wheezy“. Sie sollten sie jedoch explizit laden:

sudo modprobe w1-gpio pullup=1sudo modprobe w1-therm

Wichtig ist der Parameter pullup =1 , die dem Modul mitteilt, dass eine parasitäre Stromversorgung über einen Pull-Up-Widerstand vorhanden ist. Die Module erstellen für jeden Sensor ein Unterverzeichnis direkt unter /sys/bus/w1/devices. Der Verzeichnisname setzt sich aus dem Familiencode des Sensors und seiner eindeutigen Identifikationsnummer zusammen. Sensoren vom Typ DS1820 und DS18S20 haben den Family Code 10, DS18B20 hat den Code 28 und DS1822 den 22. In jedem Unterverzeichnis befindet sich die Datei w1_slave die den Sensorstatus und den gemessenen Temperaturwert enthält:

cd /sys/bus/w1/devicescd 10-000801b5*cat w1_slave0f 00 4b 46 ff ff 06 10 0c :crc=0c YES0f 00 4b 46 ff ff 06 10 0c t=7375  

Die Datei besteht aus zwei Zeilen, die jeweils den hexadezimalen Register-Dump des Sensor-ICs enthalten. Am Ende der ersten Zeile steht die Prüfsumme (CRC) und die Information, ob es sich um einen gültigen Messwert (YES) handelt. Die zweite Zeile endet mit der Temperaturanzeige in Tausendstel Grad Celsius. Im Beispiel beträgt die Temperatur also 7,375 °C. Die Genauigkeit auf drei Stellen nach dem Komma ist natürlich nur scheinbar; das Datenblatt des DS18S20 gibt zum Beispiel an, dass die Messgenauigkeit nur ± 0,5 ° C beträgt. Die tatsächliche Temperatur liegt also zwischen 6,8 und 7,9 ° C.

Wenn soweit alles funktioniert, sollten Sie die beiden benötigten Module in die Datei /etc/modules eintragen, damit sie beim Booten automatisch geladen werden:

# /etc/modulesw1-gpio pullup=1w1-therm

Round Robin Database RRDtool

Für eine Langzeitaufzeichnung von Temperaturmesswerten und eine komfortable Grafikgenerierung empfiehlt sich die Verwendung von RRDtool. Die Artikel Wetterdatenerfassung mit dem USB WDE1 und Temperaturmessung mit dem Raspberry Pi (USB-seriell) erklären dieses Tool im Detail.

Zuerst muss RRDtool mit Hilfe des Package Managers auf dem Raspberry Pi installiert werden:

sudo apt-get install rrdtool python-rrdtool

Das zweite installierte Paket python-rrdtool ist eine Python-Schnittstelle zu RRDtool, die später verwendet wird. Am Anfang der Arbeit mit RRDtool steht die Definition der Datenbank. Das folgende Beispiel erstellt eine Datenbank für zwei Temperatursensoren temp0 und temp1 . Ziel ist es, pro Viertelstunde (900 Sekunden) einen Wert zu speichern. Nach zehn Tagen (=960 Werte) erfolgt eine Reduzierung auf einen Durchschnitts-, Minimal- und Maximalwert pro Tag. Die Aufbewahrungszeit dieser Tageswerte beträgt zehn Jahre (=3600 Werte):

rrdtool create temperature.rrd --step 900 \DS:temp0:GAUGE:1200:-40:80 \DS:temp1:GAUGE:1200:-40:80 \RRA:AVERAGE:0.5:1:960 \RRA:MIN:0.5:96:3600 \RRA:MAX:0.5:96:3600 \RRA:AVERAGE:0.5:96:3600

Datenerfassung mit Python

Ein Python-Skript liest die speziellen Dateien w1_slave und fügt die Temperaturwerte in die Round-Robin-Datenbank ein:

Für mehr Details:1-Draht-Temperatursensor DS1820 am Raspberry Pi (GPIO direkt)


Herstellungsprozess

  1. Himbeer-Pi-Temperaturlogger
  2. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  3. Temperatur lesen mit DS18B20 | Raspberry Pi 2
  4. Temperaturüberwachung auf dem Raspberry Pi
  5. Temperaturmessung mit RASPBERRY PI
  6. TMP006-Temperatursensor-Python-Bibliothek mit Raspberry Pi,
  7. Python- und Raspberry Pi-Temperatursensor
  8. Raspberry Pi Wetterstation
  9. Überwachen der Temperatur mit Raspberry Pi
  10. Ultraschallsensor (HC-SR04) + Raspberry Pi