ESP8266 - MAX6675 Thermoelement-Modul

Die meisten Temperatursensoren, die wir in anderen Tutorials behandeln – DHT11/DHT22, DS18B20, LM35 – erreichen ihre Grenze irgendwo zwischen 100°C und 150°C. Das reicht völlig für Wetterstationen, Brutkästen oder ein Küchengerät, ist aber nutzlos, wenn Sie einen Töpferofen, einen Holzbackofen, einen Metallgussofen oder den Auspuff eines kleinen Motors überwachen möchten – all diese werden weit heißer, als es einer dieser Chips überstehen könnte.

Für solche Aufgaben brauchen Sie eine völlig andere Art von Sensor: ein Thermoelement. Dieses Tutorial zeigt, wie Sie ein MAX6675-Thermoelement-Modul an ein ESP8266-Board anschließen und die Temperatur über seine digitale 3-Draht-Schnittstelle auslesen.

ESP8266 NodeMCU MAX6675 Thermoelement-Modul

Erforderliche Hardware

1×ESP8266 NodeMCU ESP-12F
1×Alternativ: ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternativ: ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternativ: ESP8266 NodeMCU ESP-12F (SMD-form)
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 ESP8266

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.

Wie ein Thermoelement funktioniert

Ein Thermoelement besteht einfach aus zwei verschiedenen Metalldrähten, die an einem Ende miteinander verschweißt sind. Diese Verbindung nennt man Messstelle (heiße Lötstelle), und sobald sie heiß wird, erzeugt sie eine sehr kleine Spannung, die mit der Temperatur steigt und fällt. Das ist ein simpler Trick, aber ein sehr wirkungsvoller – da keine empfindlichen Siliziumbauteile in der Hitze sitzen, übersteht ein Thermoelement Temperaturen, die einen normalen elektronischen Sensor sofort zerstören würden.

Es gibt mehrere Thermoelementtypen, die mit Buchstaben benannt sind (J, K, E, T usw.), je nachdem, welche zwei Metalle miteinander verschweißt sind. Typ K ist mit Abstand der gebräuchlichste. Er besteht aus Chromel- und Alumel-Drähten und deckt einen enormen Bereich von etwa -328°F bis +2300°F ab.

Der Haken dabei: Die Spannung an der Messstelle eines Thermoelements ist winzig – nur wenige Millivolt – und um daraus einen brauchbaren Temperaturwert zu machen, braucht man einen speziellen Chip. Genau das ist die Aufgabe des MAX6675.

Über das MAX6675-Modul

Das MAX6675-Modul, das Sie online kaufen können, ist eine kleine Breakout-Platine rund um den MAX6675-IC, die zusammen mit einem Typ-K-Thermoelementfühler geliefert wird.

Pinbelegung des MAX6675-Moduls

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

Intern tastet der MAX6675 die Spannung des Thermoelements ab, wandelt sie mit einem 12-Bit-Analog-Digital-Wandler um und stellt das Ergebnis über eine einfache 3-Draht-Schnittstelle zum reinen Lesen bereit. Eine MOSI-Leitung gibt es hier nicht, weil der ESP8266 nie Daten an den Chip senden muss – er liest nur:

  • VCC: Versorgungspin, akzeptiert 3,0V bis 5,5V.
  • GND: Masse-Pin.
  • SCK: serieller Takt, wird vom ESP8266 angesteuert, um jeden Messwert herauszuschieben.
  • CS: Chip-Select – wird auf LOW gezogen, sobald der ESP8266 einen Messwert lesen möchte.
  • SO: serieller Datenausgang (die MISO-Leitung des Moduls) – überträgt den 12-Bit-Messwert zurück an den ESP8266.

Am gegenüberliegenden Rand der Platine befindet sich eine kleine Schraubklemme für den Fühler: Der rote Draht wird in den +-Anschluss und der blaue Draht in den --Anschluss geklemmt.

Der Fühler selbst besteht aus etwa 18 Zoll Kabel, das in einer Metallspitze endet. Obwohl der MAX6675-Chip Messwerte bis 1024°C digitalisieren kann, ist der mit dem Modul gelieferte Fühler nur für 0-80°C ausgelegt. Wenn Ihr Projekt höhere Temperaturen messen soll, müssen Sie die MAX6675-Platine mit einem separat erhältlichen Typ-K-Fühler kombinieren, der für höhere Temperaturen ausgelegt ist.

Technische Daten im Überblick:

  • Betriebsspannung: 3,0V - 5,5V
  • Schnittstelle: 3-Draht digital (SCK / CS / SO)
  • Digitalisierter Bereich: 0°C bis 1024°C (mitgelieferter Fühler auf 0-80°C begrenzt)
  • Genauigkeit: ±3°C
  • Auflösung: etwa 0,25°C

Verdrahtungsdiagramm

