Arduino Nano ESP32 - MAX6675 Thermoelement-Modul
Jedes andere Temperatur-Tutorial dieser Reihe - DHT11/DHT22, DS18B20, TMP36 - hat dieselbe Schwäche: Keiner dieser Sensoren überlebt es, in etwas wirklich Heißes gesteckt zu werden. Ihre Kunststoffgehäuse und Silizium-Chips geben schon deutlich unter 150°C auf, was das Rösten von Kaffeebohnen, die Überwachung eines Keramik-Brennofens oder die Messung der Abgastemperatur eines Holzofens ausschließt.
Die Lösung ist eine völlig andere Messtechnik, das sogenannte Thermoelement, kombiniert mit einer kleinen Breakout-Platine, die dessen Ausgangssignal in eine Zahl umwandelt, die der Arduino Nano ESP32 lesen kann. Dieses Tutorial behandelt die Verdrahtung und Programmierung des MAX6675 Thermoelement-Moduls mit dem Arduino Nano ESP32.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über das MAX6675 Thermoelement-Modul
Was als „MAX6675-Modul“ geliefert wird, sind eigentlich zwei Dinge in einem Paket: eine kleine Breakout-Platine rund um den MAX6675-Chip und ein daran angeschlossener Typ-K-Thermoelementfühler.

