MOD-TC : utiliser un thermocouple Type-K avec MicroPython (et le MAX6675)

Bonjour à tous,
Ce week-end, nous avons travaillé sur un nouveau pilote MicroPyhon pour le MAX6675 (interface SPI). Le MAX6675 un amplificateur pour thermocouple Type-K permettant de mesurer une température entre -50°C et +700°C sans aucun problème.

Themocouple
Source: Wikipedia

Le thermocouple (aussi appelé CTE) est composé d'une soudure de deux matériaux différents (dit "point chaud" ou TC) exploitant l'effet Seebeck.

L'effet Seebeck produit une tension électrique (une différence de potentiel) en relation avec la température effective du point chaud.

En mesurant cette différence de potentiel avec des instruments de précision il est possible d'en déduire la température du "point chaud".

 Le thermocouple se présente donc sous la forme d'une gaine en fibre de verre (isolant résistant à la température) terminé par une "perle de métal"
Exemple de thermocouple de Type-K
Pour plus d'information sur le fonctionnement et les types de thermocouple, vous pouvez consulter la page WikiPedia dédié aux thermocouples.
Dans cet article, nous allons uniquement nous attarder sur les thermocouples de Type-K.

Ce qu'il faut savoir c'est que le thermocouple de type-K est polarisé. Si vous le raccordez à l'envers alors la température mesurée diminuera au lieu d'augmenter.


Note: la réalité est plus nuancé mais l'idée principale est là! Les puristes me pardonnerons ce raccourci de vulgarisation.

Le MAX6675
Le MAX6675 est un composant de Maxim Integrated. C'est un amplificateur pour thermocouple de Type-K.
Breakout MAX6675 pour thermocouple type-K
Celui-ci effectue les mesures de potentiel sur le point chaud, applique un filtrage puis échantillonne l'information qui pourra ensuite être transmisse de façon numérique vers un microcontrôleur (exploite une interface de type SPI).

Le MOD-TC
Ne disposant pas de breakout brute pour faire un schéma (si quelqu'un veux m'en faire parvenir un?), je me suis rabattu sur module MOD-TC d'Olimex.
MOD-TC d'Olimex (disponible chez MC Hobby)
Il s'agit toujours d'un MAX6675 monté sur une carte équipée du connecteur UEXT standardisé (wikipedia) qui facilite les raccordement de nombreux périphérique.

Les habitués savent que nous aimons ce connecteur et avons déjà produit une proposition de connecteur UEXT pour Pyboard (voir détails des raccordements sur le dépôt)
connecteur UEXT pour Pyboard
Nous avons également placé un connecteur UEXT sur l'adaptateur PYBOARD-UNO-R3 que nous allons exploiter dans cet exemple... grâce à UEXT, le raccordement est trivial, ce qui permet de se concentrer sur le code.
MOD-TC (MAX6675) + thermocouple type-K sur PYBOARD-UNO-R3
Le bibliothèque MAX6675 nécessaire est disponible sur le GitHub ESP8266-uPy (des pilotes MicroPython multi-plateforme).

Ensuite, il ne reste plus qu'a utiliser le code de démonstration...

from max6675 import MAX6675
from time import sleep

print( "MAX6675 - Lecture du thermocouple")
# Adaptater PYBOARD-UEXT -> cs_pin = "Y5"
# sensor = MAX6675( data_pin = "Y7", clk_pin = "Y6" , cs_pin="Y5" )

# Adaptater PYBOARD-UNO-R3 -> cs_pin = "X8"
sensor = MAX6675( data_pin = "Y7", clk_pin = "Y6" , cs_pin="X8" )


# Attendre que le MAX6675 se stabilise
sleep( 0.500 )

while True:
 print( "C = %s" % sensor.temperature )
 sleep(1)

Et lire les résultats obtenus dans la session REPL :-)

C = 24.25  --> température ambiante
C = 23.75
C = 24.0
C = 23.75
C = 24.0
C = 26.0   --> contact avec doigt
C = 28.25
C = 29.5
C = 30.5   --> retirer doigt
C = 28.75
C = 28.5
C = 27.75
C = 27.0
C = 26.0
C = 25.5
C = 26.0
C = 25.5
C = 24.75  --> Température ambiante
C = 24.5
C = 24.75
C = 24.75
...

Simple n'est-ce pas?
 
Note: Il faudra que je m'attaque au MAX31855, le successeur du MAX6675 quand j'ai un peut de temps.
 
Où acheter

Aucun commentaire