Raspberry Pi Pico - Module Thermocouple MAX6675

Tous les autres capteurs de température présentés sur ce site - le DS18B20, le DHT11, le LM35 - cessent d'être utiles bien avant le point d'ébullition de l'eau, et aucun d'entre eux ne survivrait s'il était fixé sur un fer à souder ou plongé dans de la cire fondue. Dès qu'un projet doit mesurer au-delà de quelques centaines de degrés, la solution habituelle est une sonde thermocouple lue via une puce de numérisation MAX6675. Il n'y a pas ici de gestionnaire de bibliothèques comme sur Arduino, donc ce tutoriel lit le MAX6675 comme on le fait réellement en MicroPython : en basculant directement ses broches d'horloge, de sélection de puce et de données depuis Python.

Dans ce guide, nous aborderons :

Raspberry Pi Pico et module thermocouple MAX6675

Matériel Requis

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×MAX6675 Thermocouple Module
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

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.

Qu'est-ce qu'un Thermocouple ?

Un thermocouple, ce sont simplement deux fils de métaux différents soudés ensemble à une extrémité, appelée jonction chaude. Chauffez (ou refroidissez) cette jonction et une petite tension apparaît entre les fils, une tension qui monte ou descend avec la température - c'est pourquoi un thermocouple résiste sans problème à des conditions qui détruiraient instantanément un capteur ordinaire. Le type le plus courant, le type K, est fabriqué en fils de Chromel et d'Alumel et est prévu pour environ -328°F à +2300°F.

À Propos du Module Thermocouple MAX6675

Un thermocouple seul ne fournit que quelques millivolts, une tension bien trop faible et bruitée pour que le Pico puisse la lire directement. Le module MAX6675 résout ce problème en associant la puce MAX6675, montée sur une petite carte, à une sonde de type K déjà fixée, de sorte que l'ensemble fournit une mesure de température propre et prête à l'emploi.

Module thermocouple MAX6675
Tension de fonctionnement 3,0V à 5,5V
Plage de mesure 0°C à 1024°C
Précision ±3°C
Résolution ~0,25°C
Longueur de la sonde ~18 pouces (45 cm)
Plage de la sonde 0°C à 80°C

Brochage

Brochage du module thermocouple MAX6675

La carte comporte quatre broches plus un bornier à vis à 2 broches où se fixe la sonde :

  • Broche VCC : entrée d'alimentation, accepte de 3,0V à 5,5V.
  • Broche GND : masse.
  • Broche SCK : entrée d'horloge série - le Pico envoie des impulsions sur cette broche pour faire sortir une mesure de la puce.
  • Broche CS : sélection de puce - maintenue à LOW pendant une lecture, et à HIGH le reste du temps.
  • Broche SO : sortie de données série - la seule ligne de données du module, car il ne reçoit jamais de commandes du Pico, il ne fait que renvoyer des mesures.
  • Bornier + / - : l'endroit où se branche la sonde ; son fil rouge va sur +, le fil bleu sur -.

La sonde fournie avec le module mesure environ 18 pouces de long, et même si la puce elle-même peut numériser des températures jusqu'à 1024°C, le fil de cette sonde n'est prévu que pour 0°C à 80°C - prévoyez une sonde supportant des températures plus élevées si vous comptez mesurer quelque chose de plus chaud qu'une casserole d'eau bouillante.

Schéma de Câblage

Alimentez le module depuis la ligne 3,3V du Pico plutôt que depuis le 5V, car les GPIO du Pico fonctionnent uniquement en 3,3V et ne tolèrent pas le 5V : VCC va sur 3V3(OUT) et GND sur n'importe quelle broche GND. Les trois lignes de signal - SCK, CS et SO - peuvent être reliées à n'importe quels GPIO libres, car le code ci-dessous les pilote manuellement en bit-banging au lieu d'utiliser le périphérique SPI matériel du Pico. Terminez en insérant les fils rouge et bleu de la sonde dans les bornes à vis + et - du module.

Schéma de câblage du Raspberry Pi Pico et du module thermocouple MAX6675

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

Câblage Raspberry Pi Pico - Module MAX6675

Module MAX6675 Raspberry Pi Pico
VCC 3V3(OUT)
GND GND
SCK GP5
CS GP4
SO GP3

