ESP32 - Module Thermocouple MAX6675

La plupart des capteurs de température que nous présentons dans d'autres tutoriels - le DS18B20, le DHT22, le LM35 et autres - plafonnent aux alentours de 100-150°C. C'est largement suffisant pour une pièce, un réfrigérateur ou un potager, mais cela ne sert à rien si vous devez savoir quelle température atteint réellement un four industriel, la panne d'un fer à souder ou l'intérieur d'un four à pizza. Pour ce genre de tâches, les amateurs se tournent plutôt vers un thermocouple, associé à une petite puce de numérisation appelée MAX6675.

Dans ce tutoriel, nous allons connecter un ESP32 à une carte MAX6675 et à une sonde thermocouple de type K, puis afficher la température sur le Moniteur Série en degrés Celsius et Fahrenheit.

Module thermocouple MAX6675 avec ESP32

Qu'est-ce qu'un Thermocouple Exactement ?

Un thermocouple est simplement constitué de deux fils de métaux différents soudés ensemble à une extrémité, formant ce qu'on appelle la jonction chaude. Lorsque cette jonction chauffe (ou refroidit), une très faible tension apparaît entre les fils, et cette tension augmente et diminue avec la température. Comme il ne s'agit que de deux morceaux de fil plutôt que d'un capteur en silicium fragile, un thermocouple peut survivre - et mesurer - dans des endroits qui détruiraient instantanément un capteur ordinaire. La version de type K, fabriquée à partir de fils de Chromel et d'Alumel, est de loin la plus courante et peut supporter environ -328°F à +2300°F.

À Propos du Module MAX6675

À lui seul, le signal de l'ordre du millivolt fourni par un thermocouple est trop faible et trop bruité pour qu'un microcontrôleur puisse le lire directement. Le module MAX6675 résout ce problème : il s'agit d'une petite carte construite autour du circuit intégré MAX6675, vendue avec une sonde de type K déjà câblée.

Brochage du Module MAX6675

Brochage du module MAX6675
image source: diyables.io

