Aquarium Computer - Teil 3 - Der Temperatursensor
Nun beginnt das große Zusammenfügen der einzelnen Module.
Einer der ersten Versuche war die Einbindung des Dallas Temperatur Sensors DS18B20. Die Hardware dafür ist recht simpel. Alles was man dazu benötigt sind der Sensor selbst und ein 4,7kΩ Widerstand. Die Schaltung habe ich ja bereits bei meinem letzten Post angehängt.
Die Ansteuerung des Sensors wird über das sogenannte "One-Wire-Protocol" realisiert. Das heißt so, weil nur eine Datenleitung (1-Wire BUS) zum Sensor verläuft. Zusätzlich benötigt der Sensor aber noch eine Versorgung (VDD) und eine Masse (GND). Die fertigen Kabel mit dem Sensor am Ende haben dafür 3 Adern ausgeführt, die meist folgende Farben haben:
Spannungsversorgung (VDD) | |
Masse (GND) | |
1-Wire BUS |
Masse wird mit GND des Arduino Boards verbunden. Die Spannungsversorgung (VDD) kommt an den 5V Pin des Arduinos. Die 1-Wire BUS Leitung wird mit einem Digital Pin des Arduinos und zusätzlich über den 4,7kΩ Widerstand (Pullup) mit 5V verbunden.
Thomas Wenzlaff hat in seinem Blog eine nette Anleitung dazu geschrieben.
Er verwendet dazu die Bibliotheken OneWire 2.2 und Dallas Temperature Control Library 3.7.2.
Die Bibliotheken kommen in das sketchbook/libraries Verzeichnis, das von der Arduino IDE bereitgestellt wird. Das eigentliche Programm fällt durch die Bibliotheken relativ klein aus. Ich habe das Beispielprogramm von Thomas Wenzlaff dazu etwas gekürzt, um es übersichtlicher zu halten.
// benötigte Bibliotheken importieren
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire onewire(2); // Digitalport Pin 2 als 1-Wire-BUS verwenden
DallasTemperature temp(&onewire); // "Dallas Temperature Library" instanzieren
void setup() {
Serial.begin(9600); // serielle Schnittstelle mit 9600 Baud starten
temp.begin(); // "Dallas Temperature library" starten
}
void loop() {
temp.requestTemperatures(); // Temperatur abfragen (blockiert etwa 800ms)
Serial.print(temp.getTempCByIndex(0)); // gibt die Temperatur aus
Serial.println(" Grad Celsius"); // gibt " Grad Celsius" aus
}
Wie man sieht gestaltet sich die Abfrage des Sensors recht einfach. Später soll natürlich die Temperatur nicht über die serielle Schnittstelle ausgegeben werden, sondern wird auf dem kleinen Display angezeigt.
Viel Spaß beim Ausprobieren!
Nachtrag 10. Februar 2016:
Die Schaltung dazu in KiCad gezeichnet.