Was ist ein Thermoelement?
Ohne Marketing betrachtet ist ein Thermoelement nichts anderes als zwei unterschiedliche Metalldrähte, die an einer Spitze miteinander verschweißt sind, der sogenannten Messstelle. Wird diese Stelle erhitzt, entsteht zwischen den Drähten eine kleine Spannung, die mit der Temperatur steigt oder sinkt. Es gibt keinen Chip, kein Silizium, nichts, was schmelzen könnte - genau deshalb kann ein Thermoelement an Orten eingesetzt werden, an denen ein normaler Sensor sofort zerstört würde.
Thermoelemente gibt es in mehreren Typen (J, K, E, T und weitere), benannt nach der verwendeten Metallkombination. Typ K - aus Chromel und Alumel - ist der am häufigsten anzutreffende und deckt bequem einen Bereich von etwa -328°F bis +2300°F ab.
Für sich allein ist dieses Signal im Millivoltbereich jedoch schwer zu verarbeiten. Es muss verstärkt, linearisiert und in einen echten Temperaturwert umgerechnet werden, bevor ein Arduino Nano ESP32 etwas Sinnvolles damit anfangen kann - und genau diese Umwandlung übernimmt der MAX6675.
Pinbelegung des MAX6675-Moduls
Die Breakout-Platine tastet die winzige Spannung des Fühlers ständig ab, leitet sie durch einen 12-Bit-Analog-Digital-Wandler und übergibt den fertigen Messwert über eine 3-Draht-Verbindung (nur lesend) an den Arduino Nano ESP32:
- VCC: Spannungseingang, akzeptiert 3,0V bis 5,5V.
- GND: Massebezug.
- SCK: serieller Takt, vom Arduino Nano ESP32 getrieben, um jeden Messwert herauszuschieben.
- CS: Chip Select - der Arduino Nano ESP32 zieht diesen Pin auf LOW, wann immer er einen Messwert abrufen möchte.
- SO: serieller Datenausgang, die MISO-Leitung des Moduls, die das 12-Bit-Ergebnis zum Arduino Nano ESP32 zurückliefert. Einen MOSI-Pin gibt es überhaupt nicht, da an den Chip nie Daten gesendet werden müssen.
An der gegenüberliegenden Kante befindet sich eine 2-polige Schraubklemme für den Fühler: Der rote Draht kommt in +, der blaue Draht in -.
Der mitgelieferte Fühler ist etwa 18 Zoll lang und nur für 0°C bis 80°C ausgelegt, obwohl der MAX6675-Chip selbst Messwerte von 0°C bis 1024°C digitalisieren kann. Um etwas Heißeres als 80°C zu messen, muss stattdessen ein Typ-K-Fühler mit höherer Temperaturfestigkeit eingesetzt werden.
Kurzdaten:
- Betriebsspannung: 3,0V - 5,5V
- Digitalisierter Bereich: 0 - 1024°C (mitgelieferter Fühler auf 0-80°C begrenzt)
- Genauigkeit: ±3°C
- Auflösung: etwa 0,25°C
Schaltplan
Die Logik des Arduino Nano ESP32 arbeitet mit 3,3V, und das MAX6675-Modul funktioniert problemlos zwischen 3,0V und 5,5V. Versorgen Sie VCC daher über den 3V3-Pin der Platine und verbinden Sie GND mit GND. Wählen Sie drei beliebige freie Digitalpins für SCK, CS und SO und klemmen Sie dann den roten und blauen Draht des Fühlers an die Klemmen + und - des Moduls.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Verdrahtungstabelle für MAX6675-Modul und Arduino Nano ESP32
| MAX6675-Modul | Arduino Nano ESP32 |
|---|---|
| VCC | → 3V3 |
| GND | → GND |
| SCK | → D4 |
| CS | → D3 |
| SO | → D2 |
Arduino Nano ESP32 Code
Schnelle Schritte
Um mit dem Arduino Nano ESP32 zu beginnen, folgen Sie diesen Schritten:
- Wenn Sie neu beim Arduino Nano ESP32 sind, lesen Sie das Tutorial wie man die Umgebung für den Arduino Nano ESP32 in der Arduino IDE einrichtet.
- Verdrahten Sie das MAX6675-Modul gemäß der obigen Tabelle und dem Schaltplan mit dem Arduino Nano ESP32.
- Verbinden Sie das Arduino Nano ESP32 Board über ein USB-Kabel mit Ihrem Computer.
- Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das Board Arduino Nano ESP32 und den zugehörigen COM-Port aus.
- Öffnen Sie den Bibliotheksverwalter, indem Sie auf das Symbol Library Manager in der linken Navigationsleiste der Arduino IDE klicken.
- Geben Sie "MAX6675" in das Suchfeld ein und suchen Sie dann nach der MAX6675-Bibliothek von Adafruit.
- Klicken Sie auf die Schaltfläche Install, um die Bibliothek zu installieren.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
- Kompilieren und laden Sie den Code auf das Arduino Nano ESP32 Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Upload klicken.
- Halten Sie die Spitze des Thermoelements an das, was Sie messen möchten - eine Tasse heißes Wasser eignet sich gut für einen ersten Test.
- Öffnen Sie den Seriellen Monitor, um die eingehenden Messwerte zu sehen.
※ Notiz:
Wenn der Serielle Monitor ständig denselben Wert oder etwas offensichtlich Falsches ausgibt, überprüfen Sie die SCK/CS/SO-Verdrahtung anhand der im Sketch verwendeten Pins und stellen Sie sicher, dass die roten und blauen Leitungen des Fühlers tatsächlich in der Klemmleiste festgeklemmt sind und sie nicht nur berühren.
Code-Erklärung
Der Sketch bindet zunächst den Header der MAX6675-Bibliothek ein, die sich um die Low-Level-Kommunikation mit dem Chip kümmert.
Anschließend werden drei Pinnummern für die Verbindung zwischen dem Arduino Nano ESP32 und den Takt-, Chip-Select- und Datenausgangsleitungen des Moduls definiert.
Als Nächstes wird ein MAX6675-Objekt namens thermocouple erstellt, das der Bibliothek mitteilt, welcher Pin welche Rolle übernimmt.
setup() öffnet die serielle Verbindung und wartet kurz, damit sich das Modul einpendeln kann, bevor der Sketch den ersten Messwert anfordert.
In loop() erledigen zwei Bibliotheksfunktionen die ganze Arbeit: thermocouple.readCelsius() und thermocouple.readFahrenheit() lösen jeweils eine neue Wandlung auf dem Chip aus und geben das Ergebnis in der gewünschten Einheit zurück.
Beide Werte werden dann in einer einzigen Zeile im Seriellen Monitor ausgegeben, gefolgt von einer Verzögerung von einer Sekunde - passend zu dem Tempo, in dem der MAX6675 tatsächlich neue Wandlungen liefern kann.
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.