Test: Temperatur mit DS18B20

Eine Möglichkeit für die Temperaturmessung stellt das Bausteil DS18B20 dar.
Er benutzt das von 1-Wire Protokoll. Der Anschluss eines solchen Bauteils ist bereits mehrfach beschrieben worden und lässt sich leicht im Netz finden.

In der PI4J-Bibliothek gibt es keine Unterstützung für die 1-Wire Bausteine, deshalb werde ich im Rahmen des Projektes eine solche Bibliothek beginnen. Also der DS18B20:

Zurück zu Einführung

Das JAVA/Eclipse-Projekt ist ähnlich dem 1. Testprojekt aufgebaut und lässt sich mit git clone https://github.com/git4gecko/jMeasurement.git einfachen clonen (herunter laden).

Praktischerweise lassen sich alle Informationen über die OneWire-Geräte über das Dateisystem (Devices) abfragen. Die wichtigsten Verzeichnisse und Dateien sind:

  • /sys/bus/w1 Das Basisverzeichnis der OneWire-Geräte
  • /sys/bus/w1/devices  Das Verzeichnis mit OneWire-Geräten und dem master
  • /sys/bus/w1/devices/28-xxxxxxxxxx Link auf das eigentliche Geräteverzeichnis: . 28-… steht für die Adresse eines Temperatursensors.
  • /sys/bus/w1/devices/28-xxxxxxxxxx/w1_slave Diese Datei liefert die Messergebnisse zurück

Ein erster Test, auf Dateisystemebene in der Kommandozeile, könnte wie folgt aussehen:

Messwerte in den Kommandozeile ausgeben.
Messwerte in den Kommandozeile ausgeben.

Die Bibliothek umfasst (zum Start) nur den DS18B20 Baustein mit den Funktionen:

  • OneWire.getAllDevices() : List<OneWireDevice> Liefert alle aktiven OneWire-Geräte zurück.
  • OneWire.getValue(address: String) : float Liefert einen Messwert für das angegebene OneWire-Gerät (Adresse) zurück.

Eine einfache Demonstration ist in der Klasse TestOneWire implementiert.

Erinnerung:

  • Mit dem ANT-Tool übersetzen und kopieren, Task deploy
  • Auf dem Zielsystem (RPI) wie folgt starten:
    sudo java -cp ./jMeasurement.jar de.us.rpi.jMeasurement.oneWire.TestOneWire

Zum Schluß noch die Schaltung, mit Fritzing erstellt:

Schaltung mit LED und einem DS18B20
Schaltung mit LED und einem DS18B20

Zurück zu Einführung