Code Raspberry Pi Pico

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-max6675-thermocouple-module */ from machine import Pin import time # Define the pins connected to the MAX6675 module sck = Pin(5, Pin.OUT) # The Raspberry Pi Pico pin GP5 connected to the SCK pin of the MAX6675 module cs = Pin(4, Pin.OUT) # The Raspberry Pi Pico pin GP4 connected to the CS pin of the MAX6675 module so = Pin(3, Pin.IN) # The Raspberry Pi Pico pin GP3 connected to the SO pin of the MAX6675 module cs.value(1) # Keep CS high (idle) until we are ready to take a reading sck.value(0) # Keep SCK low (idle) until we are ready to take a reading # Manually bit-bang the MAX6675's 3-wire protocol. # There is no MicroPython library for this chip, but the protocol # is simple enough to reproduce with plain GPIO pulses. def read_celsius(): raw_word = 0 cs.value(0) # Select the chip (active low) to start a transfer time.sleep_us(1) for i in range(16): # The MAX6675 always clocks out 16 bits, MSB first sck.value(1) time.sleep_us(1) raw_word = (raw_word << 1) | so.value() # Shift in the bit sitting on SO sck.value(0) time.sleep_us(1) cs.value(1) # Deselect the chip, the transfer is complete if raw_word & 0x4: # Bit D2 flags an open/disconnected thermocouple return None raw_word >>= 3 # Discard the 3 low status bits, keep the 12-bit reading return raw_word * 0.25 # Each count of the 12-bit word equals 0.25 degrees C # Main loop: take one reading per second and print it to the Shell while True: celsius = read_celsius() if celsius is None: print('No thermocouple detected - check the probe connection') else: fahrenheit = celsius * 9 / 5 + 32 print('Temperature: {:.2f} C / {:.2f} F'.format(celsius, fahrenheit)) time.sleep(1)

Étapes Rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le micrologiciel MicroPython est installé sur votre Raspberry Pi Pico.
  • Si c'est la première fois que vous utilisez un Raspberry Pico, consultez le tutoriel Raspberry Pi Pico - Premiers pas. pour des instructions détaillées.
  • Câblez le module MAX6675 et la sonde thermocouple au Raspberry Pi Pico en suivant le schéma ci-dessus.
  • Connectez le Raspberry Pi Pico à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en allant dans Tools Options.
  • Dans l'onglet Interpreter, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le bon port est sélectionné. L'IDE Thonny devrait détecter automatiquement le port, mais vous devrez peut-être le sélectionner manuellement (par exemple, COM3 sous Windows ou /dev/ttyACM0 sous Linux).
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico en procédant comme suit :
    • Cliquez sur le bouton Enregistrer, ou utilisez les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, vous verrez deux sections : This computer et Raspberry Pi Pico. Sélectionnez Raspberry Pi Pico
    • Enregistrez le fichier sous le nom main.py
  • Cliquez sur le bouton vert Run (ou appuyez sur F5) pour exécuter le script. Le script s'exécutera.
  • Réchauffez l'extrémité du thermocouple avec vos doigts, une tasse d'eau chaude ou un briquet tenu brièvement à proximité, puis laissez-la refroidir.
  • Consultez le message dans le Shell en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Temperature: 24.50 C / 76.10 F Temperature: 24.75 C / 76.55 F Temperature: 26.00 C / 78.80 F Temperature: 31.25 C / 88.25 F Temperature: 45.50 C / 113.90 F Temperature: 62.75 C / 144.95 F Temperature: 71.00 C / 159.80 F Temperature: 58.00 C / 136.40 F Temperature: 40.25 C / 104.45 F
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

Si la sonde est débranchée ou mal câblée, le Shell affiche "No thermocouple detected - check the probe connection" au lieu d'une température - si vous voyez ce message, réinsérez les fils rouge et bleu dans le bornier à vis.

Si vous nommez votre script main.py et que vous l'enregistrez dans le répertoire racine du Raspberry Pi Pico, il s'exécutera automatiquement à chaque mise sous tension ou réinitialisation du Pico. C'est utile pour les applications autonomes qui doivent démarrer immédiatement à la mise sous tension. Si vous donnez à votre script un autre nom que main.py, vous devrez l'exécuter manuellement depuis le Shell de Thonny.

Explication du Code

Consultez les explications dans les commentaires du code source ! En bref : le script met CS à l'état bas, envoie seize impulsions sur SCK tout en décalant chaque bit présent sur SO dans un mot de 16 bits, puis remet CS à l'état haut. Les 3 bits de poids faible de ce mot sont des bits d'état (le bit 2 à 1 signifie que la sonde est déconnectée), donc le code les élimine par décalage et multiplie le reste par 0,25 pour obtenir une température en Celsius, qui est ensuite convertie en Fahrenheit pour l'affichage.

Vidéo

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