Arduino Nano ESP32 - Module Thermocouple MAX6675
Tous les autres tutoriels sur la température de cette série - le DHT11/DHT22, le DS18B20, le TMP36 - partagent la même faiblesse : aucun d'entre eux ne peut survivre s'il est plongé dans quelque chose de vraiment chaud. Leurs boîtiers en plastique et leurs puces en silicium commencent à lâcher bien en dessous de 150°C, ce qui exclut la torréfaction d'un lot de grains de café, la surveillance d'un four de poterie ou le contrôle de la température du conduit d'un poêle à bois.
La solution est une technologie de mesure complètement différente appelée thermocouple, associée à une petite carte breakout qui convertit sa sortie en un nombre que l'Arduino Nano ESP32 peut lire. Ce tutoriel couvre le câblage et la programmation du module thermocouple MAX6675 avec l'Arduino Nano ESP32.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Module Thermocouple MAX6675
Ce qui est vendu comme « un module MAX6675 » est en réalité deux éléments réunis : une petite carte breakout construite autour de la puce MAX6675, et une sonde thermocouple de type K qui y est raccordée.

Qu'est-ce qu'un Thermocouple ?
Au-delà du marketing, un thermocouple n'est rien de plus que deux fils de métaux différents soudés ensemble à une extrémité, appelée la jonction chaude. Chauffez cette jonction et une petite tension apparaît entre les fils, augmentant ou diminuant selon les variations de température. Il n'y a ni puce, ni silicium, rien qui puisse fondre - c'est exactement pour cela qu'un thermocouple peut être placé dans des endroits qui détruiraient instantanément un capteur ordinaire.
Les thermocouples existent en plusieurs variantes (J, K, E, T et autres), nommées d'après la paire de métaux utilisée. Le type K - fabriqué en Chromel et Alumel - est celui que vous rencontrerez le plus souvent, et il couvre confortablement une plage d'environ -328°F à +2300°F.
Seul, cependant, ce signal de l'ordre du millivolt est difficile à exploiter. Il doit être amplifié, linéarisé et converti en une véritable valeur de température avant qu'un Arduino Nano ESP32 puisse en faire quoi que ce soit d'utile - et ce travail de conversion revient au MAX6675.
Brochage du Module MAX6675
La carte breakout échantillonne en permanence la minuscule tension de la sonde, la fait passer par un convertisseur analogique-numérique 12 bits et transmet la mesure finale à l'Arduino Nano ESP32 via une liaison à 3 fils en lecture seule :
- VCC : entrée d'alimentation, accepte de 3,0V à 5,5V.
- GND : référence de masse.
- SCK : horloge série, pilotée par l'Arduino Nano ESP32 pour faire sortir chaque mesure.
- CS : sélection de puce - l'Arduino Nano ESP32 la met à LOW chaque fois qu'il veut prendre une mesure.
- SO : sortie de données série, la ligne MISO du module, qui renvoie le résultat sur 12 bits à l'Arduino Nano ESP32. Il n'y a aucune broche MOSI, car la puce n'a jamais besoin de recevoir de données.
Sur le bord opposé se trouve un bornier à vis à 2 broches pour la sonde : le fil rouge se fixe sur +, le fil bleu sur -.
La sonde fournie avec le module mesure environ 18 pouces de long et n'est prévue que pour 0°C à 80°C, même si la puce MAX6675 elle-même peut numériser des mesures de 0°C jusqu'à 1024°C. Pour mesurer quelque chose de plus chaud que 80°C, il faut la remplacer par une sonde de type K prévue pour des températures plus élevées.
Caractéristiques en bref :
- Tension de fonctionnement : 3,0V - 5,5V
- Plage numérisée : 0 - 1024°C (sonde fournie limitée à 0-80°C)
- Précision : ±3°C
- Résolution : environ 0,25°C
Schéma de Câblage
La logique de l'Arduino Nano ESP32 fonctionne en 3,3V, et le module MAX6675 s'accommode de toute tension entre 3,0V et 5,5V ; alimentez donc VCC depuis la broche 3V3 de la carte et reliez GND à GND. Choisissez trois broches numériques libres quelconques pour SCK, CS et SO, puis fixez les fils rouge et bleu de la sonde sur les bornes + et - du module.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Tableau de câblage du module MAX6675 et de l'Arduino Nano ESP32
| Module MAX6675 | Arduino Nano ESP32 |
|---|---|
| VCC | → 3V3 |
| GND | → GND |
| SCK | → D4 |
| CS | → D3 |
| SO | → D2 |
Code Arduino Nano ESP32
Étapes Rapides
Pour démarrer avec l'Arduino Nano ESP32, suivez ces étapes :
- Si vous débutez avec l'Arduino Nano ESP32, consultez le tutoriel sur Installation du logiciel Arduino Nano ESP32..
- Câblez le module MAX6675 à l'Arduino Nano ESP32 selon le tableau et le schéma ci-dessus.
- Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'Arduino IDE sur votre ordinateur.
- Sélectionnez la carte Arduino Nano ESP32 et son port COM correspondant.
- Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Library Manager dans la barre de navigation gauche de l'Arduino IDE
- Tapez "MAX6675" dans la zone de recherche, puis cherchez la bibliothèque MAX6675 d'Adafruit.
- Cliquez sur le bouton Install pour installer la bibliothèque.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
- Compilez et téléversez le code sur la carte Arduino Nano ESP32 en cliquant sur le bouton Téléverser dans l'Arduino IDE.
- Mettez la pointe du thermocouple en contact avec ce que vous voulez mesurer - une tasse d'eau chaude convient bien pour un premier test.
- Ouvrez le Moniteur Série pour voir les mesures défiler.
※ Note:
Si le Moniteur Série affiche toujours la même valeur ou quelque chose de manifestement faux, vérifiez le câblage SCK/CS/SO par rapport aux broches utilisées dans le sketch, et assurez-vous que les fils rouge et bleu de la sonde sont bien serrés dans le bornier et pas simplement en contact avec celui-ci.
Explication du Code
Le sketch commence par inclure l'en-tête de la bibliothèque MAX6675, qui gère la communication bas niveau avec la puce.
Trois numéros de broches sont ensuite définis pour la connexion entre l'Arduino Nano ESP32 et les lignes d'horloge, de sélection de puce et de sortie de données du module.
Un objet MAX6675 nommé thermocouple est ensuite créé, indiquant à la bibliothèque quelle broche joue quel rôle.
setup() ouvre la connexion série et marque une courte pause, laissant au module le temps de se stabiliser avant que le sketch ne lui demande sa première mesure.
Dans loop(), deux fonctions de la bibliothèque font tout le travail : thermocouple.readCelsius() et thermocouple.readFahrenheit() déclenchent chacune une nouvelle conversion sur la puce et renvoient le résultat dans l'unité demandée.
Les deux valeurs sont ensuite affichées sur une seule ligne du Moniteur Série, suivies d'un délai d'une seconde, ce qui correspond au rythme auquel le MAX6675 peut réellement produire de nouvelles conversions.