Das MAX6675-Modul ist ein 3,3V-5V-Bauteil, der ESP8266 selbst ist jedoch ein reines 3,3V-Board – seine GPIOs sind nicht 5V-tolerant. Versorgen Sie den VCC-Pin des Moduls daher über den 3,3V-Pin des ESP8266, niemals über 5V, und verbinden Sie GND mit GND. Wählen Sie dann drei beliebige freie GPIOs für SCK, CS und SO.

Schaltplan ESP8266 NodeMCU MAX6675 Thermoelement-Modul

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Verdrahtungstabelle MAX6675-Modul und ESP8266 NodeMCU

MAX6675-Modul ESP8266 NodeMCU
VCC → 3.3V
GND → GND
SCK → D5
CS → D6
SO → D7

ESP8266-Code

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-max6675-thermocouple-module */ #include "max6675.h" // ESP8266 NodeMCU pins wired to the MAX6675 module #define SCK_PIN D5 // Clock (SCK) pin #define CS_PIN D6 // Chip Select (CS) pin #define SO_PIN D7 // 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() { // Grab a fresh reading in both units and print them together float temperature_C = thermocouple.readCelsius(); float temperature_F = thermocouple.readFahrenheit(); Serial.print("Thermocouple: "); 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

  • Wenn Sie zum ersten Mal mit dem ESP8266 arbeiten, beginnen Sie mit dem Tutorial zur Einrichtung der Umgebung für den ESP8266 in der Arduino IDE.
  • Verbinden Sie das MAX6675-Modul gemäß der Tabelle und dem Schaltplan oben mit dem ESP8266 NodeMCU.
  • Klemmen Sie die + und - Drähte des Thermoelementfühlers in die Klemmleiste des Moduls, falls noch nicht geschehen.
  • Schließen Sie den ESP8266 über ein USB-Kabel an Ihren Computer an.
  • Öffnen Sie die Arduino IDE, wählen Sie den richtigen ESP8266-Board-Eintrag (z. B. NodeMCU 1.0 (ESP-12E Module)) und den passenden COM-Port.
  • Öffnen Sie das Libraries-Panel in der linken Seitenleiste.
  • Suchen Sie nach "MAX6675" und finden Sie die von Adafruit veröffentlichte Bibliothek.
  • Klicken Sie auf Install, um sie zu Ihrer IDE hinzuzufügen.
  • Search for MAX6675 library created by Adafruit and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
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
Nodemcu 1.0 (ESP-12E Module) on COM15
1
  • Fügen Sie den obigen Code in einen neuen Sketch ein.
  • Drücken Sie Upload, um den Sketch auf den ESP8266 zu übertragen.
  • Halten Sie die Spitze des Fühlers an etwas Warmes (eine Tasse Kaffee, Ihre Fingerspitze, einen Haartrockner in sicherem Abstand) und beobachten Sie, wie sich die Werte ändern.
  • Öffnen Sie den Serial Monitor, um die Live-Messwerte zu sehen.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Thermocouple: 24.50°C / 76.10°F Thermocouple: 24.75°C / 76.55°F Thermocouple: 25.50°C / 77.90°F Thermocouple: 27.25°C / 81.05°F Thermocouple: 30.00°C / 86.00°F Thermocouple: 33.50°C / 92.30°F Thermocouple: 35.75°C / 96.35°F
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Notiz:

Kein Messwert, ein eingefrorener Wert oder eine völlig falsche Temperatur lassen sich fast immer auf die Verdrahtung zurückführen: Prüfen Sie, ob SCK/CS/SO mit den Pins im Sketch übereinstimmen, und stellen Sie sicher, dass die + und - Drähte des Fühlers fest in der Klemmleiste sitzen und nicht nur lose anliegen.

Code-Erklärung

Der Sketch bindet die MAX6675-Bibliothek ein, die die gesamte Bit-Banging-Kommunikation mit dem Chip für uns übernimmt.

#include "max6675.h"

Für die ESP8266-Seite der Verbindung werden drei Pins definiert – die Taktleitung, die Chip-Select-Leitung und die vom Modul kommende Datenausgangsleitung.

#define SCK_PIN D5 // Clock (SCK) pin #define CS_PIN D6 // Chip Select (CS) pin #define SO_PIN D7 // Serial Out (SO) pin

Ein einzelnes MAX6675-Objekt namens thermocouple wird erzeugt, das der Bibliothek mitteilt, welcher Pin welche Rolle übernimmt.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() öffnet lediglich die serielle Verbindung und wartet kurz, damit sich das Modul stabilisieren kann, bevor die erste Wandlung angefordert wird.

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

In loop() lösen die beiden Bibliotheksfunktionen readCelsius() und readFahrenheit() jeweils einen neuen Lesevorgang am Chip aus und liefern die Temperatur in der gewünschten Einheit zurück.

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

Beide Werte werden anschließend in einer Zeile im Serial Monitor ausgegeben, gefolgt von einer Pause von einer Sekunde – das passt gut zur internen Wandlungsrate des MAX6675, sodass wir nie schneller abfragen, als der Chip tatsächlich neue Daten liefern kann.

Serial.print("Thermocouple: "); 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!