ESP8266 - Module Thermocouple MAX6675

La plupart des capteurs de température que nous présentons dans d'autres tutoriels - le DHT11/DHT22, le DS18B20, le LM35 - plafonnent quelque part entre 100°C et 150°C. C'est largement suffisant pour des stations météo, des incubateurs ou un gadget de cuisine, mais c'est inutile si vous devez surveiller un four de poterie, un four à bois, un fourneau de fonderie ou l'échappement d'un petit moteur, qui fonctionnent tous à des températures bien plus élevées que ce que ces puces peuvent supporter.

Pour ce genre de tâches, il vous faut un type de capteur complètement différent : un thermocouple. Ce tutoriel explique comment câbler un module thermocouple MAX6675 à une carte ESP8266 et lire la température via son interface numérique à 3 fils.

Module thermocouple MAX6675 ESP8266 NodeMCU

Matériel Requis

1×ESP8266 NodeMCU ESP-12F
1×Alternativement: ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternativement: ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternativement: ESP8266 NodeMCU ESP-12F (SMD-form)
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×MAX6675 Thermocouple Module
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP8266

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Comment Fonctionne un Thermocouple

Un thermocouple est simplement constitué de deux fils de métaux différents soudés ensemble à une extrémité. Cette jonction est appelée la soudure chaude, et lorsqu'elle chauffe, elle génère une très faible tension qui monte et descend avec la température. C'est une astuce rudimentaire, mais très efficace - puisqu'aucun composant en silicium fragile ne se trouve dans la chaleur, un thermocouple peut supporter des températures qui détruiraient instantanément un capteur électronique ordinaire.

Il existe plusieurs types de thermocouples, désignés par des lettres (J, K, E, T, etc.) selon les deux métaux soudés ensemble. Le type K est de loin le plus courant ; il est fabriqué à partir de fils de Chromel et d'Alumel et couvre une plage énorme d'environ -328°F à +2300°F.

Le problème est que la tension produite par la jonction d'un thermocouple est minuscule - seulement quelques millivolts - et la convertir en une mesure de température exploitable nécessite une puce dédiée. C'est le rôle du MAX6675.

À Propos du Module MAX6675

Le module MAX6675 que vous trouverez en vente en ligne est une petite carte breakout construite autour du circuit intégré MAX6675, fournie avec une sonde thermocouple de type K.

Brochage du Module MAX6675

Brochage du module thermocouple MAX6675
image source: diyables.io

En interne, le MAX6675 échantillonne la tension du thermocouple, la fait passer par un convertisseur analogique-numérique 12 bits et rend le résultat disponible via une simple interface en lecture seule à 3 fils. Il n'y a pas de ligne MOSI ici, car l'ESP8266 n'a jamais besoin d'envoyer de données à la puce - il ne fait que lire :

  • VCC : broche d'alimentation, accepte de 3,0V à 5,5V.
  • GND : broche de masse.
  • SCK : horloge série, pilotée par l'ESP8266 pour extraire chaque mesure.
  • CS : sélection de puce (chip select) - mise à l'état bas chaque fois que l'ESP8266 veut effectuer une mesure.
  • SO : sortie de données série (c'est la ligne MISO du module) - renvoie la mesure 12 bits à l'ESP8266.

Sur le bord opposé de la carte se trouve un petit bornier à vis pour la sonde : le fil rouge se serre dans l'emplacement + et le fil bleu dans l'emplacement -.

La sonde elle-même est constituée d'environ 18 pouces (45 cm) de câble se terminant par une pointe métallique, et bien que la puce MAX6675 puisse numériser des mesures jusqu'à 1024°C, la sonde fournie avec le module n'est prévue que pour 0-80°C. Si votre projet doit mesurer des températures plus élevées, vous devrez associer la carte MAX6675 à une sonde de type K prévue pour des températures plus élevées, vendue séparément.

Caractéristiques rapides :

  • Tension de fonctionnement : 3,0V - 5,5V
  • Interface : numérique à 3 fils (SCK / CS / SO)
  • Plage numérisée : 0°C à 1024°C (sonde fournie limitée à 0-80°C)
  • Précision : ±3°C
  • Résolution : environ 0,25°C

Schéma de Câblage

Le module MAX6675 fonctionne entre 3,3V et 5V, mais l'ESP8266 lui-même est strictement une carte 3,3V - ses GPIO ne tolèrent pas le 5V. Alimentez donc la broche VCC du module depuis la broche 3,3V de l'ESP8266, jamais depuis le 5V, et reliez GND à GND. Choisissez ensuite trois GPIO libres pour SCK, CS et SO.

Schéma de câblage ESP8266 NodeMCU module thermocouple MAX6675

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..

Tableau de câblage du module MAX6675 et de l'ESP8266 NodeMCU

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

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 }

Étapes Rapides

  • Si c'est la première fois que vous travaillez avec l'ESP8266, commencez par le tutoriel de Installation du logiciel ESP8266..
  • Câblez le module MAX6675 à l'ESP8266 NodeMCU en suivant le tableau et le schéma ci-dessus.
  • Fixez les fils + et - de la sonde thermocouple dans le bornier du module si ce n'est pas déjà fait.
  • Branchez l'ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE, choisissez la bonne carte ESP8266 (par ex. NodeMCU 1.0 (ESP-12E Module)) et le port COM correspondant.
  • Ouvrez le panneau Bibliothèques depuis la barre latérale gauche.
  • Recherchez "MAX6675" et trouvez la bibliothèque publiée par Adafruit.
  • Cliquez sur Installer pour l'ajouter à votre IDE.
  • 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
  • Collez le code ci-dessus dans un nouveau sketch.
  • Appuyez sur Téléverser pour flasher le sketch sur l'ESP8266.
  • Tenez la pointe de la sonde contre quelque chose de chaud (une tasse de café, le bout de votre doigt, un sèche-cheveux à une distance sûre) et regardez les valeurs changer.
  • Ouvrez le Moniteur Série pour observer les mesures en direct.
∞
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

※ Note:

L'absence de mesure, une valeur figée ou une température complètement erronée proviennent presque toujours du câblage : vérifiez que SCK/CS/SO correspondent bien aux broches du sketch, et assurez-vous que les fils + et - de la sonde sont bien serrés dans le bornier et pas simplement posés contre celui-ci.

Explication du Code

Le sketch inclut la bibliothèque MAX6675, qui gère pour nous toute la communication bit-bang avec la puce.

#include "max6675.h"

Trois broches sont définies côté ESP8266 - la ligne d'horloge, la ligne de sélection de puce et la ligne de sortie de données provenant du module.

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

Un unique objet MAX6675 nommé thermocouple est créé, indiquant à la bibliothèque quel rôle joue chaque broche.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() ouvre simplement la connexion série et fait une courte pause, laissant au module le temps de se stabiliser avant de demander la première conversion.

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

Dans loop(), les deux fonctions de la bibliothèque readCelsius() et readFahrenheit() déclenchent chacune une nouvelle lecture de la puce et renvoient la température dans l'unité demandée.

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

Les deux valeurs sont ensuite affichées sur une même ligne dans le Moniteur Série, suivies d'une pause d'une seconde - ce qui correspond confortablement à la vitesse de conversion interne du MAX6675, de sorte que nous n'interrogeons jamais la puce plus vite qu'elle ne peut réellement produire de nouvelles données.

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);

Vidéo

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !