Raspberry Pi - Module Thermocouple MAX6675
Un capteur de température numérique ordinaire ne survivra pas s'il est plongé dans un four de céramique, placé sur la panne d'un fer à souder ou dans l'échappement d'un moteur en marche. Pour ce genre de tâches, les makers utilisent plutôt un thermocouple, associé à une petite puce de conversion appelée MAX6675. Ce tutoriel explique comment en câbler un à un Raspberry Pi et le lire depuis Python. En détail, nous allons apprendre :
- Ce qu'est un thermocouple et pourquoi il peut survivre à des températures extrêmes.
- Comment le module MAX6675 transforme la minuscule tension du thermocouple en une mesure de température.
- Comment câbler le module au connecteur GPIO du Raspberry Pi.
- Comment communiquer avec le MAX6675 depuis Python : comme il n'existe pas de bibliothèque toute faite ici, nous piloterons nous-mêmes son interface à 3 fils par bit-banging.
Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Qu'est-ce Qu'un Thermocouple ?
Un thermocouple est simplement constitué de deux fils de métaux différents, reliés ensemble à une extrémité. Cette jonction, appelée soudure chaude, génère une minuscule tension qui monte et descend avec la température. Comme il ne s'agit que de deux morceaux de fil et de rien d'autre qui puisse fondre ou griller, un thermocouple peut être placé dans des endroits où un capteur normal ne survivrait jamais. La variété la plus courante est la sonde de type K (fils de Chromel et d'Alumel), prévue pour environ -328°F jusqu'à +2300°F.
À Propos du Module Thermocouple MAX6675
La minuscule tension produite par un thermocouple est bien trop faible et bruitée pour qu'un microcontrôleur la lise directement : c'est le rôle du MAX6675. Le module associe la puce MAX6675 à un bornier à vis pour la sonde : une petite carte breakout portant la puce, quelques composants de support et un bornier à 2 broches, ainsi qu'une sonde de type K d'environ 18 pouces (45 cm) qui y est câblée (fil rouge sur la borne "+", fil bleu sur la borne "-"). La sonde elle-même n'est prévue que pour 0-80°C, même si le module peut numériser des mesures sur une plage bien plus large, gardez donc cette limite à l'esprit lorsque vous choisissez où la placer.

Caractéristiques principales :
- Tension de fonctionnement : 3,0V à 5,5V
- Plage mesurable : 0°C à 1024°C (la sonde fournie n'est prévue que jusqu'à 80°C)
- Précision : ±3°C
- Résolution : environ 0,25°C
Le module expose 5 broches :
- Broche VCC : entrée d'alimentation, 3,0V à 5,5V.
- Broche GND : masse.
- Broche SCK : horloge série, pilotée par le Raspberry Pi.
- Broche CS : sélection de puce (chip select), mise à LOW pour demander au module d'envoyer une mesure.
- Broche SO : sortie de données série, c'est la seule ligne de données de la puce ; il n'y a pas de broche d'entrée de données puisque le MAX6675 n'a rien à configurer.
Schéma de Câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Pour simplifier et organiser votre montage de câblage, nous recommandons l'utilisation d'un shield à bornier à vis pour Raspberry Pi. Ce shield assure des connexions plus sûres et mieux gérées, comme illustré ci-dessous :

| Broche MAX6675 | Broche Raspberry Pi |
|---|---|
| VCC | 3.3V (Broche 1) |
| GND | GND (Broche 6) |
| SCK | GPIO25 (Broche 22) |
| CS | GPIO8 (Broche 24) |
| SO | GPIO7 (Broche 26) |
※ Note:
Câblez VCC sur la broche 3,3V du Raspberry Pi, et non sur la broche 5V. Les GPIO du Raspberry Pi ne tolèrent pas le 5V, et le MAX6675 fonctionne très bien en 3,3V, il n'y a donc aucune raison de prendre ce risque.
Code Raspberry Pi
Étapes Rapides
- Assurez-vous que Raspbian ou tout autre système d'exploitation compatible avec le Raspberry Pi est installé sur votre Pi.
- Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
- Assurez-vous que votre Raspberry Pi est connecté à Internet si vous devez installer des bibliothèques.
- Si c'est la première fois que vous utilisez le Raspberry Pi, consultez Installation du logiciel - Raspberry Pi.
- Connectez votre PC au Raspberry Pi via SSH à l'aide du client SSH intégré sous Linux et macOS ou de PuTTY sous Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
- Assurez-vous que la bibliothèque RPi.GPIO est installée. Sinon, installez-la à l'aide de la commande suivante :
Il n'y a pas de bibliothèque de pilote séparée à installer pour le MAX6675 lui-même, car l'interface de la puce est assez simple pour être pilotée directement depuis RPi.GPIO, sans overlay SPI ni paquet tiers.
- Créez un fichier de script Python max6675_thermocouple.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en lançant la commande suivante dans le terminal :
- Laissez la pointe de la sonde à l'air libre pendant quelques secondes, puis plongez-la dans une tasse d'eau chaude.
- Regardez les mesures augmenter dans le terminal.
- Débranchez la sonde du bornier et exécutez à nouveau le script : vous devriez voir le message d'erreur au lieu d'une mesure :
Le script s'exécute dans une boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.
Explication du Code
Le MAX6675 n'a pas de bibliothèque à appeler ici, car toute son interface n'est qu'un registre à décalage cadencé par une horloge ; le script communique donc directement avec lui via les GPIO :
- SCK_PIN, CS_PIN et SO_PIN sont configurées avec GPIO.setup(), les deux premières en sorties puisque le Raspberry Pi les pilote, et SO_PIN en entrée puisque c'est la seule broche par laquelle le module répond.
- read_celsius() met CS_PIN à LOW pour réveiller le module, puis fait basculer SCK_PIN 16 fois. À chaque impulsion, elle lit SO_PIN et décale ce bit dans raw_value, bit de poids fort en premier, ce qui correspond à la façon dont le MAX6675 transmet son mot de 16 bits.
- Une fois les 16 bits reçus, CS_PIN repasse à HIGH pour libérer le module.
- Le bit D2 de ce mot (vérifié avec raw_value & 0x4) est un indicateur d'erreur : s'il est à 1, la sonde n'est pas connectée et la fonction renvoie None au lieu d'une mesure erronée.
- Sinon, les bits D14 à D3 contiennent la valeur réelle sur 12 bits ; décaler raw_value de 3 vers la droite et multiplier par 0,25 la convertit en degrés Celsius, qui sont ensuite également convertis en Fahrenheit pour l'affichage.