La puce MAX6675 de la carte échantillonne en continu le signal de la sonde, effectue en interne la compensation de soudure froide, et transmet à l'ESP32 une mesure de température sur 12 bits prête à l'emploi via un simple bus à 3 fils. Ses broches sont :

  • VCC : entrée d'alimentation, de 3,0V à 5,5V.
  • GND : masse.
  • SCK : entrée d'horloge série, pilotée par l'ESP32.
  • CS : sélection de la puce - l'ESP32 la met à l'état bas pendant la lecture d'un échantillon.
  • SO : sortie de données série uniquement (il n'y a pas de broche d'entrée de données ; le module ne reçoit jamais de commandes, il ne fait qu'émettre).

Un petit bornier à vis situé sur le bord opposé de la carte permet de brancher la sonde, marqué + et - ; le fil rouge de la sonde va sur + et le fil bleu sur -.

Pour compléter les caractéristiques : la carte elle-même peut numériser des températures de 0°C jusqu'à 1024°C, offre une précision d'environ ±3°C et une résolution d'environ 0,25°C - bien que la sonde fournie, décrite ci-après, soit le véritable facteur limitant.

La Sonde de Type K Fournie

La sonde livrée avec le module est un câble fin à pointe en acier inoxydable, d'environ 18 pouces (45 cm) de long, et elle n'est prévue que pour une plage de 0°C à 80°C - suffisant pour une tasse de café ou un terrarium, mais il vous faudra une sonde prévue pour des températures plus élevées avant de la diriger vers un four à céramique. Repérez les fils rouge (positif) et bleu (négatif) à l'extrémité qui se branche sur le bornier de la carte.

Schéma de Câblage

Alimentez le module à partir de l'ESP32 : VCC sur 5V (3,3V fonctionne aussi) et GND sur GND. Les trois broches restantes - SCK, CS et SO - vont chacune sur n'importe quelle broche GPIO libre de l'ESP32, car la bibliothèque les pilote par simple bit-banging plutôt que par le périphérique SPI matériel. Enfin, insérez les fils rouge et bleu de la sonde thermocouple dans les bornes + et - du module.

Schéma de câblage du module thermocouple MAX6675 avec ESP32

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

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..

Tableau de câblage entre le module MAX6675 et l'ESP32

Module MAX6675 ESP32
VCC → 5V
GND → GND
SCK → GPIO19
CS → GPIO18
SO → GPIO5

Code ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-max6675-thermocouple-module */ #include "max6675.h" const int SCK_PIN = 19; // ESP32's pin GPIO19 connected to SCK pin of the MAX6675 module const int CS_PIN = 18; // ESP32's pin GPIO18 connected to CS pin of the MAX6675 module const int SO_PIN = 5; // ESP32's pin GPIO5 connected to SO pin of the MAX6675 module // create a MAX6675 thermocouple object using the pins above MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN); void setup() { Serial.begin(9600); delay(500); // give the MAX6675 module time to power up before the first read } void loop() { // read the temperature and print it to the Serial Monitor Serial.print("Temperature: "); Serial.print(thermocouple.readCelsius()); Serial.print("C / "); Serial.print(thermocouple.readFahrenheit()); Serial.println("F"); delay(1000); // MAX6675 updates at most once every ~220ms, so pace the reads }

Étapes Rapides

  • Vous débutez avec l'ESP32 ? Commencez par Installation du logiciel ESP32..
  • Câblez le module MAX6675 et la sonde thermocouple à l'ESP32 comme indiqué sur le schéma ci-dessus.
  • Branchez l'ESP32 à votre ordinateur avec un câble USB.
  • Ouvrez Arduino IDE.
  • Dans le menu Outils, choisissez la carte ESP32 correspondante (par exemple ESP32 Dev Module) et le bon port COM.
  • Ouvrez le panneau Bibliothèques depuis la barre d'icônes à gauche.
  • Tapez "MAX6675" dans le champ de recherche et trouvez la bibliothèque publiée par Adafruit.
  • Appuyez sur Installer.
  • Search for MAX6675 library created by Adafruit and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev 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
ESP32 Dev Module on COM15
1
  • Collez le code ci-dessus dans l'IDE.
  • Cliquez sur Téléverser pour flasher le sketch sur l'ESP32.
  • Réchauffez la pointe du thermocouple (tenez-la, soufflez dessus, plongez-la dans de l'eau tiède) ou laissez-la refroidir.
  • Ouvrez le Moniteur Série pour voir les mesures défiler.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Temperature: 23.50C / 74.30F Temperature: 23.75C / 74.75F Temperature: 24.25C / 75.65F Temperature: 26.00C / 78.80F Temperature: 29.50C / 85.10F Temperature: 34.75C / 94.55F Temperature: 38.25C / 100.85F
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Note:

Vous voyez une mesure figée ou manifestement fausse ? Vérifiez d'abord le câblage SCK/CS/SO, puis assurez-vous que les fils rouge et bleu du thermocouple sont bien fixés dans les bornes à vis du module - un fil desserré est la cause la plus fréquente d'une mesure bloquée ou incohérente.

Explication du Code

Le sketch commence par inclure l'en-tête de la bibliothèque MAX6675, qui donne au sketch ESP32 accès à la classe MAX6675.

#include "max6675.h"

Trois constantes indiquent à quelles broches GPIO de l'ESP32 sont câblées les broches SCK, CS et SO du module.

const int SCK_PIN = 19; // clock pin const int CS_PIN = 18; // chip select pin const int SO_PIN = 5; // serial data out pin

Un unique objet MAX6675, thermocouple, est ensuite construit avec ces trois broches - c'est lui que le reste du sketch appellera pour effectuer une mesure.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() doit seulement initialiser le port série afin que nous ayons un endroit où afficher les résultats, avec un court délai pour laisser le MAX6675 terminer sa mise sous tension avant la première lecture.

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

Dans loop(), les deux appels de bibliothèque importants sont :

  • Thermocouple.readCelsius() : récupère la dernière mesure en degrés Celsius.
  • Thermocouple.readFahrenheit() : récupère la même mesure convertie en Fahrenheit.
Serial.print("Temperature: "); Serial.print(thermocouple.readCelsius()); Serial.print("C / "); Serial.print(thermocouple.readFahrenheit()); Serial.println("F");

Un delay() d'une seconde termine la boucle afin que les mesures défilent à un rythme confortable au lieu d'inonder le Moniteur Série.

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 !