ESP32 - MAX6675 Thermoelement-Modul
Die meisten Temperatursensoren, die wir in anderen Tutorials behandeln – DS18B20, DHT22, LM35 und ähnliche – kommen nur bis etwa 100-150°C. Das reicht völlig für einen Raum, einen Kühlschrank oder ein Gartenbeet, ist aber nutzlos, wenn Sie wissen müssen, wie heiß ein Ofen, eine Lötspitze oder das Innere eines Pizzaofens wirklich wird. Für solche Aufgaben greifen Bastler stattdessen zu einem Thermoelement, kombiniert mit einem kleinen Digitalisierungschip namens MAX6675.
In diesem Tutorial verbinden wir einen ESP32 mit einem MAX6675-Breakout-Board und einem Typ-K-Thermoelementfühler und geben anschließend die Temperatur im Seriellen Monitor sowohl in Celsius als auch in Fahrenheit aus.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Was genau ist ein Thermoelement?
Ein Thermoelement besteht einfach aus zwei Drähten aus unterschiedlichen Metallen, die an einem Ende zusammengeschweißt sind und die sogenannte Messstelle (heiße Lötstelle) bilden. Sobald diese Verbindungsstelle heiß (oder kalt) wird, entsteht an den Drähten eine winzige Spannung, die mit der Temperatur steigt und fällt. Da es sich nur um zwei Drahtstücke und nicht um einen empfindlichen Siliziumsensor handelt, kann ein Thermoelement an Orten überleben – und messen –, die einen normalen Sensor sofort zerstören würden. Die Typ-K-Variante aus Chromel- und Alumel-Draht ist mit Abstand die gebräuchlichste und deckt etwa -328°F bis +2300°F ab.
Über das MAX6675-Modul
Für sich genommen ist das Signal eines Thermoelements im Millivoltbereich zu klein und zu verrauscht, als dass ein Mikrocontroller es direkt lesen könnte. Das MAX6675-Modul löst dieses Problem: Es ist ein kleines Breakout-Board rund um den MAX6675-IC, das zusammen mit einem bereits angeschlossenen Typ-K-Fühler verkauft wird.
Pinbelegung des MAX6675-Moduls

