PieM
Senior Member
Bonjour,
Ayant à réaliser un programmateur-régulateur pour four de céramiste, je me suis intéressé à un ampli avec correction de soudure froide destiné aux sondes type K (-200 à 1250°C)
C'est le MAX31855 Doc ici
On le trouve sous une forme plus facile à utiliser http://www.adafruit.com/products/269
Il est interfaçable ainsi sous tension de 5V.
La liaison avec le µC se fait par liaison série SPI.
Les données sont contenues dans un ensemble de 32 bits.
Afin de l'utiliser avec des Picaxes non pourvus de la fonction shiftin, la solution bit-banging est ici retenue.
Compte tenu de l'appli, bien que décelées, les températures négatives (en complément à 2) ne sont pas affichées, pas plus que les décimales.
La lecture se fait sous forme de deux fois 16bits dans b1 b0 et b3 b2 permettant ainsi de récupérer les bits de signe des température de sonde, et ambiante, ainsi que les bits de défauts:
connexion de sonde ouverte
court circuit sonde avec Gnd
court circuit sonde avec Vcc (non utilisé ici)
Ci joint la partie programme concernant la lecture des températures:
Ayant à réaliser un programmateur-régulateur pour four de céramiste, je me suis intéressé à un ampli avec correction de soudure froide destiné aux sondes type K (-200 à 1250°C)
C'est le MAX31855 Doc ici
On le trouve sous une forme plus facile à utiliser http://www.adafruit.com/products/269
Il est interfaçable ainsi sous tension de 5V.
La liaison avec le µC se fait par liaison série SPI.
Les données sont contenues dans un ensemble de 32 bits.
Afin de l'utiliser avec des Picaxes non pourvus de la fonction shiftin, la solution bit-banging est ici retenue.
Compte tenu de l'appli, bien que décelées, les températures négatives (en complément à 2) ne sont pas affichées, pas plus que les décimales.
La lecture se fait sous forme de deux fois 16bits dans b1 b0 et b3 b2 permettant ainsi de récupérer les bits de signe des température de sonde, et ambiante, ainsi que les bits de défauts:
connexion de sonde ouverte
court circuit sonde avec Gnd
court circuit sonde avec Vcc (non utilisé ici)
Ci joint la partie programme concernant la lecture des températures:
Code:
'##############################################
' Ampli thermocouple K Max31855K -
' V01-Utilisation pour T positive
' Détection défaut de sonde
' PieM 20140511
' Afficheur série ELCD204BLB
'##############################################
#picaxe 14M2
#no_data
'*********** symboles **************************
symbol clk = C.0 ' clock
symbol dat = pinC.1 ' data
symbol Cs = C.2 ' chip select
symbol Aff = C.4 ' Out afficheur serie
symbol compt = b10 ' compteur
symbol V_fr = w0 ' var temperature soudure froide
symbol V_ch = w1 ' var temperature thermocouple
symbol T_fr = w2 ' temperature soudure froide
symbol T_ch = w3 ' temperature thermocouple
'******** accueil ********************************
gosub FAC 'effacement afficheur
serout Aff, T4800,($A1,6,0,$A2,"BONJOUR", 0)
serout Aff, T4800,($A1,2,3,$A2,"Soft ThermoK-V01",0)
pause 3000
gosub FAC
'*************************************************
main:
do
Low Cs
V_ch = 0 'Transfert BITS 31 a 16 MSB first
for compt = 0 to 15 ;
V_ch = V_ch * 2 + dat ' shift << 1 et ecriture bit data
pulsout clk,1 ' pulse clock
next compt
V_fr = 0
for compt = 0 to 15 'Transfert BITS 15 a 0 MSB First
V_fr = V_fr * 2 + dat ;
pulsout clk,1
next compt
high Cs
T_fr = V_fr *2/512 ' temp fr en deg C (shifts: << 1 et >> 9 )
T_ch = V_ch *2/32 ' temp ch en deg C (shifts: << 1 et >> 5 )
'detection température négative : pas d'affichage.
if bit15= 1 or bit31= 1then
serout Aff, T4800,($A1,0,0,$A2,"Temp negative! ",0): pause 1000
endif
'affichage des températures
serout Aff, T4800,($A1,0,0,$A2,"Thermosonde: ", #T_ch,223,"C ", 0)
serout Aff, T4800,($A1,0,1,$A2,"T. Ambiante: ", #T_fr,223,"C ", 0)
b0 = b0* 16 ' 4 shifts gauche pour eliminer les MSB.
if b0>0 then ' détection bits de defaut sur sonde
gosub decod_def : endif ' décodage et affichage
loop
'====================================
FAC:
serout Aff, T4800,($A3,$01)
serout Aff, T4800,($A3,$0C)
pause 150
return
'====================================
decod_def:
gosub FAC
if bit4 = 1 then
serout Aff, T4800,($A1,0,0,$A2,"Circuit ouvert! ",0): endif 'circuit ouvert
if bit5 = 1 then
serout Aff, T4800,($A1,0,3,$A2,"Court Circuit Gnd! ",0): endif 'CC avec Gnd
pause 1000
gosub FAC
return