Arduino - Module Thermocouple MAX6675
Imaginons que vous vouliez vérifier la température réelle de la panne d'un fer à souder, surveiller l'intérieur d'un mini-four pendant la cuisson, ou enregistrer la température des fumées d'un poêle à bois. Les capteurs DS18B20 et de la série DHT présentés dans nos autres tutoriels sont prévus pour 125°C au grand maximum - bien trop peu pour ce genre de tâches, et les pousser au-delà de leur limite ne fera que détruire la puce.
C'est exactement là qu'intervient un thermocouple. Dans ce tutoriel, vous allez câbler un module thermocouple MAX6675 - une carte bon marché et facile à trouver, associée à une sonde thermocouple de type K - à un Arduino, et lire les valeurs de température en direct dans le Moniteur Série.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables STEM V3 (Arduino inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Ce Qui Rend un Thermocouple Différent
Un thermocouple n'est rien de plus que deux fils de métaux différents torsadés ou soudés ensemble à une extrémité. Cette extrémité jointe - la jonction chaude - produit une très faible tension lorsqu'elle est chauffée, et cette tension augmente et diminue avec la température. Comme il n'y a aucun circuit fragile à l'extrémité chaude, juste du simple fil métallique, un thermocouple peut supporter une chaleur qui détruirait instantanément un capteur électronique normal.
Le type le plus courant est le thermocouple de type K, composé d'une paire de fils en Chromel et en Alumel. Il est bon marché, largement disponible et peut mesurer sur une plage énorme - environ de -328°F à +2300°F. Le seul inconvénient est que son signal de sortie n'est que de quelques millivolts, bien trop faible pour être lu directement, il faut donc une puce dédiée pour transformer ce murmure de tension en une vraie lecture de température. Cette puce, c'est le MAX6675.
À Propos du Module MAX6675
Ce que vous achèterez réellement est une petite carte construite autour de la puce MAX6675, vendue avec une sonde thermocouple de type K.
Brochage du Module MAX6675

La carte échantillonne la tension de la sonde, la numérise avec un CAN 12 bits et transmet la lecture à l'Arduino via une simple liaison à 3 fils. Comme l'Arduino n'a jamais besoin que de lire les données de la puce, il n'y a pas de broche MOSI - seulement :
- VCC : broche d'alimentation, fonctionne de 3,0V à 5,5V.
- GND : broche de masse.
- SCK : ligne d'horloge pilotée par l'Arduino pour faire sortir chaque lecture de la puce.
- CS : sélection de puce, maintenue à l'état bas pendant une lecture.
- SO : sortie de données série - c'est la ligne de données en lecture seule du module, qui renvoie la lecture 12 bits à l'Arduino.
Sur le bord opposé de la carte se trouve un petit bornier à 2 broches pour la sonde elle-même : le fil rouge va dans l'emplacement +, le fil bleu dans l'emplacement -.
La sonde fournie mesure environ 45 cm (18 pouces) de câble et n'est prévue que pour 0°C à 80°C, même si la puce MAX6675 derrière elle peut numériser des lectures de 0°C à 1024°C. Si un projet doit mesurer au-delà de 80°C, vous devrez associer cette même carte à une sonde de type K haute température vendue séparément plutôt qu'à celle incluse dans la boîte.
Quelques chiffres supplémentaires utiles :
- Tension de fonctionnement : 3,0V à 5,5V
- Plage mesurable : 0°C à 1024°C (sonde fournie limitée à 80°C)
- Précision : ±3°C
- Résolution : environ 0,25°C
Schéma de Câblage
Connectez la broche VCC du module à la broche 5V de l'Arduino et GND à GND, puis choisissez trois broches numériques libres pour SCK, CS et SO. Enfin, insérez les fils rouge et bleu de la sonde thermocouple dans le bornier + 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 Uno
| Module MAX6675 | Arduino Uno |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SCK | → 5 |
| CS | → 4 |
| SO | → 3 |
Code Arduino
Étapes Rapides
- Câblez le module MAX6675 à l'Arduino Uno en suivant le tableau et le schéma ci-dessus.
- Fixez les fils rouge (+) et bleu (-) de la sonde thermocouple dans le bornier du module, si ce n'est pas déjà fait.
- Connectez l'Arduino Uno à votre ordinateur avec un câble USB.
- Ouvrez Arduino IDE, puis sélectionnez la bonne carte et le bon port.
- Cliquez sur l'icône Libraries dans la barre latérale gauche d'Arduino IDE.
- Recherchez "MAX6675" et trouvez la bibliothèque publiée par Adafruit.
- Cliquez sur le bouton Install pour l'ajouter.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Copiez le code ci-dessus et ouvrez-le dans Arduino IDE.
- Cliquez sur le bouton Téléverser pour envoyer le sketch vers l'Arduino Uno.
- Appuyez la pointe de la sonde contre quelque chose de chaud, ou tenez-la dans votre main.
- Ouvrez le Moniteur Série et observez les lectures qui arrivent.
※ Note:
Si le Moniteur Série affiche une valeur figée ou manifestement fausse, vérifiez que SCK, CS et SO sont câblés exactement sur les broches utilisées dans le sketch, et assurez-vous que les fils + et - de la sonde sont bien fixés dans le bornier et pas simplement posés dedans.
Explication du Code
Le sketch commence par inclure la bibliothèque MAX6675, qui gère la communication bas niveau avec la puce.
Juste après, trois broches sont définies côté Arduino - horloge, sélection de puce et sortie de données série - correspondant aux broches que vous avez câblées dans la section précédente.
Un objet MAX6675 nommé thermocouple est ensuite créé, indiquant à la bibliothèque quelle broche remplit quel rôle.
Dans setup(), il suffit d'ouvrir la connexion série, avec un court délai pour laisser le module se stabiliser avant de lui demander sa première lecture.
Dans loop(), deux fonctions de la bibliothèque font tout le vrai travail : readCelsius() et 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'une pause d'une seconde avant que la boucle ne recommence.
Cette pause d'une seconde est largement plus longue que les quelque 220 millisecondes dont le MAX6675 a besoin pour effectuer une conversion en interne, donc l'Arduino n'attend jamais une lecture qui n'est pas encore prête.