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.

Arduino Nano ESP32 MAX6675 Thermoelement-Modul

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×MAX6675 Thermocouple Module
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Ü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.

Pinbelegung des MAX6675 Thermoelement-Moduls
image source: diyables.io

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.

Schaltplan Arduino Nano ESP32 MAX6675 Thermoelement-Modul

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

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-max6675-thermocouple-module */ #include "max6675.h" // Define the Arduino Nano ESP32 pins the MAX6675 module is connected to int SCK_PIN = D4; // Clock (SCK) pin int CS_PIN = D3; // Chip Select (CS) pin int SO_PIN = D2; // Serial Out (SO) pin // Create the thermocouple object using the pins above MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN); void setup() { Serial.begin(9600); delay(500); // give the MAX6675 time to stabilize before the first read } void loop() { // Read the current temperature in both units float temperature_C = thermocouple.readCelsius(); float temperature_F = thermocouple.readFahrenheit(); Serial.print("Thermocouple reading: "); Serial.print(temperature_C); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C / "); Serial.print(temperature_F); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000); // MAX6675 only refreshes its conversion roughly once per second }

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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Library Manager
Type:
All
Topic:
All
MAX6675 library by Adafruit
Arduino library for interfacing with MAX6675 thermocouple amplifier More info
1.1.2
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
Arduino Nano ESP32 on COM15
1
  • 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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Thermocouple reading: 24.75°C / 76.55°F Thermocouple reading: 24.75°C / 76.55°F Thermocouple reading: 26.25°C / 79.25°F Thermocouple reading: 29.50°C / 85.10°F Thermocouple reading: 34.00°C / 93.20°F Thermocouple reading: 38.75°C / 101.75°F Thermocouple reading: 41.25°C / 106.25°F
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

※ 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.

#include "max6675.h"

Anschließend werden drei Pinnummern für die Verbindung zwischen dem Arduino Nano ESP32 und den Takt-, Chip-Select- und Datenausgangsleitungen des Moduls definiert.

int SCK_PIN = D4; // Clock (SCK) pin int CS_PIN = D3; // Chip Select (CS) pin int SO_PIN = D2; // Serial Out (SO) pin

Als Nächstes wird ein MAX6675-Objekt namens thermocouple erstellt, das der Bibliothek mitteilt, welcher Pin welche Rolle übernimmt.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() öffnet die serielle Verbindung und wartet kurz, damit sich das Modul einpendeln kann, bevor der Sketch den ersten Messwert anfordert.

void setup() { Serial.begin(9600); delay(500); }

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.

float temperature_C = thermocouple.readCelsius(); float temperature_F = thermocouple.readFahrenheit();

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.

Serial.print("Thermocouple reading: "); Serial.print(temperature_C); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C / "); Serial.print(temperature_F); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000);

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.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!