Temperaturmessung mit AVR-Microcontrollern: (1) Analoge Sensoren

Seitenübersicht



 www.schramm-software.de

Analog arbeitende Temperatursensoren

Schaltbild der Testschaltung mit NTC
Schaltbild der Testschaltung, ATtiny13
mit Heißleiter als Temperatursensor

Im einfachsten Fall verwenden wir einen Heiß- oder Kaltleiter (NTC, PTC) als Temperatursensor. Insbesondere Heißleiter (NTC) sind sehr preiswerte Bauteile, so dass sich deren Verwendung anbietet. Der Messbereich billiger Standard-NTC erstreckt sich bspw. von -40 bis +150 °C. Der angegebene Widerstandsnennwert eines NTC gilt üblicherweise bei 25 °C. Der Widerstand ändert sich sehr stark mit der Temperatur. Bei einer Temperaturänderung um +/- 5 °C gegenüber der Nenntemperatur schwankt der Widerstand typischerweise um etwa -/+ 15 %. Leider gibt es jedoch keinen linearen Zusammenhang zwischen Temperatur und Widerstand, sondern die Relation lässt sich nur mit einer recht komplizierten mathematischen Funktion beschreiben (Exponentialfunktion, in die die Temperatur in mehreren Potenzstufen eingeht). Wer es genau wissen möchte, sollte sich das Datenblatt zu einem NTC besorgen.

Es lassen sich nahezu beliebige NTC verwenden mit einem Nennwiderstand zwischen 1 kΩ und 500 kΩ. R1 sollte in etwa dem NTC-Widerstand bei der mittleren Temperatur des vorgesehenen Messbereichs entsprechen.

Die Funktion der Schaltung bzw. des Programms ist sehr einfach: Nach dem Einschalten oder einem Reset wird die Reihenschaltung aus R1 und NTC über PB3 kurz mit VDD verbunden, und währenddessen misst der ADC über PB4 die temperaturabhängige Spannung in der Mitte des Spannungsteilers in Relation zur Betriebsspannung. Der Messwert von 0 bis 1023 wird anschließend akustisch als Dezimalzahl über den Piezo-Piepser ausgegeben.

Am besten notiert man, welche Ergebnisse unterschiedliche Temperaturen ergeben, und zeichnet eine Kurve auf, die die Abhängigkeit des Messwerts von der Temperatur darstellt. So bekommt man einen Eindruck von der Charakteristik des Heißleiters.


Download

Die Dateien sind für den ATtiny13 und eine Taktrate von 1,2 MHz ausgelegt. Anpassungen für einen anderen Controller und/oder eine andere Taktfrequenz sollten leicht möglich sein, da das Programm ausführlich kommentiert ist. Das Programm benötigt die in dieser Rubrik vorgestellten Makros.


Schaltbild der Testschaltung mit LM135
Schaltbild der Testschaltung, ATtiny13
mit LM135A als Temperatursensor

Die vorige Messschaltung lässt sich verbessern, indem man den Heißleiter durch eine auf Temperaturmessung spezialisierte analoge integrierte Schaltung ersetzt. Gut geeignet hierfür sind die Sensoren LM135, LM235, LM335 oder ähnliche Typen. Diese preiswerten Sensoren sind weit verbreitet vor allem in der analogen Schaltungstechnik. Mit dem Analog-Digital-Wandler (ADC) als Mittler kann aber natürlich auch ein Microcontroller das analoge Signal verwerten. Diese Sensoren werden u. a. im Gehäuse TO-92 angeboten, sehen also auf den ersten Blick aus wie ein kleiner Transistor. Die einander sehr ähnlichen Typen unterscheiden sich in der (unkalibrierten) Genauigkeit und im Messbereich. Das Grundprinzip ist aber immer gleich: Wird der Sensor von einem Strom zwischen 0,5 und 5 mA durchflossen, stellt sich eine Ausgangsspannung ein, die proportional zur absoluten Temperatur T (Kelvin-Messwert) ist und T * 10 mV beträgt. Bei z. B. 20 °C ergibt sich also eine Ausgangsspannung von (273,15 + 20) * 10 mV = 2,9315 Volt. An diesem Spannungswert sieht man schon, dass die Schaltung eine gewisse Mindestbetriebsspannung benötigt, die höher ist als im Falle des Heißleiters. Außerdem muss die Betriebsspannung stabil sein; anderenfalls erhält man unterschiedliche Messwerte trotz identischer Sensorspannung. Bei 5 Volt Betriebsspannung besitzt der ADC eine Auflösung von etwa 5 mV (5 V / 1024). Daraus folgt eine Temperatur-Auflösung von ca. 0,5 °C.

LM135, LM235 etc., Blick auf die Anschlussseite
LM135, LM235
etc., Blick auf
Anschlussseite

Im einfachsten Fall werden nur zwei der drei Sensoranschlüsse genutzt. Der Sensor arbeitet dann unkalibriert. Man muss also eine gewisse Ungenauigkeit in Kauf nehmen, die von Exemplar zu Exemplar des Sensors schwankt. Durch eine Kalibrierung unter Verwendung des Anschlusses ADJust lässt sich die Messgenauigkeit erhöhen. Hierzu wird lediglich ein 10-kΩ-Potentiometers benötigt. Im Datenblatt dieser Sensoren ist das Prinzip beschrieben.

Das obige Heißleiter-Testprogramm kann auch hier verwendet werden, denn die Verschaltung ist die gleiche wie beim Heißleitereinsatz.

Schaltbild der Testschaltung mit LM135 und Spannungsteiler
Schaltbild der Testschaltung, ATtiny13 mit LM135A
als Temperatursensor und Spannungsteiler

Die Messwertabhängigkeit von der Betriebsspannung lässt sich beseitigen, indem die interne Referenzspannung des ATtiny13 von 1,1 Volt aktiviert wird. Das Programm sieht diesen Modus vor. Hierzu muss lediglich PB2 auf Masse gelegt werden. Nun muss natürlich die Ausgangsspannung des Sensors auf den kleineren Messbereich von 0 bis 1,1 Volt umgesetzt werden. Das lässt sich einfach mit einem Spannungsteiler bewerkstelligen. Im Beispiel links wird die Spannung gedrittelt. So werden Sensorspannungen bis 3,3 Volt erfasst, demnach Temperaturen bis etwa 57 °C. Durch die Abbildung einer kleineren Temperaturspanne auf den ADC-Messbereich erhöht sich zugleich die Auflösung der Temperaturskala. Um die Funktion der Schaltung nicht zu beeinträchtigen, darf der Spannungsteiler nicht zu niederohmig sein. Widerstände in der Größenordnung von einigen 10 bis wenigen 100 Kiloohm sind hier gut geeignet (die Anordnung ist dann immer noch niederohmig genug, um ein stabiles Niveau für den ADC bereitzustellen, dessen Eingangswiderstand Hunderte Megaohm beträgt). Allerdings handeln wir uns nun neue Abhängigkeiten ein, nämlich von der Genauigkeit der ADC-Referenzspannung und jener der Widerstandswerte. Letztlich kommt man um eine individuelle Kalibrierung des Sensors nicht herum, möchte man wirklich verlässliche Messwerte erhalten.

[Kleine, vermeintlich unbedeutende Ungenauigkeiten z. B. bei den Widerstandswerten können eine große Wirkung haben: Ist etwa R2 exakt und R3 weicht um 1 % nach oben oder unten ab, so wird auch die Spannung an R3 um ungefähr diesen Prozentsatz vom richtigen Wert differieren. Da der Sensor eine Spannung liefert, die proportional zur aboluten Temperatur ist, führt die Abweichung zu einem ebensolchen relativen Fehler dieses Messwerts. 25 °C entsprechen 298,15 K. 1 % Widerstandsabweichung führt also zu einem Messfehler von knapp 3 K bzw. 3 °C!]

Ein weiterer Effekt sollte noch beachtet werden: Ihre maximale Genauigkeit erreichen die LMx35-Sensoren, wenn sie von einem konstantem Strom durchflossen werden. Bei der einfachen Methode der Reihenschaltung mit einem Widerstand (R1) ist die Stromhöhe von der Spannung am Sensor und somit von der Temperatur sowie von der Gesamtspannung abhängig. Besser ist es, R1 durch eine Konstantstromquelle zu ersetzen, die z. B. 1 mA liefern sollte. Hierfür gibt es wiederum spezialisierte ICs. Man kann sich auch aus wenigen Standardbauteilen etwas Geeignetes aufbauen, z. B. aus zwei bipolaren Transistoren und einigen Widerständen. Beispielschaltungen finden sich im Netz, etwa hier.

Schließlich ist noch zu bedenken, dass ein Versorgungsstrom im mA-Bereich zu einer nicht ganz zu vernachlässigenden Verlustleistung und somit im Laufe der Zeit zur Erwärmung des Sensors führt. Daher sollte der Sensor immer nur kurzzeitig zur Messung eingeschaltet werden. Gemäß Datenblatt stabilisiert sich die Ausgangsspannung bereits innerhalb einer µs. Das Programm auf dieser Seite trägt dem Rechnung, indem die Versorgungsspannung an PB3 nur kurz für die Messung bereitgestellt wird.


Zurück zur Übersicht