Sonntag, 25. Oktober 2015

Temperatur messen nur mit dem Arduino

In diesem Post geht es darum, wie man die Temperatur mit dem Arduino messen kann, ohne einen externen Sensor zu benötigen.

Die Funktionsweise

Dieser kleine Trick funktioniert leider nicht bei allen Arduinos, sondern nur bei Arduinos mit einem ATmega328P. Mit einem ATmega168P funktioniert das Ganze auch, dieser wird jedoch in keinem "offiziellen" Arduino, sondern nur in manchen Klonen, verwendet. Eventuell finden sich jedoch auch noch weitere unterstützte Mikrocontroller. Im Zweifelsfall also einfach mal ausprobieren.

Der Grund warum, das Thermometer nur mit diesen Arduinos funktioniert ist, dass im 328P und im 168P beim Switch, welches entscheidet welcher Pin mit dem Analog zu Digital Converter verbunden wird, einen "leere" Verbindung ist. Diese hat man genutzt, um ein rudimentäres Thermometer einzubauen. 

Dieses ist jedoch nicht so genau. Im Datenblatt steht eine Abweichung von +/- 10 °C. Wenn man das Thermometer jedoch einmal kalibriert, kann man es bis zu ca. 1°C genau bekommen.

Die Funktion zum Auslesen des Thermometers ist nicht in der Arduino Bibliothek dabei, weshalb man sie im jeweiligen Sketch erst noch definieren muss. Dabei kann der Code einfach von hier kopiert werden. 

Hier einmal die Funktion inklusive Beispielsketch zum Testen und Kalibrieren:

Der Wert wird in Milli °C angegeben. Das bedeutet 20000 steht für 20°C. Um das Thermometer zu kalibrieren solltet ihr euch ein genaues Thermometer besorgen, und die Temperaturdifferenz zum Messwert des Arduino hinzu addieren beziehungsweise subtrahieren.

Beim mir war die Differenz immer fast konstant +5°C. Durch abziehen von 5, kann mein Arduino Thermometer jetzt sehr genau messen.

Wem das nicht genau genug ist, kann ich diesen Sensor für Temperatur und Feuchtigkeit (DHT11) empfehlen. Wer es noch genau will, wählt den DHT22.

Keine Kommentare:

Kommentar veröffentlichen