MikroKid -  experimentieren und Lernen mit µControllern

 

experiment 2 mit Thermistor - genauere Temperaturmessung

 

Hier ist er in Überlebensgröße - das unbekannte sagenumwobene Wesen - der NTC von experiment 2:

 

 

Mit etwas Geschick erhält man eine genaue Temperaturmessung und kann damit Steuerungen und Regelungen realisieren, den Lüfter anschalten, das Thermostat regeln, die Umwälzpumpe schalten oder einfach "nur" die Temperatur anzeigen. Wie bei vielen Projekten geht es ohne Theorie nicht ganz. Gerade beim NTC kann man sich sehr in die (Un-) Tiefen der Mathematik vorwagen. Hier kommt ein kleiner Versuch in diese Richtung. Jedoch sollte man sich davon nicht abschrecken lassen, am Ende steht ein verblüffendes Ergebnis und ein einfaches, praktisches und "wohltemperiertes" Programm.

 

Vorbetrachtungen:

Sagen wir, wir möchten ein Außenthermometer mit einem Messbereich von minus 10°C bis plus 40 °C bauen. Um eine auswertbare und genauere Temperaturmessung mit unserm experiment 2 und dem mitgelieferten Temperatursensor zu bekommen, werde ich mich kurz mit dem verwendeten Bauteil, dem NTC, und anderen möglichen Fehlerquellen befassen. 

Beim experiment 2 verwenden wir einen NTC 4,7 k von Vishay, übersetzt Negative Temperature Coefficient Thermistor oder Heißleiter mit einem Kennwert R25 von 4,7k also Sollwiderstand bei 25°C von 4,7 kOhm. Erhöht sich die Temperatur, wird sein Widerstand geringer, das ist einfach, aber dann geht's auch schon los:

Die folgende Abbildung zeigt den nichtlinearen Zusammenhang zwischen Temperatur und Widerstand. Ich habe sie mit Hilfe eines Berechnungstools des Herstellers Vishay erstellt. Die mangenta Kurve zeigt die nichtlineare Abnahme des Widerstandes hier in Ohm bei linear steigender Temperatur. (Quelle: http://www.vishay.com/resistors-non-linear/curve-computation-list/)

 

Der NTC soll bei uns in Reihe mit einem Festwiederstand liegen. Jetzt kommt das Gute: Zwei nichtlineare Effekte überlagern sich und führen zu einer gewissen Kompensation der Nichtlinearität des Widerstand- Temperaturverhaltens unseres NTC. Insofern lässt sich rechnerisch ein Optimalwert für den Serienwiderstand bestimmen, worauf ich hier verzichte.

Dazu wieder ein kleines Diagramm: Also was passiert mit der Spannung Ua, wenn man den oberen Widerstand, hier den NTC, linear von 40000 auf 1000 Ohm verringert während der untere Widerstand konstant bleibt? Dargestellt wird hier also der zweite und erwünschte nichtlineare Effekt: Am Knoten ergibt sich ein logarithmischer Spannungsverlauf, hier blau, für Ua.

Vereint man nun beide Effekte in einem Graphen, so ergibt sich ein fast linearer Spannungsverlauf für Ua, dargestellt durch die gelbe Line im  Diagramm oben.

Theorie ... Theorie:

Zwei kleine Grafen bzw. Tabellen brauche ich noch, dann bin ich endlich fertig. Bis jetzt haben wir es zu einer theoretisch einigermaßen linearen Spannungs- Temperatur- Kurve gebracht, der Trick lautet: ReihenSchaltung von NTC und temperaturstabilem Festwiederstand.

Unser Messprinzip: Wir messen über die A/D-Wandlung mit dem MikroKid + EXP 2 die Spannung, die über dem NTC abfällt. Diese wird um so geringer, je höher die Temperatur steigt, da sich der Widerstand des NTC verringert. Im Buch zu experiment 2 beschreibe ich die A/D- Wandlung genauer. Wir erinnern uns. Als Ergebnis der A/D-Wandlung erhalten wir einen Timer1Capture- Wert, der der Spannung am Messpunkt entspricht. Dieser Wert wird vom Programm in die Temperatur umgerechnet. So einfach, so gut.

Ich habe den Widerstand  bei verschiedenen Temperaturen meines NTCs mit einem Multimeter und einem Vergleichsthermometer von Voltcraft ausgemessen und meine eigene T-R-Tabelle aufgestellt.  In meiner Messreihe musste ich allerdings feststellen, dass das reale Verhalten meines NTCs doch entscheidend von den Werten aus Datenblatt bzw. dem Berechnungstool von Vishay abweicht. Der Toleranzbereich unseres NTCs liegt bei 5%.. Das nächste Diagramm zeigt blau den theoretischen Wert laut Vishay und gelb, dass was mein Ohmmeter angezeigt hat. Alternativ habe ich auch noch die Spannungen Ua gemessen und hier orange eingetragen.

Es kommt aber noch dicker. Unsere A/D-Waldung mit experiment 2 (die ja auch gemäß einer Empfehlung von Atmel aufgebaut ist) liefert zwar stabile und wiederholbare, nicht aber über den gesamten Bereich linear verteilte Spannungswerte, respektive TimerCapture Werte. Also noch eine Nichtlinearität, die ausgeglichen werden muss - oh Gott, hört das denn nie auf?

Die Lösung ist so einfach wie praktisch und mit ihr haben sich alle noch so theoretischen Vorbetrachtungen erübrigt:  Ich habe die Temperaturen mit dem Vergleichsthermometer gemessen und parallel die Timercapture - Werte von experiment 2 auf dem LCD ausgeben lassen und in meine Tabelle übertragen. Da ich nicht für den gesamten Messbereich gleichmäßig Werte ermitteln konnte, habe ich mit einer kostenlosen Software (InterReg 2009, Interpolation / Regression) interpoliert, extrapoliert und Stützwerte berechnet, die ich dann in mein BASCOM-Programm übernommen habe.

Um hier auch noch einen Vergleich der Messwerte mit den theoretischen Werten anbieten zu können, habe ich die Gleichung für den U-T-Zusammenhang beim NTC:

 

 

nach t ( in der Formel oben, negativ im Exponenten) umgestellt und schließlich zur Berechnung des TimerCaptureWertes verwendet. Der Vergleich zwischen theoretischen und gemessenen TimerCapture- Werten ist in folgendem (letzten) Diagramm dargestellt. Ist die Abweichung im Bereich von ca. 2 - 20 °C noch erträglich, so ergeben sich in den äußeren Bereichen doch recht deutliche Unterschiede zwischen Theorie und Praxis.

 

Hardware:

Um nun eine genauere Temperaturmessung mit MikroKid experiment 2 umzusetzen, werden wir den mitgelieferten NTC mit einem Metallschichtwiderstand 4k7/ 1% in Reihe schalten und dann das experiment 2 wie folgt (etwas anders als im Buch) aufbauen:

 

Anschluss des Temperatursensors (ich habe Verlängerungsdrähte angelötet) an Schraubklemme 1 (+5V). Der 4,7 kOhm Widerstand kommt in Schraubklemme 4. Ein kleiner zusätzlicher Verbindungsdraht führt den anderen Anschluss des NTC mit dem 4k7-Widerstand zusammen und dann zum Steckpin 2 (zu unserem A/D - Messeingang). Nur die DIP-Schalter 4 und 6 werden auf ON gestellt. (Wenn man nicht so viel Aufwand betreiben möchte, baut man einfach die Versuchsschaltung aus dem Buch zu Exp2 auf, also den NTC an die Klemmen 1 + 2 und das Poti etwa in Mittelstellung und Schalter 4,5,6 auf ON. Der Nachteil ist, jetzt ist das Trimmpoti der Massewiderstand im Spannungsteiler, und ein Trimmpoti hat ein ungünstigeres Temperaturverhalten als ein Metallschichtwiderstand, das sollte jedoch für einen Versuchsaufbau nicht stören.)

Software:

Das Programm wird im Vergleich zum Original im Buch zu experiment 2 nur wenig verändert. Das Ziel ist es, sämtliche komplizierten Rechnungen aus dem Programm zu verbannen und maximal mit Integer- Zahlen einfache Rechnungen auszuführen. Die Vorarbeit haben ich in den Messtabellen und der Tabellenkalkulation geleistet. Die TimerCapture- Tabelle mit den gemessenen Werten wird als Data- Zeilen an das Ende des Programms angehängt. Die Spannungsmessung Erfolgt im Interrupt, im Hauptprogramm wird ausgewertet und angezeigt.  Eine Auswertroutine durchläuft die Temperaturen des Messbereiches schrittweise, liest jedes Mal zwei Timer- Capture Werte aus der Tabelle und hält an, wenn der gemessenene Timer- Capture Wert im Bereich der Tabellenwerte liegt. Die Einhaltung des Messbereiches wird ebenfalls überprüft und eine Überschreitung mit -99 oder 99 angezeigt. Um die Genauigkeit zu erhöhen, wird MikroKid2 mit einem 4MHz - Quarz betrieben (geht natürlich auch ohne).

Heraus kommt ein vielseitig einsetzbares Programm zur Temperaturüberwachung, -anzeige, -auswertung und Steuerung temperaturabhängiger Prozesse mit einem einfachen und preiswerten Schaltung. Die Schaltung braucht lediglich eine A/D-Wandlung, keinen teueren Temperatursensor, keine speziellen Bus-Interfaces für Sensoren etc. Die Genauigkeit ist für den Normalgebrauch mehr als ausreichend und liegt  bei ganzen Grad. Der Temperaturbereich kann den Erfordernissen entsprechend (besonders im positiven Bereich) erweitert werden.

 

Hier gibt es das eben erläuterte Programm zum Download für den Temperaturbereich -10-40°C in ganzen Gradschritten:

Thermometer kalibriert NTC.bas

 

Fazit:

Es bleibt dabei: Will man mit wenig Schaltungsaufwand und einem einfachen NTC ein gute Temperatursteuerung aufbauen, so kommt man um eine Messung und einen Abgleich nicht herum. Die verblüffende Erkenntnis lautet: Die Theorie ist zwar interessant, aber nur "nice to know" - letztlich genügt es, die Ausgaben der A/D-Wandlung zu den Temperaturen zu messen, die Messergebnisse für das Mikrocontroller-Programm durch Interpolation etc. aufzubereiten und im Programm eine Data- Tabelle auszuwerten. So hatte ich es auch im Buch zu experiment 2 vorgeschlagen. Auch mit einem teureren Sensor (mit linearer Kennlinie)  wird der Kalibrierungsaufwand nicht viel geringer und deshalb würde ich immer wieder einen NTC einsetzen.

 

Erweiterung/ Anwendung:

Hier stelle ich eine kleine Temperaturregelung mit Hysterese vor. MikroKid experiment 2 übernimmt mit dem NTC und dem Relais die Aufgaben einer Heizungssteuerung.

Eine 12V-Lampe/ 0,5 A  fungiert als Heizung. (Beachte: Das Relais ist für max. 1A ausgelegt) Darüber ist der NTC angebracht. Die Temperatur soll auf 30°C geregelt werden mit der Hysterese von 3K. Der aktuelle Status wird in der unteren Zeile des LCD angezeigt.

Das Programm gibt es hier:

260c Thermometer kalibirert NTC Temp Steuerung.bas