Der MAX6675-Chip auf dem Breakout-Board tastet das Signal des Fühlers kontinuierlich ab, führt intern die Kaltstellenkompensation durch und liefert dem ESP32 über einen einfachen 3-Draht-Bus einen sofort nutzbaren 12-Bit-Temperaturwert. Die Pins sind:
- VCC: Stromversorgungseingang, 3,0V bis 5,5V.
- GND: Masse.
- SCK: serieller Takteingang, vom ESP32 angesteuert.
- CS: Chip Select – der ESP32 zieht diesen Pin auf LOW, während er einen Messwert ausliest.
- SO: nur serieller Datenausgang (es gibt keinen Dateneingangs-Pin; das Modul empfängt nie Befehle, es sendet nur).
An der gegenüberliegenden Kante der Platine befindet sich eine kleine Schraubklemme, an die der Fühler angeschlossen wird, gekennzeichnet mit + und -; die rote Leitung des Fühlers kommt an + und die blaue Leitung an -.
Zu den weiteren Daten: Das Breakout-Board selbst kann Temperaturen von 0°C bis 1024°C digitalisieren, hat eine Genauigkeit von etwa ±3°C und löst Messwerte bis auf rund 0,25°C auf – wobei der mitgelieferte Fühler, der als Nächstes beschrieben wird, der eigentlich begrenzende Faktor ist.
Der mitgelieferte Typ-K-Fühler
Der mit dem Modul gelieferte Fühler ist ein dünnes Kabel mit Edelstahlspitze, etwa 18 Zoll lang, und ist nur für 0°C bis 80°C ausgelegt – gut für eine Tasse Kaffee oder ein Terrarium, aber bevor Sie ihn auf einen Brennofen richten, sollten Sie einen Fühler mit höherer Nenntemperatur verwenden. Achten Sie auf die roten (positiven) und blauen (negativen) Drähte an dem Ende, das in die Schraubklemme des Breakout-Boards gesteckt wird.
Verdrahtungsdiagramm
Versorgen Sie das Modul über den ESP32: VCC an 5V (3,3V funktioniert ebenfalls) und GND an GND. Die übrigen drei Pins – SCK, CS und SO – kommen jeweils an einen beliebigen freien GPIO des ESP32, da die Bibliothek sie per einfachem Bit-Banging statt über die Hardware-SPI-Peripherie ansteuert. Setzen Sie zum Schluss die rote und blaue Leitung des Thermoelementfühlers in die Klemmen + und - des Moduls ein.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.
Verdrahtungstabelle zwischen MAX6675-Modul und ESP32
| MAX6675-Modul | ESP32 |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SCK | → GPIO19 |
| CS | → GPIO18 |
| SO | → GPIO5 |
ESP32-Code
Schnelle Schritte
- Neu beim ESP32? Beginnen Sie zunächst mit der Einrichtung der ESP32-Umgebung in der Arduino IDE.
- Verdrahten Sie das MAX6675-Modul und den Thermoelementfühler wie im obigen Schaltplan gezeigt mit dem ESP32.
- Schließen Sie den ESP32 mit einem USB-Kabel an Ihren Computer an.
- Öffnen Sie die Arduino IDE.
- Wählen Sie unter Tools das passende ESP32-Board (z. B. ESP32 Dev Module) und den richtigen COM-Port aus.
- Öffnen Sie das Panel Libraries über die Symbolleiste auf der linken Seite.
- Geben Sie "MAX6675" in das Suchfeld ein und suchen Sie die von Adafruit veröffentlichte Bibliothek.
- Klicken Sie auf Install.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Fügen Sie den obigen Code in die IDE ein.
- Klicken Sie auf Upload, um den Sketch auf den ESP32 zu übertragen.
- Erwärmen Sie die Spitze des Thermoelements (halten Sie sie fest, hauchen Sie sie an, tauchen Sie sie in warmes Wasser) oder lassen Sie sie abkühlen.
- Öffnen Sie den Seriellen Monitor, um die eintreffenden Messwerte zu beobachten.
※ Notiz:
Sehen Sie einen eingefrorenen oder offensichtlich falschen Messwert? Überprüfen Sie zuerst die Verdrahtung von SCK/CS/SO und stellen Sie dann sicher, dass die rote und blaue Leitung des Thermoelements fest in den Schraubklemmen des Moduls sitzen – eine lose Leitung ist die häufigste Ursache für einen hängenden oder unsinnigen Messwert.
Code-Erklärung
Der Sketch beginnt mit dem Einbinden der Header-Datei der MAX6675-Bibliothek, wodurch der ESP32-Sketch Zugriff auf die Klasse MAX6675 erhält.
Drei Konstanten legen fest, mit welchen GPIOs des ESP32 die Pins SCK, CS und SO des Moduls verbunden sind.
Anschließend wird mit diesen drei Pins ein einzelnes MAX6675-Objekt namens thermocouple erzeugt – dieses ruft der restliche Sketch auf, um einen Messwert zu erfassen.
setup() muss lediglich die serielle Schnittstelle starten, damit wir die Ergebnisse irgendwo ausgeben können, sowie eine kurze Verzögerung einlegen, damit der MAX6675 vor dem ersten Auslesen vollständig hochfahren kann.
Innerhalb von loop() sind die beiden entscheidenden Bibliotheksaufrufe:
- Thermocouple.readCelsius(): holt den neuesten Messwert in Grad Celsius.
- Thermocouple.readFahrenheit(): holt denselben Messwert, umgerechnet in Fahrenheit.
Ein delay() von einer Sekunde schließt die Schleife ab, sodass die Messwerte in angenehmem Tempo durchlaufen, statt den Seriellen Monitor zu überfluten.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.