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.

Module thermocouple MAX6675 Arduino

Matériel Requis

1×Arduino Uno R3
1×Câble USB 2.0 type A/B (pour PC USB-A)
1×Câble USB 2.0 type C/B (pour PC USB-C)
1×MAX6675 Thermocouple Module
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

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

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

Brochage du module MAX6675
image source: diyables.io

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.

Schéma de câblage Arduino module thermocouple MAX6675

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

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-max6675-thermocouple-module */ #include "max6675.h" // Define the Arduino pins connected to the MAX6675 module #define SCK_PIN 5 // Clock (SCK) pin #define CS_PIN 4 // Chip Select (CS) pin #define SO_PIN 3 // Serial Out (SO) pin MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN); // create a MAX6675 instance void setup() { Serial.begin(9600); // initialize serial communication delay(500); // give the module time to settle before the first read } void loop() { // read the temperature from the thermocouple in both units float tempC = thermocouple.readCelsius(); float tempF = thermocouple.readFahrenheit(); Serial.print("MAX6675 Temperature: "); Serial.print(tempC); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C - "); Serial.print(tempF); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000); // MAX6675 needs ~220ms per conversion, so 1s keeps reads well-paced }

É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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
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
Arduino Uno on COM15
1
  • 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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
MAX6675 Temperature: 23.00°C - 73.40°F MAX6675 Temperature: 23.25°C - 73.85°F MAX6675 Temperature: 31.50°C - 88.70°F MAX6675 Temperature: 45.75°C - 114.35°F MAX6675 Temperature: 62.00°C - 143.60°F MAX6675 Temperature: 74.25°C - 165.65°F MAX6675 Temperature: 79.50°C - 175.10°F
Ln 11, Col 1
Arduino Uno on COM15
2

※ 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.

#include "max6675.h"

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.

#define SCK_PIN 5 // Clock (SCK) pin #define CS_PIN 4 // Chip Select (CS) pin #define SO_PIN 3 // Serial Out (SO) pin

Un objet MAX6675 nommé thermocouple est ensuite créé, indiquant à la bibliothèque quelle broche remplit quel rôle.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

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.

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

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.

float tempC = thermocouple.readCelsius(); float tempF = thermocouple.readFahrenheit();

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.

Serial.print("MAX6675 Temperature: "); Serial.print(tempC); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C - "); Serial.print(tempF); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000);

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.

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 !