dimanche 13 septembre 2020

Utilisation d'un thermocouple avec MAX6675 et Arduino

Nous avons déjà eu de nombreuses occasions de mesurer une température avec une carte Arduino, en utilisant différents capteurs comme le DS18B20, le LM35DZ, le BMP180 ou le DHT22. Si ces capteurs sont tout à fait appropriés pour mesurer la température ambiante (pour une station météorologique, par exemple), ils ne conviennent pas du tout pour mesurer des températures beaucoup plus élevées, comme par exemple celle qui règne à l'intérieur d'un four.

Un thermocouple, par contre, est tout à fait approprié pour cette tâche.  La photographie ci-dessus montre un thermocouple de type K accompagné d'un module MAX6675: ce dispositif peut mesurer des températures frôlant les 500°C.

Un thermocouple est fabriqué au moyen de deux fils conducteurs constitués de métaux différents, qui sont soudés ensemble à une de leurs extrémités. Une faible différence de potentiel est générée lorsque cette soudure se trouve à une température différente des deux autres extrémités (c'est l'effet Seebeck, découvert il y a 200 ans).

Le MAX6675 est un circuit intégré spécialement conçu pour transformer la faible tension issue du thermocouple en un signal numérique de 12 bits exprimant la température avec une résolution de 0,25°C. 


Choix et installation d'une bibliothèque

Le gestionnaire de bibliothèque de l'IDE Arduino nous offre 3 bibliothèques conçues pour l'utilisation d'un thermocouple avec le MAX6675: la bibliothèque d'Adafruitcelle de Yurri Salimov et celle d'Evgeny Kremer. Les trois bibliothèques sont très similaires, elles offrent la possibilité d'afficher la température en degrés Celsius ou Fahrenheit. La bibliothèque de Yurri Salimov est la seule qui offre également l'affichage en Kelvin, ainsi que des méthodes conçues pour lisser la courbe ou afficher la moyenne de plusieurs mesures.

Puisqu'il fallait bien que j'en choisisse une, j'ai opté pour la bibliothèque MAX6675 d'Evgeny Kremer; son concepteur a choisi d'utiliser le bus SPI hardware et il a prévu une protection au cas où l'utilisateur tenterait d'acquérir les mesures à un rythme trop rapide (la fiche technique du MAX6675 mentionne un temps de conversion d'environ 200 ms).

Connexions

Un bornier à vis permet de brancher le thermocouple au module MAX6675: fil rouge à la borne + et fil bleu à la borne -.


5 connecteurs mâles permettent la connexion du module à la carte Arduino Uno:

  • GND : une des broche GND de l'Arduino
  • VCC: sortie 5 V de l'Arduino
  • SCK: broche 13 de l'Arduino Uno* (horloge SPI)
  • CS: broche 10 de l'Arduino (chip select, défini dans notre sketch)
  • SO: broche 12 de l'Arduino Uno* (MISO SPI)

(* Les broches dédiées à la communication SPI peuvent être différentes si vous utilisez un modèle autre que le UNO.)


L'exemple "TempOverSerial", fourni avec la bibliothèque, montre à quel point il est facile d'obtenir la température grâce à la fonction readTempC().



Voici ce qu'indiquait le moniteur série lorsque j'ai exécuté l'exemple  "TempOverSerial". 


J'ai ensuite allumé ma cuisinière et placé l'extrémité de la sonde à l'intérieur du four pendant environ 10 minute, en mesurant la température toutes les 10 secondes:


(Conseil important: l'Arduino et le module MAX6675 demeurent à l'extérieur du four...)

Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire