Temperaturmessung mit AVR-Microcontrollern

Seitenübersicht



 www.schramm-software.de

Es gibt eine Vielzahl von Sensoren für unterschiedliche "nicht-elektrische" Größen, die sich vorzüglich an Microcontroller anschließen lassen. Interessante, sehr gut zum Experimentieren geeignete Exemplare findet man unter den Temperatursensoren. Da Microcontroller so vielseitige Gesellen sind, lässt sich praktisch jeder Temperatursensor, gebe er seinen Messwert klassisch analog oder modern digital aus, mit einem Microcontroller betreiben. Da in der Regel nur eine Leitung zur Entgegennahme und ggf. Steuerung des Sensors benötigt und im einfachsten Fall der Messwert akustisch ausgegeben wird ("gemorst", siehe akustische Zahlenausgabe), kommt man mit wenigen Controller-Anschlüssen aus, wenn man sich mit den Sensoren vertraut machen möchte. Daher verwenden die folgenden Testprogramme wiederum den kleinen ATtiny13, lassen sich aber leicht auf andere AVR-Typen übertragen.

Welche Sensortypen gibt es, was lässt sich als Temperatursensor verwenden? Eine ausgezeichnete, umfangreiche Übersicht über wohl so gut wie alle verfügbaren Temperatursensoren findet sich im Mikrocontroller.net. Vieles davon ist allerdings zumindest für erste Experimente weniger geeignet. So zeichnen sich etwa Platinwiderstände zwar durch einen zur Temperatur proportionalen Widerstand und eine hohe Genauigkeit aus, die nur geringe Widerstandsänderung pro Grad erlaubt aber ohne zusätzlichen Schaltungsaufwand nur grobe Messungen. Die folgenden Betrachtungen beschränken sich auf Sensoren, die einfach einzusetzen und zudem preiswert sind, und geben konkrete Schaltungsbeispiele samt Testprogrammen an.

Benötigt man überhaupt einen externen Sensor? Einige Microcontroller der AVR-Serie verfügen doch über einen "temperature sensor on chip", also einen eingebauten Temperatursensor, z. B. ATtiny24, ATtiny25 und die jeweils kompatiblen Typen mit größerem Speicher. Dieser Sensor lässt sich als interner ADC-Kanal (ADC4 bzw. ADC8) aktivieren. Die Sensor-Ausgangsspannung kann gegen die interne 1,1-Volt-Referenzspannung gemessen werden; man benötigt also keinerlei zusätzliche Hardware.

Prinzipiell stimmt das. Aber der interne Temperaturfühler reicht bei weitem nicht an die Fähigkeiten eines guten externen Sensors heran; das zeigt schon ein Blick in das Datenblatt dieser Mikrocontroller. Erstens ist die Messwertauflösung gering; sie liegt bei etwa 1 °C (aber eben leider nicht exakt, man bekommt also meist "krumme" Celsius-Werte). Schon für die Ermittlung und Anzeige der Raumtemperatur dürfte diese Genauigkeit meist als unzureichend empfunden werden. Zweitens kann die Spannung-Temperatur-Funktion sich von Exemplar zu Exemplar des Controllers deutlich unterscheiden und zeigt zudem eine Abhängigkeit von der Betriebsspannung. Um im Rahmen der erzielbaren Ergebnisse wenigstens verlässliche Werte zu erhalten, ist eine Kalibrierung mit Hilfe von möglichst zwei Vergleichsmessungen bei unterschiedlichen Temperaturen unerlässlich und sollte immer dieselbe Betriebsspannung verwendet werden. Drittens schließlich ist der Sensor - natürlich - fest an den Microcontroller gekoppelt. Messungen außerhalb des Temperaturbereichs, den der Controller und eventuell weitere Bauteile in seiner Nachbarschaft ertragen, im besten Falle -40 bis +125 °C, sind somit ausgeschlossen. Auch Messungen in Flüssigkeiten oder manch "problematischer Umgebung" dürften sich schwierig gestalten.

Wozu ist der interne Sensor trotz all dieser Einschränkungen überhaupt gut? Vermutlich wurde er dafür konzipiert, den Mikrocontroller auf einfache Weise gefährliche Betriebsbedingungen wie Überhitzungen eines Gerätes erkennen zu lassen. Wird ein ausreichender Sicherheitsabstand zum Geräteversagen einkalkuliert, kommt es auf ein paar Grad mehr oder weniger womöglich nicht an.


Zurück zur Übersicht