Das Problem
Schließt man den Grove Temperature Sensor V1.2 an den rechten (!) Grove-Anschluss des Calliope mini an, dann lassen sich die Messwerte des Sensors mit Hilfe der folgenden Programme (je nach Editor NEPO oder PXT) im Display anzeigen.
Die angezeigten Messwerte liegen alle im Bereich von 0 bis 1023, doch was stellen sie dar? Das ist doch keine Temperatur!
Die Temperatur mit Hilfe eines Thermistors messen
Eine Temperatur ist eine analoge Größe. Die Werte sind stufenlosen und kontinuierlich über die Zeit mit Hilfe eines Thermometers messbar.
In einem Zeit-Temperatur-Diagramm entsteht eine Kurve, die keine "Ecken", Lücken oder Sprünge hat.
Für die elektronische Messung der Temperatur wird auf dem Grove Temperature Sensor V1.2 ein sog. Heißleiter oder auch NTC-Thermistor eingesetzt werden.
Dieser erhöht seinen elektrischen Widerstand reproduzierbar mit fallender Temperatur. Der Hersteller gibt den Typ mit NCP18WF104 an. Aus dem Datenblatt des Herstellers lässt sich der Wert des Widerstand bei 25 °C = 298,15 K mit 100 kΩ ablesen. Außerdem sind weitere Werte in einer Tabelle angegeben, die Zusammenhang vermuten lassen, der nicht umgekehrt proportional ist.
Der Zusammenhang zwischen dem Widerstand RT
und der Temperatur T in Kelvin wird für Heißleiter näherungsweise durch die Gleichung
beschrieben. B ist eine bauelementeabhängige Größe, die dem Datenblatt mit B = 4250 K entnommen werden kann. Somit lässt sich die analoge Größe Temperatur auf die analoge Größe elektrischer Widerstand abbilden.
In der Elektronik werden Analogsignale jedoch üblicherweise in Form einer elektrischen Spannung zur Darstellung der physikalischen Größe gewählt. Der Schaltplan des Herstellers - hier vereinfacht dargestellt - zeigt das Grundprinzip.
RT
lässt sich auf UMess
abbilden, denn es liegt ein Spannungsteiler vor, für den gilt: Das Verhältnis der beiden Widerstandswerte entspricht dem Verhältnis der über den Widerständen anliegenden Teilspannungen
und auf Grund der Reihenschaltung der beiden Widerstände, dass die Gesamtspannung sich als Summe der beiden anliegenden Teilspannungen beschreiben lässt:
Setze man die Gleichungen ineinander ein
und nach RT
um, so erhält man
Setzt man diese Gleichung nun in Gleichung für die Temperatur ein, so erhält man eine Abbildung der analogen Temperatur auf die analoge Spannung UMess
Da R1
im Datenblatt mit 100 kΩ angegeben wird, vereinfacht sich die Gleichung nochmals.
Auf der Platine befindet sich ein Operationsverstärker, der als Impedanzwandler die Messspannung im Verhältnis 1:1 an den Sensoranschluss weitergibt und daher in den Berechnungen keine Rolle spielt, sowie ein Stützkondensator zur Stabilisierung der Spannung des Operationsverstärkers.
Digitalisierung des Messwerte
Die Messspannung UMess
liegt am Grove-Anschluss A1 als analoges Eingangssignal mit einem Wert von 0 und zur maximal möglichen Spannung U = 3,3 V des Calliope-Systems an. Bei Verwendung des Blocks
wird das Eingangssignal vom Prozessor als Verhältnis UMess
:U eingelesen und auf den ganzzahligen Bereich 0 bis 1023 abgebildet. Diesen Vorgang bezeichnet man als analog-digital-Wandlung. Es ergibt sich also eine Abbildung, wobei n stets geradzahlig ist
Führt man nun die Digitalisierung und den Zusammenhang zwischen der Temperatur und der Messspannung zusammen, so lässt sich die Temperatur aus dem digitalisierten Wert n berechnen.
Beziehungsweise
Nun ist es kein Problem mehr, diese Gleichung mit dem NEPO-Editor zu implementieren und auf Grad Celsius zu normieren.
Etwas schwieriger ist die Verwendung des MakeCode-PXT-Editors. Dieser unterstützt nur eine Ganzzahlarithmetik. Dafür verfügt dieser Editor aber einen Mapping-Block "verteile", der einen Zahlenbereich gleichmäßig auf einen anderen Zahlenbereich verteilen kann.
Betrachtet man den Graph der zugehörigen Funktionsgleichung T(n), so kann man den Bereich zwischen n = 270 und n = 699 als linear ansehen. Dieser Bereich liefert die Temperaturen T(270) = 5 °C und T(699) = 42 °C.
Damit ist eine Implementierung in PXT möglich.
Comments