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

Raspberry Pi Pico: Externe LED blinken lassen

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?

  1. 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.
  2. 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.

Highlights: Elektronik mit dem Raspberry Pi Pico

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:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

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

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

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.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren