Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

Mesure de température par thermocouple

MAX6675 et picaxe 08M2



Parmi les méthodes de mesures de températures élevées, le thermocouple et la sonde platine (genre pt100) rentent seules en concurrence.
Voici un test du kit ci dessus, mesure par thermocouple basée sur le MAX6675, livré avec un thermocouple type k

Le MAX6675    Ce lien renvoie à la datasheet.

Le système picaxe n'a pas de commande pour tous les composants et pas de librairie. Il faut donc lire la doc.
En voici un résumé (que les pros me corrigent, au cas où...)

Deux broches pour le thermocouple type K : T- et T+ . Sur le module, T- est relié à GRN, comme recommandé.
Le condo entre Vcc et GRN est là aussi.
L'alimentation Vcc et GRN (de 3  à 5 v)
Et trois broches : CS/ (lire CS barre), SCK (serial clock) et SO (serial out)

En fait, le MAX6675 fonctionne selon deux modes distinctes, en fonction du niveau de CS/
CS/ au niveau haut, le CI est en "conversion":  Il lit le thermocouple, la température soudure froide et convertit ces infos en un registre de 16 bits, contenant la valeur de la température du thermocouple.
CS/ au niveau bas, la phase conversion est interrompue et le CI attend les signaux horloge (CSK) pour envoyer, en série (SPI), les 16 bits du registre sur la sortie SO.

Le registre:

Le role des bits 0 et 1 reste obscure...
Le bit 2, normalement à 0, passe à 1 si l'entrée thermocouple est ouverte, alarme possible en cas de rupture.
Les bits 3 à 14, codage de la température:
les bits 3 et 4 codent les décimales (résolution 0,25°C)
les bits 5 à 14, la valeur entière
Le bit 15 est à 0, c'est comme ça...le max6675 ne mesure que de 0 à 1023,75 °C, pas de négatif...

Et compte tenu de tout cela:
 
 

La doc donne une longue liste de possibilités d'erreurs (bruits, soudure froide, parasites, etc);
Par rapport à mon "étalon", il y avait une erreur de + 1 à 2 degrés, que j'ai corrigé par un réglage d'offset (histoire de compliquer).

Quelques remarques sur ce kit:
Le thermocouple à l'air robuste, avec une grosse protection et un embout de vissage pour tôle. La contrepartie est une très grande inertie. On peut préférer pour certaines applications un thermocouple moins massif et plus rapide (1 euro).
Les décimales sont instables, et peu utilisables (dans cet essai), elles sont en option dans le code ci dessous.

Le MAX6675 est maintenant remplacé par le MAX31855, un peu plus cher, mais mesure des température négatives et température interne. Le principe de codage est identique, mais avec un registre de 32 bits.

Le schéma:

 
Le code de l'essai ci dessus:
La commande SPIIN n'est pas disponible sur la série picaxe M2, un sous programme la remplace.
Détection  "PAS DE SONDE" en cas de coupure thermocouple. (modif 23/07/2016)
("PAS DE SONDE" évidemment, sur cette photo, le thermocouple est déconnecté.)
 

;lecture thermocouple par MAX6675 MM 23072016
;registre du MAX6675
;bit  15   14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
;    |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
;     sgn|msb   Valeur t° sur 12 bits, 10   +    |2 decim| th| ID| ST
;ST = State ?
;ID = Ident ?
;th = 0 thermocouple présent ; =1 pas de thermocouple
;sgn est toujours à 0 ..
;la température est entre D3 et D4, 10 bits pour les entiers et 2 pour les décimales
;La broche SO va prendre successivement la valeur de chaque bit de w13,
; scanné poids fort en tête

#picaxe 08M2
#no_data
symbol CLK=C.1        ; pulse horloge
symbol CSB=C.2        ;demande lecture  _____/ ou CSB à 0
symbol SO=pinC.3      ;bit de donnée serial out
symbol cpt=b1         ;compteur
symbol defaut=bit0    ;bit défaut
setfreq M4            ;frequence µC
symbol baud=N2400_4   ;vitesse LCD série
    pause 500
debut:    
    serout C.0,baud, (254,1)
    serout C.0,baud, (254,131,"Temp",1,"rature")
    high csb    ;première conversion    
    Do    
        pause 1000        ;1 mesure par seconde
        low CSB            ;lecture registre    
        gosub  shifin    ;SPIIN
        high CSB        ;nouvelle conversion
        readadc C.4,b10    ;lecture offset    
        defaut=w13//8/4    ;isol bit défaut
        if defaut=1 then erreur    
        w13=w13/8        ;on supprime 3 derniers bits
        w13=w13+b10-127    ;correction offset
        b1=w13//4        ;on isole les  décimales
        b1= b1*25        ;valeur des décimales en 1/4 de degré
        w13=w13/4        ;on supprime les décimales    
        bintoascii w13,b4,b4,b4,b5,b6        
        ;b1=0            ;option pas de décimales
        bintoascii b1,b2,b2,b3        
        serout C.0,baud, (254,196,b4,b5,b6,",",b2,b3," ßC ")    ;ß=alt+0223=°(chinois)                   
    loop
; ***** Shiftin Poids fort en tête, les bits entrent de droite à gauche *****
shifin:    
    w13 = 0
    for cpt = 1 to 16
    w13=w13 * 2 + SO        ;décalage à gauche + SO (0 ou 1)    
    pulsout CLK,1            ;pulse horloge     
    next cpt    
  return
erreur:
    serout C.0,baud, (254,1,254,128,"     ERREUR")    
    serout C.0,baud, (254,194,"PAS DE SONDE")
    pause 1000    
    goto debut



 
 
   



Créé avec Créer un site
Créer un site