Raspberry Pi Pico: Temperatur mit dem integrierten Temperatursensor messen
Auf der Platine des Raspberry Pi Pico ist ein Temperatursensor drauf, der sich für Temperatur-Messungen verwenden lässt. Die Temperatur lässt sich im Prinzip auslesen, auswerten und für die Steuerung und Regelung nutzen.
Die Temperatur-Messung mit dem im Pico eingebauten Temperatur-Sensor ist ein gutes Beispiel für die Komplexität und die Probleme, die wir bei der Hardware-nahen Programmierung haben. Die naive Vorstellung einer Temperatur-Messung ist, also dass der Temperatur-Sensor einfach die herrschende Temperatur messen kann, wenn man ihn abfragt bzw. den Wert ausliest. Diese Annahme ist grundsätzlich falsch. Das damit zusammenhängende Weltbild wird hier zum Einsturz gebracht bzw. geradegerückt.
Die Wahrheit ist, dass die eigentliche Temperaturmessung tatsächlich die Messung einer Spannung an einer Halbleiterdiode ist. Diese Diode ist intern mit einem ADC-Kanal verbunden. Dieser ADC-Kanal, mit der Nummer 4 (ADC4), ist nicht nach außen geführt.
Der eigentliche Messwert ist also keine Temperatur, sondern eine elektrische Größe. Genauer gesagt eine Spannung, die an der Halbleiterdiode abfällt. Die Leitfähigkeit von Halbleitern ist temperaturabhängig, weshalb sich eine Diode als Temperatursensor eignen kann. Die Messung der Temperatur findet also über einen Umweg statt.
Von der zu messenden Spannung weiß man, dass 0,706 Volt umgerechnet 27 C° betragen. Eine Abweichung von je 0,001721 V bzw. 1,721 mV entspricht jeweils einem Grad Celsius. Man muss also die Temperatur auf Basis der gemessenen Spannung ausrechnen.
Jetzt kommt noch ein Umstand hinzu. Die Spannung, die gemessen wird, wird nicht als Dezimalzahl mit Nachkommastelle ausgegeben, sondern als eine Dualzahl mit 16 Bit. Diese Dualzahl muss in eine Dezimalzahl zwischen 0 und 65.535 umgewandelt werden. Und dann muss man mit Hilfe eines Umrechnungsfaktors (Conversion-Factor) die Dezimalzahl in eine reele Zahl umrechnen (Dreisatz), die der gemessenen Spannung entspricht. Als Basis dient hier die Referenzspannung von 3,3 Volt und der entsprechende dezimale Wert von 65.535. 0 Volt wäre eine dezimale Null.
Das Auslesen des binären Werts, das Umrechnen in einen dualen Wert, der entsprechenden Spannung und dann das Umrechnen in eine Temperatur muss man also programmieren.
Da der Raspberry Pi Pico keine Anzeige hat, findet die Temperatur-Anzeige im Editor-Feld „Kommandozeile“ bzw. „Shell“ der Thonny Python IDE statt.
Wichtig zu wissen
Beim Messen ist es wichtig, dass das „Messgerät“, mit dem man den Messwert ermittelt, kalibriert sein muss. In diesem Fall ist das Messgerät der Raspberry Pi Pico mit dem internen Temperatursensor. Hardware-seitig lässt sich der Pico nicht kalibrieren. Man müsste dazu schon ein sehr genaues Temperaturmessgerät haben und in der Software für bestimmte Messwerte die entsprechende Temperatur hinterlegen.
Außerdem ist der Raspberry Pi Pico beim Messen einer Temperatur eher eine Schätzkeule. So genau ist die Temperaturmessung nicht. Ein weiteres Problem ist, dass der Temperatursensor zu nahe am Mikrocontroller-Chip gebaut ist. Das heißt, die Temperatur, die da gemessen wird, steigt und fällt mit der Rechenleistung, die dem Mikrocontroller abgefordert wird. Denn die Rechenleistung steht in Zusammenhang mit dessen Temperaturentwicklung. Außerhalb eines Gehäuses ist der Einfluss sicherlich gering. Befindet sich der Pico in einem Gehäuse, dann wird die erzeugte Wärme nicht abgeführt und entspricht nicht der Umgebungstemperatur außerhalb des Gehäuses.
Was heißt das? Das heißt, dass sich der Raspberry Pi Pico alleine und ohne externen Temperaturfühler nicht zum Messen einer Raum-Temperatur eignet und entsprechend auch nicht zur Temperatur-Regelung oder Heizungssteuerung genutzt werden kann. Dafür ist ein externer Temperaturfühler notwendig.
Das ist übrigens immer so. Eine Temperatur-Regelung arbeitet immer mit einem externen Temperaturfühler, um interne Einflüsse zu vermeiden.
Welchen Sinn macht dann der Temperatursensor auf dem Pico? Einmal hat man dadurch die Möglichkeit, die Umgebungstemperatur direkt am Pico zu ermitteln. Auf dieses Weise kann man schnel feststellen, ob sich der Pico in einer Umgebung befindet, an der eine Kühlung notwendig sein könnte.
Desweiteren ist das eine einfache Möglichkeit die Nutzung eines Analog-Digital-Wandlers (ADC) ohne externe Beschaltung zu demonstrieren. Zum Experimentieren ist das besonders attraktiv. Für mehr, als diese zwei Anwendungen, sollte man diesen Temperatursensor nicht verwenden.
Aufbau und Bauteile
Der Vorteil dieses Aufbaus ist, dass außer dem Raspberry Pi Pico nichts weiter erforderlich ist.
Programmcode für MicroPython
Nach dem Start des Programms wird die Temperatur ermittelt. Die dazugehörigen Werte, „Dezimalzahl“, „Spannung“ und „Temperatur“ werden anzeigt.
Wichtig zu verstehen ist, dass alle drei Werte das gleiche bedeuten. Sie unterscheiden sich nur in der Darstellung.
# Bibliotheken laden from machine import ADC from time import sleep # Initialisierung des ADC4 sensor = ADC(4) conversion_factor = 3.3 / (65535) # Wiederholung einleiten (Schleife) while True: # Temparatur-Sensor als Dezimalzahl lesen value_a = sensor.read_u16() # Dezimalzahl in eine reele Zahl umrechnen spannung = value_a * conversion_factor # Spannung in Temperatur umrechnen temperatur = 27 - (spannung - 0.706) / 0.001721 # Ausgabe in der Kommandozeile/Shell print("Dezimalzahl: ", value_a) print("Spannung (V): ", spannung) print("Temperatur (°C): ", temperatur) print() # 2 Sekunden warten sleep(3)
Hinweis: Den Programmcode für die Temperatur-Messung findet man in anderen Beispielen (Internet, Bücher, Zeitschriften, etc.) meist kompakter, aber auch schwerer lesbar. Wir haben hier eine Darstellung gewählt, bei der die einzelnen Umrechnungsschritte besser zu erkennen sind und leichter nachvollzogen werden können.
Programmcode für MicroPython mit picozero
„picozero“ ist eine Einsteiger-freundliche MicroPython-Bibliothek, um elektronische Bauteile, wie LEDs, Taster und Sensoren einfacher zu programmieren und zu steuern.
from picozero import pico_temp_sensor from time import sleep while True: print(pico_temp_sensor.temp) sleep(2)
Experimente
Wie lässt sich die Temperatur erhöhen und senken?
- Eine höhere Temperatur erreichst Du dadurch, dass Du den Pico anhauchst. Die Luft aus unserem Atem hat in der Regel eine höhere Temperatur als die Umgebung.
- Um die Temperatur zu senken, kannst Du einfach warten und zuschauen, wie Temperatur fällt. Oder Du pustest die warme Luft am Pico weg.
Darf es ein bisschen mehr sein?
Hast Du schon einmal ausprobiert einen Taster-Zustand auszuwerten und mit einer LED anzuzeigen? Wenn noch nicht, dann mal los.
Wenn Dich Spielereien mit Tastern noch nicht reizen, dann versuche doch mal die Ansteuerung für eine Reihe von Leuchtdioden aus.
- Raspberry Pi Pico: Binärer Zähler mit LEDs programmieren
- Raspberry Pi Pico: Zufallszahl generieren
- Raspberry Pi Pico: Elektronischer Würfel
Highlights: Elektronik mit dem Raspberry Pi Pico
- Raspberry Pi Pico: Onboard-LED einschalten und ausschalten
- Raspberry Pi Pico: Taster-Zustand auswerten und mit einer LED anzeigen
- Raspberry Pi Pico: Elektronischer Würfel
- Raspberry Pi Pico: Temperatur-Messung und Temperatur anzeigen
Elektronik mit dem Raspberry Pi
Die Stärken des Raspberry Pi liegen klar in der Computer-Architektur mit typischen Computer-Schnittstellen und Möglichkeit zum Ausführen von Open-Source-Software für Linux.
Weitere verwandte Themen:
- Raspberry Pi Pico
- Raspberry Pi Pico: GPIO-Grundlagen
- Raspberry Pi Pico: Temperatur messen
- Raspberry Pi Pico: Temperatur messen mit dem DHT11
- Raspberry Pi Pico: Temperatur messen mit dem DS18B20
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)