Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Thermocouple MAX6675
Bonjour tout le forum,
Pour finir mon projet sur Impression de PCB, avec plastifieuse, géré par microcontrôleur ICI , il me fallait un capteur de tempèrature, j'en avait essayé plusieurs, mais j''arrivais pas à les mettre au point .
Je me suis alors tourné vers le Max6675, et là surprisse impeccable, les températures étaient correctes, et linéaires.
J'en profite pour vous le présenté dans la même occasion, sur comment le mettre en fonction.
Module Max6675
MaX6675 au prix de 2,10 euros, voici son datasheet
Caractéristique du Max6675
- Mesure de température 0°C à +1024°C
- Résolution 0.25 °C.
- Alimentation 3 volts à 5 volts
- Capable de détecter si sa sonde est débranché
- Protocole de communication mode SPI
- Obligation d'utiliser une sonde de type K
Il fallait aussi la sonde de type K qui va avec, au prix de 0,40 euro
Je me suis aperçu à la réception de cette sonde que le fils était coupé, pour la réparer j'ai torsadé les deux fils l'un sur l'autre, et sa fonction très bien comme ça.
Pour visionner la tempèrature j'ai utilisé l'écran Nokia 5110, voici son datasheet
Pour gérer tout ça je me suis servi d'un microcontrôleur Pic18F26K22, voici son datasheet
Mise en fonction du Max6675
Sur ce module on n'a rien à envoyer, il faut juste lire les informations, pour faire cela, j'ai utilise le mode SPI bit bang, ce qui le rends compatible pour la plupart des microcontrôleurs Pic18Fxxxx, Pic16Fxxxx, Pic12Fxxxx
Schéma
Vidéo de test du Max6675
https://youtu.be/3zWBqQH5rco
Le code
Le code ASM a été écrit avec jens file Editor 3.95
Fichier code : Max6675(Code).zip
Fichier à mettre dans le Pic : Max6675(Hex).zip
A+
Pour finir mon projet sur Impression de PCB, avec plastifieuse, géré par microcontrôleur ICI , il me fallait un capteur de tempèrature, j'en avait essayé plusieurs, mais j''arrivais pas à les mettre au point .
Je me suis alors tourné vers le Max6675, et là surprisse impeccable, les températures étaient correctes, et linéaires.
J'en profite pour vous le présenté dans la même occasion, sur comment le mettre en fonction.
Module Max6675
MaX6675 au prix de 2,10 euros, voici son datasheet
Caractéristique du Max6675
- Mesure de température 0°C à +1024°C
- Résolution 0.25 °C.
- Alimentation 3 volts à 5 volts
- Capable de détecter si sa sonde est débranché
- Protocole de communication mode SPI
- Obligation d'utiliser une sonde de type K
Il fallait aussi la sonde de type K qui va avec, au prix de 0,40 euro
Je me suis aperçu à la réception de cette sonde que le fils était coupé, pour la réparer j'ai torsadé les deux fils l'un sur l'autre, et sa fonction très bien comme ça.
Pour visionner la tempèrature j'ai utilisé l'écran Nokia 5110, voici son datasheet
Pour gérer tout ça je me suis servi d'un microcontrôleur Pic18F26K22, voici son datasheet
Mise en fonction du Max6675
Sur ce module on n'a rien à envoyer, il faut juste lire les informations, pour faire cela, j'ai utilise le mode SPI bit bang, ce qui le rends compatible pour la plupart des microcontrôleurs Pic18Fxxxx, Pic16Fxxxx, Pic12Fxxxx
Code : Tout sélectionner
#DEFINE sck LATA,6 ; RA6 ==> horloge de synchronisation du Max6675
#DEFINE so PORTA,7 ; RA7 ==> renvois les informations du Max6675
#DEFINE cs LATC,0 ; RC0 ==> activer ou désactiver la transmission du Max6675
Schéma
Vidéo de test du Max6675
https://youtu.be/3zWBqQH5rco
Le code
Le code ASM a été écrit avec jens file Editor 3.95
Code : Tout sélectionner
;***********************************************************************************************
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
radix dec ; par defaut en mode décimal
list p=18f26K22 ; processeur utilisé
#include <p18f26K22.inc> ; Définitions des constantes
;***********************************************************************************************
; CONFIG11H
CONFIG FOSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
; CONFIG2L
CONFIG PWRTEN = OFF
CONFIG BOREN = OFF
CONFIG BORV = 190
; CONFIG2H
CONFIG WDTEN = OFF
CONFIG WDTPS = 1
; CONFIG3H
CONFIG CCP2MX = PORTC1
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTC6
CONFIG HFOFST = OFF
CONFIG T3CMX = PORTC0
CONFIG P2BMX = PORTC0
CONFIG MCLRE = INTMCLR
; CONFIG4L
CONFIG STVREN = OFF
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
; CONFIG5L
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
; CONFIG5H
CONFIG CPB = OFF
CONFIG CPD = OFF
; CONFIG6L
CONFIG EBTR0 = OFF
; CONFIG6H
CONFIG EBTR1 = OFF
; CONFIG7L
CONFIG EBTR2 = OFF
; CONFIG7H
CONFIG EBTR3 = OFF
;*************************************** assignations *****************************************
#DEFINE rst LATA,5 ; RA5 ==> reset de l'écran Nokia
#DEFINE clk LATA,4 ; RA4 ==> horloge de synchronisation de l'écran Nokia
#DEFINE din LATA,3 ; RA3 ==> entrée des données de l'écran Nokia
#DEFINE dc LATA,2 ; RA2 ==> sélection du mode de l'écan Nokia : commande = 0, donnée = 1
#DEFINE ce LATA,1 ; RA1 ==> activer ou désactiver la transmission de l'écran Nokia
#DEFINE sck LATA,6 ; RA6 ==> horloge de synchronisation du Max6675
#DEFINE so PORTA,7 ; RA7 ==> renvois les informations du Max6675
#DEFINE cs LATC,0 ; RC0 ==> activer ou désactiver la transmission du Max6675
;
#DEFINE led1 LATC,4 ; RC4 ==> led verte, témoin de mise en fonction de l'appareil
#DEFINE buzzer LATC,7 ; RC7 ==> alarme pour prévenir fils de débranché
;********************************* "déclaration des variables" *********************************
CBLOCK H'20' ; bank0
loop1 :1
loop2 :1
loop3 :1
loop4 :1
loop5 :1
loop6 :1
loop7 :1
loop8 :1
loop9 :1
bits :1
étalonner :1
position :1
passage :1
durée :1 ; utilisé pour macro : tempo
lecture :1 ; utilisé pour macro : print
lettre :1
phrase :1
virgule :1
vide :1 ; utilisé pour macro : espace
res8 :1
res16 :1
unité :1
dizaine :1
centaine :1
millieme :1
dix_millieme :1
temps :2
tmps :1
adresse_low :1
adresse_hig :1
donner :2
ENDC
;********************************** "déclaration des macros" ***********************************
;************************* "Macro pour se positionner dans un tableau" *************************
tableau MACRO adresse
movlw UPPER(adresse) ;
movwf TBLPTRU ;
movlw HIGH(adresse) ;
movwf TBLPTRH ;
movlw LOW(adresse) ;
movwf TBLPTRL
ENDM
;************************** Macro pour écrit dans l'eeprom ************************************
ecriture_eeprom MACRO valeur1,valeur2,valeur3,valeur4
local nombre2,good_bye2
movlw valeur4
btfss WREG,0 ; valeur4 = 0 que pour les nombres
bra nombre2 ; valeur4 = 1 que pour les variables
movf valeur1,W ; adresse du poids fort
movwf adresse_hig ;
movf valeur2,W ; adresse du poids faible
movwf adresse_low ;
movf valeur3,W ; donnée à écrire dans l'eeprom
movwf donner ;
bra good_bye2
nombre2
movlw valeur1 ;
movwf adresse_hig ;
movlw valeur2 ;
movwf adresse_low ;
movlw valeur3 ;
movwf donner ;
good_bye2
call eeprom_ecriture
ENDM
;*************************** Macro pour lire dans l'eeprom ************************************
lecture_eeprom MACRO valeur1,valeur2,valeur3
local nombre3,good_bye3
movlw valeur3
btfss WREG,0 ; valeur3 = 0 que pour les nombres
bra nombre3 ; valeur3 = 1 que pour les variables
movf valeur1,W ; adresse du poids fort
movwf adresse_hig ;
movf valeur2,W ; adresse du poids faible
movwf adresse_low ;
bra good_bye3
nombre3
movlw valeur1
movwf adresse_hig
movlw valeur2
movwf adresse_low
good_bye3
call eeprom_lecture
ENDM
;************************** "Macro pour se positionner sur l'écran" ****************************
locate MACRO hauteur,largeur
movlw hauteur ; hauteur de l'écran 0 à 5
movwf loop8 ;
movlw largeur ; largeur de l'écran 0 à 84
movwf loop9 ;
rcall position_nokia ;
ENDM
;************************** "Macro pour afficher le texte sur l'écran" ****************************
print MACRO longueur,emplacement
movlw longueur ; longueur de la donnée
movwf phrase ;
;
movlw emplacement ;
movwf lecture ; emplacement du départ de la donnée à lire
rcall affiche_nokia ;
ENDM
;********************* "Macro pour effacer les caractères par un espace " **********************
espace MACRO valeur1, valeur2
local nombre6,good_bye6
movlw valeur2
btfss WREG,0 ; valeur2 = 0 que pour les nombres
bra nombre6 ; valeur2 = 1 que pour les variables
movf valeur1,W ;
movwf vide ; nombre d'espace souhaité
bra good_bye6 ;
nombre6
movlw valeur1 ;
movwf vide ; nombre d'espace souhaité
good_bye6
call supprime_lettre
ENDM
;** "Macro pour faire une durée de temps, qui peut aller de 10 ms minimum à 2550 ms maximum "**
tempo MACRO valeur1, valeur2
local nombre7,good_bye7
movlw valeur2
btfss WREG,0 ; valeur2 = 0 que pour les nombres
bra nombre7 ; valeur2 = 1 que pour les variables
movf valeur1,W ;
movwf durée ; durée du temps, qui dépend de la valeur1
bra good_bye7 ;
nombre7
movlw valeur1 ;
movwf durée ; durée du temps, qui dépend de la valeur1
good_bye7
call _10ms
ENDM
;******************************* "adresse de depart après reset" *******************************
ORG H'0'
bra debut
ORG H'8'
retfie
ORG H'18'
retfie
debut
;***************** "configuration de la bank sélectionné du microcontrôleur" *******************
movlw B'00000000'
movwf BSR
;******************** "configuration de l'oscillateur du microcontrôleur" **********************
movlw B'01110100' ; oscillateur à 16 Mhz, fréquence stable si PLL (16 * 4)= 64 Mhz
; movlw B'01100100' ; oscillateur à 8 Mhz, fréquence stable si PLL (8 * 4) = 32 Mhz
; movlw B'01010010' ; oscillateur à 4 Mhz, fréquence stable
; movlw B'01000010' ; oscillateur à 2 Mhz, fréquence stable
; movlw B'00110010' ; oscillateur à 1 Mhz, fréquence stable
movwf OSCCON
movlw B'00000000' ;
movwf OSCCON2 ;
;**************************** configuration du registre OSCTUNE ********************************
movlw B'00000000' ; bit 6 à 1 : PLL * 4
movwf OSCTUNE ; bit 6 à 0 : PLL désactivé
;*************************** configuration du registre ANSELA **********************************
movlw B'00000001' ; en mode numérique : 2(RA0)
movwf ANSELA ; en mode E/S : 3(RA1), 4(RA2), 5(RA3), 7(RA5)
;**************************** configuration du registre ANSELB *********************************
movlw B'00000000' ; en mode numérique :
movwf ANSELB ; en mode E/S : 21(RB0), 22(RB1) 23(RB2), 24(RB3), 25(RB4), 26(RB5)
;**************************** configuration du registre ANSELC *********************************
movlw B'00000000' ; en mode numérique :
movwf ANSELC ; en mode E/S : 13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)
;*************************** configuration du registre ADCON0 **********************************
movlw B'00000000' ; b0 = ADON mise en service le convertiseur 0 = arrêt : 1 = marche
movwf ADCON0 ; b1 = GO/DONE indique la fin de la conversion analogique, et permet de lancer la conversion
; b2 à b6 = réglage de la sélection du canal
;*************************** configuration du registre ADCON1 **********************************
movlw B'00000000' ; b2 à b3 = 00 : sélection de la tension de reférence, Vref+ = Vss
movwf ADCON1 ; b0 à b1 = 00 : sélection de la tension de reférence, Vref- = Vdd
;*************************** configuration du registre ADCON2 **********************************
movlw B'00110110' ; b0 à b2 = FOSC/64
movwf ADCON2 ; b3 à b5 = 16 TAG
;
; b7 = détermine si le résultat de la conversion
; sera justifié à droite = 1 ou à gauche = 0
;************************* configuration du registre CM1CON0 & CM2CON0 *************************
movlw B'00000000' ; comparateur 1 off
movwf CM1CON0
movlw B'00000000' ; comparateur 2 off
movwf CM2CON0
;*********************** "configuration du pwm du microncontrôleur" ****************************
movlw D'255' ; réglage du "débordement" de TMR2
movwf PR2 ; PR2 D'255' donc fréquence à 1950 Hz avec prédiviseur à 4
movlw B'00000101' ; "prédiviseur à 4" bit zéro à 1, bit un à 0
movwf T2CON ; "timer on", bit deux à 1 (mise en route du timer2. 0 : arrêt. 1 : marche)
; "postdiviseur à 1" bit trois à 0, bit quatre à 0, bit cinq à 0, bit six à 0
; dans registre de contrôle
movlw B'00001100' ; "1100" 4 bits mode pwm
movwf CCP1CON ; "00" 2 bits pour variation du rapport cyclique(RC2)
movwf CCP2CON ; "00" 2 bits pour variation du rapport cyclique(RC1)
;***************** configuration des registres TRISA & TRISB & TRISC & TRISE *******************
movlw B'10000001' ; RA0(2), RA1(3), RA2(4), RA3(5), RA4(6), RA5(7), RA6(10), RA7(9)
movwf TRISA ;
movlw B'11111111' ; RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
movwf TRISB ;
movlw B'00000000' ; RC0(11), RC1(12), RC2(13), RC3(14), RC4(15), RC5(16), RC6(17), RC7(18)
movwf TRISC ;
movlw B'00001000' ; RE3(1)
movwf TRISE ;
; VSS(8), VSS(19), VDD(20)
;**************************** configuration du registre INTCON2 ********************************
movlw B'00000000' ; B7 = 0 résistances en service
movwf INTCON2 ;
;**************************** configuration du registre WPUB ***********************************
movlw B'11111111' ; tirage de résistance sur : RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
movwf WPUB ; pas de tirage de résistance sur :
;**************************** configuration du registre INTCON *********************************
movlw B'00000000' ;
movwf INTCON ; interruption hors service
;************************************ départ du programme **************************************
clrf CCPR1L ; sortie du pwm(RC2)
clrf CCPR2L ; sortie du pwm(RC1)
clrf PORTA
clrf PORTB
clrf PORTC
clrf LATA
clrf LATB
clrf LATC
;**************************** " témoin visuel de mise en fonction" *****************************
movlw D'2' ; pour 2 clignotements
movwf loop5
clignote
bsf led1
tempo 100,0 ; macro : temps, chiffre(0) ou varible(1)
; 1000 ms temps de visionnage
bcf led1
tempo 100,0 ; macro : temps, chiffre(0) ou varible(1)
; 1000 ms temps de visionnage
decfsz loop5,F
bra clignote
;***********************************************************************************************
rcall ini_nokia ; initiation de l'écran Nokia
;***********************************************************************************************
bsf cs ; transmission hors fonction
;***********************************************************************************************
movlw D'1' ; 1 lettre à lire par défaut
movwf phrase ;
movlw D'255' ; désactiver la virgule
movwf virgule ;
;***********************************************************************************************
rcall cls_nokia ; efface l'écran
;***********************************************************************************************
locate 0,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,0 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "**************"
locate 1,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,14 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " Test Max6675 "
locate 2,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,28 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "Sur Fantas-Pic"
locate 3,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,42 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " Temps-x "
locate 4,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,56 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " 100% ASM "
locate 5,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,0 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "**************"
tempo 255,0 ; macro : temps, chiffre(0) ou varible(1)
; 2550 ms temps de visionnage
;***********************************************************************************************
rcall cls_nokia ; efface l'écran
;***********************************************************************************************
locate 0,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,0 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "**************"
locate 1,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,14 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " Test Max6675 "
locate 2,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,0 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "**************"
;***********************************************************************************************
affiche_max6675
locate 3,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,98 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " "
locate 4,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,98 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " "
locate 5,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,98 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " "
locate 4,10 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 11,112 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : "Température"
;***********************************************************************************************
clrf donner+0 ;
clrf donner+1 ;
clrf res8 ;
clrf res16 ;
bcf STATUS,C ; mettre carry à zérro
;***********************************************************************************************
movlw D'16' ; 16 bits + carry
movwf bits
bcf cs ; transmision en fonction
rotation
bsf sck ; état haut de l'horloge
btfsc so ; lecture de la broche
bsf donner+1,7 ; inscrire les données
nop
nop
nop
bcf sck ; état bas de l'horloge
rlcf donner+0,F ; sauver la donnée
rlcf donner+1,F ;
decfsz bits,F
bra rotation
bsf cs ; transmision hors fonction
rlcf donner+0,F ; inclure carry
rlcf donner+1,F ;
;***********************************************************************************************
btfsc donner+0,2 ; contrôler si le thermocouple est débranché
bra alarme ;
;***********************************************************************************************
btfsc donner+0,5 ; réorganisation de l'ordre des bits
bsf res8,0
btfsc donner+0,6 ;
bsf res8,1
btfsc donner+0,7 ;
bsf res8,2
btfsc donner+1,0 ;
bsf res8,3
btfsc donner+1,1 ;
bsf res8,4
btfsc donner+1,2 ;
bsf res8,5
btfsc donner+1,3 ;
bsf res8,6
btfsc donner+1,4 ;
bsf res8,7
btfsc donner+1,5 ;
bsf res16,0
btfsc donner+1,6 ;
bsf res16,1
;***********************************************************************************************
rcall conversion ; conversion 16 bits vers ascii
;***********************************************************************************************
locate 5,25 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
;***********************************************************************************************
rcall supprime_zero ; suprimer les zéros qui sont à gauches et affiche le nombre
;***********************************************************************************************
movlw D'46' ; affiche le caractère du code ascii 46
rcall lettre_nokia ; qui représente la virgule
movlw B'00011000' ; récuperer les chiffres après la virgule
andwf donner+0,W ;
rrncf WREG,W ; rotation sans carry pour réajustement des valeurs
rrncf WREG,W ;
rrncf WREG,W ;
mullw D'25' ; multiplier par 25(qui représente la résolution)
movf PRODL,W ; récupérer le résultat das W
movwf res8 ;
clrf res16 ; ne sera pas utilisé
rcall conversion ; conversion 16 bits vers ascii
rcall supprime_zero ; suprimer les zéros qui sont à gauches et affiche le nombre
;***********************************************************************************************
movlw D'248' ; affiche le caractère du code ascii 248
rcall lettre_nokia ; qui représente le degrés
movlw D'67' ; affiche le caractère du code ascii 67
rcall lettre_nokia ; qui représente le C majuscule
movlw D'3' ;
rcall supprime_lettre ; évite d'effacer l'écran
bsf led1 ; témoin de passage
tempo 100,0 ; macro : temps, chiffre(0) ou varible(1)
; 1000 ms temps de visionnage
bcf led1 ; témoin de passage
tempo 100,0 ; macro : temps, chiffre(0) ou varible(1)
; 1000 ms temps de visionnage
bra affiche_max6675
;***********************************************************************************************
alarme
locate 3,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,70 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " Erreur sonde "
locate 4,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 14,84 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
; affiche : " d‚branch‚ "
bsf buzzer
tempo 120,0 ; macro : temps, chiffre(0) ou varible(1)
; 1200 ms temps pour entendre l'arlarme
bcf buzzer
tempo 120,0 ; macro : temps, chiffre(0) ou varible(1)
; 1200 ms temps pour entendre l'arlarme
bra affiche_max6675
;***********************************************************************************************
numériser
bsf ADCON0,ADON ; on lance l’acquisition (charge du condensateur)
nop
nop ; tempo pour charge du condensateur
nop
bsf ADCON0,GO ; lancer la conversion A/D
btfsc ADCON0,GO ; si le bit GO est à 1 on va à la ligne 1
bra $-D'2' ; conversion n'est pas terminer
bcf ADCON0,ADON ; fin de conversion, éteindre convertisseur
movf ADRESH,W ; sauver la valeur qui vient d'être numérisé
movwf res8 ; dans la variable "res8"
return
;******************* "initialisation de l'écran Nokia en mode SPI bit bang" ********************
ini_nokia
bsf ce ; arrêt de transmition des données
nop
bcf rst ;
nop
bsf rst ; remise à zéro
;-----------------------------------------------------------------------------------------------
movlw 0x21 ; commandes étendues du lcd (0x21)
movwf loop8
call command_nokia
;-----------------------------------------------------------------------------------------------
movlw 0xB1 ; réglage du contraste du lcd (0xB1) à (0xBF)
movwf loop8 ;
call command_nokia
;-----------------------------------------------------------------------------------------------
movlw 0x20 ; Valider la modification (0x20)
movwf loop8
call command_nokia
;-----------------------------------------------------------------------------------------------
movlw 0x0C ; vidéo en mode normal 0x0C ou 0x0D pour mode négatif
movwf loop8
rcall command_nokia
;-----------------------------------------------------------------------------------------------
movlw 0x01 ; effacer l'écran
movwf loop8
rcall command_nokia
;-----------------------------------------------------------------------------------------------
return
;************************ "affiche la lettre ou le texte sélectionné" **************************
affiche_nokia
tableau info ; macro : qui permets de se positionner à l'adresse demandé
bcf STATUS,C ; pour additionner, mettre carry à zéro pour
movf lecture,W ;
addwf TBLPTRL,F ;
btfsc STATUS,C ; si retenu ajouter à l'adresse high
incf TBLPTRH,F ;
incf lecture,F ; lecture pour le prochain passage
tblrd* ; effectue la lecture de l’octet pointé par TBLPTR
movf TABLAT,W ; transfére le caractère récupéredans TABLAT vers W
lettre_nokia
movwf lettre ; transfére le caractère récupére dans "lettre"
mullw D'5' ; multiplier W par 5, résultat dans PRODH PRODL
movlw D'5' ; 5 passages pour créer un caractère
movwf passage
tableau ascii ; macro : qui permets de se positionner à l'adresse demandé
bcf STATUS,C ; pour additionner, mettre carry à zéro pour
; ne pas avoir d'erreur sur l'addition
movf PRODL,W ;
addwf TBLPTRL,F ; se positionner à l'adresse low
btfsc STATUS,C ; si retenu ajouter à l'adresse high
incf TBLPTRH,F ;
movf PRODH,W ;
addwf TBLPTRH,F ; se positionner à l'adresse high
ret2
tblrd*+ ; effectue la lecture, et ensuite incrémente TBLPTR
movff TABLAT,loop8 ; transfére la donnée récupére dans "loop8"
rcall donner_nokia ;
decfsz passage,F ;
bra ret2 ;
movlw B'00000000' ; avance d'un pixel sur la largeur(correspond à barre espace)
movwf loop8 ;
rcall donner_nokia ;
decfsz phrase,F ; "phrase" est la longueur du texte
bra affiche_nokia ;
incf phrase,F ; préparation au cas ou il faudrait lire un caractére
return
;*********************"efface l'écran & position le curseur au début" **************************
cls_nokia
movlw D'2' ; pour effacement complet de l'écran, soit 504 octets
movwf loop1
movlw D'248'
movwf loop2
locate 0,0 ; macro de positionnement hauteur, largeur
cls
movlw B'00000000'
movwf loop8
rcall donner_nokia ; effacer les données existantes
decfsz loop2,F
bra cls
decfsz loop1,F
bra cls
locate 0,0 ; macro de positionnement hauteur, largeur
return
;*******************************"Ecran Nokia 5110, 504 octets" *********************************
pixel_nokia
movlw D'2' ; pour la lecture complet de l'écran, soit 504 octets
movwf loop1 ;
movlw D'248' ;
movwf loop2
lire_graphique
tblrd*+ ; effectue la lecture, et ensuite incrémente TBLPTR
movff TABLAT,loop8 ; transfére la donnée récupére dans "loop8"
rcall donner_nokia ;
decfsz loop2,F
bra lire_graphique
decfsz loop1,F
bra lire_graphique
return
;***********************************************************************************************
command_nokia
bcf dc ; DC = 0 en mode commande
bra envoi_nokia
;***********************************************************************************************
donner_nokia
bsf dc ; DC = 1 en mode donnée
bra envoi_nokia ;
;***********************************************************************************************
envoi_nokia
bcf ce ; marche
movlw D'8' ; envoie de 8 bits
movwf bits
ev1_nokia
btfss loop8,7 ; 1 lecture sur le bit 7
bra ev2_nokia
bsf din ; envoie 1
bsf clk ;
bcf clk ;
bra ev3_nokia
ev2_nokia
bcf din ; envoie 0
bsf clk ;
bcf clk ;
ev3_nokia
rlncf loop8,F ; rotation des bits à gauche sans carry
decfsz bits,F
bra ev1_nokia
bsf ce ; arrét
return
;************************************ "position de y et x" *************************************
position_nokia
bsf loop8,6 ; y = 0, à 5 = B'01000 Y2 Y1 Y0' hauteur de l'écran
rcall command_nokia ;
bsf loop9,7 ; x = 0, à 83 = B'1 X6 X5 X4 X3 X2 X1 X0' largeur de l'écran
;
movf loop9,W ;
movwf loop8 ;
rcall command_nokia ;
return
;************************************** "convertion" *******************************************
conversion
clrf unité
clrf dizaine
clrf centaine
clrf millieme
clrf dix_millieme
; "16 bits"
b16_7
btfss res16,7
goto b16_6
movlw D'3' ; 32768
addwf dix_millieme,F
movlw D'2' ; 2768
addwf millieme,F
movlw D'7' ; 768
addwf centaine,F
movlw D'6' ; 68
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b16_6
btfss res16,6
goto b16_5
movlw D'1' ; 16384
addwf dix_millieme,F
movlw D'6' ; 6384
addwf millieme,F
movlw D'3' ; 384
addwf centaine,F
movlw D'8' ; 84
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b16_5
btfss res16,5
goto b16_4
movlw D'8' ; 8192
addwf millieme,F
movlw D'1' ; 192
addwf centaine,F
movlw D'9' ; 92
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b16_4
btfss res16,4
goto b16_3
movlw D'4' ; 4096
addwf millieme,F
movlw D'0' ; 096
addwf centaine,F
movlw D'9' ; 96
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b16_3
btfss res16,3
goto b16_2
movlw D'2' ; 2048
addwf millieme,F
movlw D'0' ; 048
addwf centaine,F
movlw D'4' ; 48
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b16_2
btfss res16,2
goto b16_1
movlw D'1' ; 1024
addwf millieme,F
movlw D'0' ; 024
addwf centaine,F
movlw D'2' ; 24
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b16_1
btfss res16,1
goto b16_0
movlw D'5' ; 512
addwf centaine,F
movlw D'1' ; 12
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b16_0
btfss res16,0
goto b8_7
movlw D'2' ; 256
addwf centaine,F
movlw D'5' ; 56
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
;***********************************************************************************************
; "8 bits"
b8_7
btfss res8,7
goto b8_6
movlw D'1' ; 128
addwf centaine,F
movlw D'2' ; 28
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b8_6
btfss res8,6
goto b8_5
movlw D'6' ; 64
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b8_5
btfss res8,5
goto b8_4
movlw D'3' ; 32
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b8_4
btfss res8,4
goto b8_3
movlw D'1' ; 16
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b8_3
movlw B'00001111' ; 8, 4, 2, 1
andwf res8,W
addwf unité,F
;-----------------------------------------------------------------------------------------------
movlw D'5' ; 5 variables à traiter
movwf loop6
lfsr FSR0,unité ; pointer à l'adresse de la variable "unité"
assembler
movf INDF0,W ; récupérer la valeur dans W
movwf tmps ; transmettre dans la variable "tmps"
incf FSR0L,F ; variable suivante
movf INDF0,W ; récupérer la valeur dans W
movwf temps ; transmettre dans la variable "temps"
;***********************************************************************************************
tr0
movf tmps,W
sublw D'10' ; retir 10 de W
btfsc STATUS,Z ;
goto tr1 ;
btfss STATUS,C ;
goto tr1 ;
goto tr2 ;
tr1
movlw D'10' ;
subwf tmps,F ;
incf temps,F ;
bra tr0
;***********************************************************************************************
tr2
movf temps,W
movwf INDF0 ; nouvelle valeur à cette adresse
decf FSR0L,F
movf tmps,W
movwf INDF0 ; nouvelle valeur à cette adresse
movlw D'48' ; convertir en format ASCII
addwf INDF0,F
incf FSR0L,F ; variable suivante
decfsz loop6,F ;
goto assembler
return
;************************** "ne pas suprimer les zéros qui à gauche" ***************************
suprime_pas_zero
movlw D'5' ; 5 variables à traiter
movwf loop6
lfsr FSR0,dix_millieme ;
bra imprime_ecran
;*************************** "suprime les zéros qui sont à gauches" ****************************
supprime_zero
movlw D'5' ; 5 variables à traiter
movwf loop6
lfsr FSR0,dix_millieme ; pointer à l'adresse de la variable "dix_millieme"
cherche_zero
movf INDF0,W
xorlw D'48'
btfss STATUS,Z
goto imprime_ecran
decf FSR0L,F
decfsz loop6,F
goto cherche_zero
movlw '0' ; tout est à zéro
rcall lettre_nokia
return
; "écrit les données sur l'écran"
imprime_ecran
movf loop6,W
xorwf virgule,W ; emplacement de la virgule si activé
btfss STATUS,Z ;
goto imprime_2
movlw '.' ; on mets la virgule
rcall lettre_nokia ; affiche à l'écran
imprime_2
movf INDF0,W
rcall lettre_nokia
decf FSR0L,F
decfsz loop6,F
goto imprime_ecran
return
;************** "ajouter un espace, surtout utilisé pour effacer des caractères" ***************
supprime_lettre
movwf loop6 ; représente le nombre de caractére à effacé
ajout_espace
movlw ' '
rcall lettre_nokia ; espace d'éffacement, et évite un effacement d'écran
decfsz loop6,F
bra ajout_espace
return
;**************** "pause de 10 millisecondes pour 18F avec horloge de 16 Mhz" ******************
_10ms
movlw D'241'
movwf loop1
movlw D'52'
movwf loop2
decfsz loop1
bra $-D'2'
decfsz loop2
bra $-D'6'
decfsz durée,F
bra _10ms
return
;****************************** "pour écrit dans l'eeprom" *************************************
eeprom_ecriture
movf adresse_hig,W ; adresse du poid fort
movwf EEADRH ;
movf adresse_low,W ; adresse du poid faible
movwf EEADR ;
movf donner,W ;
movwf EEDATA ; écriture de la donnée
bcf EECON1,EEPGD ; préparation à l'autorisation
bcf EECON1,CFGS ; access eeprom
bsf EECON1,WREN ; Enable writes
bcf INTCON,GIE ; couper les interruptions
btfsc INTCON,GIE ; contrôl si les interruptions sont bien coupés
bra $-D'2' ; remonte à la ligne 2 jusqu'a coupures des interruptions
movlw H'55' ; séquence spécifique (c'est comme ça, il faut le savoir)
movwf EECON2 ; séquence spécifique
movlw H'AA' ; séquence spécifique
movwf EECON2 ; séquence spécifique
bsf EECON1,WR ; lance une opération d'écriture
btfsc EECON1,WR ; on attend que l'operation d'ecriture soit finie (de l'ordre de la ms
bra $-D'2' ; remonte à la ligne 2 jusqu'a fin d'écriture
bcf EECON1, WREN ; interdiction de l'écriture
return
;******************************** "pour lire dans l'eeprom" ************************************
eeprom_lecture
movf adresse_hig,W ; adresse du poid fort
movwf EEADRH ;
movf adresse_low,W ; adresse du poid faible
movwf EEADR ;
bcf EECON1,EEPGD ; préparation à la lecture
bcf EECON1,CFGS ; access EEPROM
bsf EECON1,RD ; lecture de l'EEPROM
movf EEDATA,W ; la valeur lue dans l'éeprom est placée dans W
return
;***********************************************************************************************
;************************* "affichage des phrases, 255 octets maximum" *************************
;***********************************************************************************************
ORG H'8E00'
info
db "**************" ; longueur 14 départ 0
db " Test Max6675 " ; longueur 14 départ 14
db "Sur Fantas-Pic" ; longueur 14 départ 28
db " Temps-x " ; longueur 14 départ 42
db " 100% ASM " ; longueur 14 départ 56
db " Erreur sonde " ; longueur 14 départ 70
db " d‚branch‚ " ; longueur 14 départ 84
db " " ; longueur 14 départ 98
db "Temp‚rature" ; longueur 11 départ 112
;***************************** "table des caractères ASCII" ************************************
ORG H'9000'
ascii
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x14
db 0x7F,0x14,0x7F,0x14,0x24,0x2A,0x7F,0x2A,0x12,0x26,0x16,0x08,0x34,0x32,0x76,0x49
db 0x55,0x22,0x50,0x00,0x00,0x05,0x03,0x00,0x00,0x1C,0x22,0x41,0x00,0x00,0x41,0x22
db 0x1C,0x00,0x14,0x08,0x3E,0x08,0x14,0x08,0x08,0x3E,0x08,0x08,0x00,0x50,0x30,0x00
db 0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02
db 0x3E,0x51,0x49,0x45,0x3E,0x00,0x42,0x7F,0x40,0x00,0x42,0x61,0x51,0x49,0x46,0x21
db 0x41,0x45,0x4B,0x31,0x18,0x14,0x12,0x7F,0x10,0x27,0x45,0x45,0x45,0x39,0x3C,0x4A
db 0x49,0x49,0x30,0x01,0x01,0x79,0x05,0x03,0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49
db 0x29,0x1E,0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x08,0x14,0x22
db 0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0x00,0x02,0x01,0x51,0x09,0x06
db 0x3E,0x41,0x49,0x55,0x5E,0x7E,0x11,0x11,0x11,0x7E,0x7F,0x49,0x49,0x49,0x36,0x3E
db 0x41,0x41,0x41,0x22,0x7F,0x41,0x41,0x22,0x1C,0x7F,0x49,0x49,0x49,0x41,0x7F,0x09
db 0x09,0x09,0x01,0x3E,0x41,0x49,0x49,0x3A,0x7F,0x08,0x08,0x08,0x7F,0x00,0x41,0x7F
db 0x41,0x00,0x20,0x41,0x41,0x3F,0x00,0x7F,0x08,0x14,0x22,0x41,0x7F,0x40,0x40,0x40
db 0x40,0x7F,0x02,0x0C,0x02,0x7F,0x7F,0x04,0x08,0x10,0x7F,0x3E,0x41,0x41,0x41,0x3E
db 0x7F,0x09,0x09,0x09,0x06,0x3E,0x41,0x51,0x21,0x5E,0x7F,0x09,0x19,0x29,0x46,0x46
db 0x49,0x49,0x49,0x31,0x01,0x01,0x7F,0x01,0x01,0x3F,0x40,0x40,0x40,0x3F,0x1F,0x20
db 0x40,0x20,0x1F,0x3F,0x40,0x3C,0x40,0x3F,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70
db 0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x00,0x7F,0x41,0x41,0x00,0x02,0x04,0x08,0x10
db 0x20,0x00,0x41,0x41,0x7F,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40
db 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78,0x7F,0x48,0x44,0x44,0x38,0x38
db 0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7F,0x38,0x54,0x54,0x54,0x18,0x08,0x7E
db 0x09,0x01,0x02,0x08,0x54,0x54,0x54,0x3C,0x7F,0x08,0x04,0x04,0x78,0x00,0x44,0x7D
db 0x40,0x00,0x20,0x40,0x44,0x3D,0x00,0x7F,0x10,0x28,0x44,0x00,0x00,0x41,0x7F,0x40
db 0x00,0x7C,0x04,0x18,0x04,0x78,0x7C,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38
db 0x7C,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7C,0x7C,0x08,0x04,0x04,0x08,0x48
db 0x54,0x54,0x54,0x20,0x04,0x3F,0x44,0x40,0x20,0x3C,0x40,0x40,0x20,0x7C,0x1C,0x20
db 0x40,0x20,0x1C,0x3C,0x40,0x38,0x40,0x3C,0x44,0x28,0x10,0x28,0x44,0x0C,0x50,0x50
db 0x50,0x3C,0x44,0x64,0x54,0x4C,0x44,0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x7F,0x00
db 0x00,0x00,0x41,0x36,0x08,0x00,0x08,0x08,0x2A,0x1C,0x08,0x08,0x1C,0x2A,0x08,0x08
db 0x1E,0xA1,0xE1,0x21,0x10,0x3D,0x40,0x40,0x20,0x7D,0x38,0x56,0x55,0x54,0x18,0x20
db 0x56,0x55,0x56,0x78,0x20,0x55,0x54,0x55,0x78,0x20,0x54,0x55,0x56,0x78,0x20,0x54
db 0x55,0x54,0x78,0x0E,0x51,0x71,0x11,0x08,0x38,0x56,0x55,0x56,0x18,0x38,0x55,0x54
db 0x55,0x18,0x38,0x54,0x55,0x56,0x18,0x00,0x45,0x7C,0x41,0x00,0x00,0x46,0x7D,0x42
db 0x00,0x00,0x45,0x7E,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38
db 0x46,0x45,0x46,0x38,0x38,0x45,0x44,0x45,0x38,0x38,0x45,0x46,0x44,0x38,0x3C,0x42
db 0x41,0x22,0x7C,0x3C,0x40,0x41,0x22,0x7C,0x0C,0x51,0x50,0x51,0x3C,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x20,0x54,0x56,0x55,0x78,0x00,0x46,0x7D,0x40,0x00,0x38,0x44,0x46,0x45,0x38,0x3C
db 0x42,0x41,0x20,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x55,0x00,0x55,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x16,0x7C,0x16,0x15,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0xF8,0x54,0x54,0x54,0x28,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x40
db 0x40,0x20,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x05,0x02,0x00,0x00,0x38,0x44,0x48
db 0x30,0x4C,0xF8,0x54,0x54,0x54,0x28,0x38,0x44,0x4C,0x54,0x24,0x28,0x54,0x54,0x44
db 0x20,0x58,0x64,0x04,0x64,0x58,0x44,0x3C,0x04,0x7C,0x44,0x63,0x55,0x49,0x41,0x41
DATAEE ORG H'F00000'
DE 0x00,0x00
End
Fichier code : Max6675(Code).zip
Fichier à mettre dans le Pic : Max6675(Hex).zip
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 14 juin 2020 12:42, modifié 21 fois.
Thermocouple MAX6675
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir Temps-X
Belle demonstration !
de quoi redonner l'envie à se remettre à l'ASM .. surtout avec le 18F26K22 ( qui est mon préféré).
existe-t-il une version couple J ?
MAX66xx
en principe les 2 fils du thermocouple sont brasés au bout avec un petit chalumeau pour former une petite boule ..
Belle demonstration !
de quoi redonner l'envie à se remettre à l'ASM .. surtout avec le 18F26K22 ( qui est mon préféré).
existe-t-il une version couple J ?
MAX66xx
en principe les 2 fils du thermocouple sont brasés au bout avec un petit chalumeau pour former une petite boule ..
Thermocouple MAX6675
Thermocouple MAX6675
Bonsoir paulfjujo, Gérard, et tout le forum,
C'est devenu aussi mon pic préféré, car on n'est plus gêné au niveau, mémoire Programme, Sdram, Eeprom, de plus facile à configurer quand on a l'habitude
Le Max6675 utilise seulement la sonde du type k, par contre pour 2 euros de plus existe le MAX31855, qui fait pas mal de sonde.
Seule la dernière lettre défini la sonde quand doit utiliser, regarde l'image ci-dessous.
Exacte... et normalement c'est calibré en usine... mais dans mon cas elle était coupé pour la réparer j'ai torsadé le bout, et sa fonction très bien comme ça.
A ma connaisance, j'ai pas vu de version pour I²C
Je compte sur toi paulfjujo pour motiver Gérard
A+
paulfjujo a écrit :Source du messagesurtout avec le 18F26K22 ( qui est mon préféré)
C'est devenu aussi mon pic préféré, car on n'est plus gêné au niveau, mémoire Programme, Sdram, Eeprom, de plus facile à configurer quand on a l'habitude
paulfjujo a écrit :Source du message existe-t-il une version couple J en MAX66xx ?
Le Max6675 utilise seulement la sonde du type k, par contre pour 2 euros de plus existe le MAX31855, qui fait pas mal de sonde.
Seule la dernière lettre défini la sonde quand doit utiliser, regarde l'image ci-dessous.
paulfjujo a écrit :Source du message en principe les 2 fils du thermocouple sont brasés au bout avec un petit chalumeau pour former une petite boule ..
Exacte... et normalement c'est calibré en usine... mais dans mon cas elle était coupé pour la réparer j'ai torsadé le bout, et sa fonction très bien comme ça.
Gérard a écrit :Source du message Je ne connaissais pas le MAX 6675. Existe-t-il une version I2C?
A ma connaisance, j'ai pas vu de version pour I²C
Gérard a écrit :Source du message Mais moi, pas envie d'asm ...
paulfjujo a écrit :Source du message de quoi redonner l'envie à se remettre à l'ASM
Je compte sur toi paulfjujo pour motiver Gérard
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Thermocouple MAX6675
bonjour à Gérard et vous autres,
Pour info, j'ai souvenir d'avoir testé le MCP6808 de Mictochip et le DS1621 de Maxim, je crois avec succès, c'est au moins sûr pour le MCP6808 qui sont deux circuits de même fonction en I2C.
Dans mon foutoir, je ne retrouve pas le DS1621 pour refaire un essai et voir où j'en étais. Mais ces essais sont en ASM
Bravo à temps-x
Pour info, j'ai souvenir d'avoir testé le MCP6808 de Mictochip et le DS1621 de Maxim, je crois avec succès, c'est au moins sûr pour le MCP6808 qui sont deux circuits de même fonction en I2C.
Dans mon foutoir, je ne retrouve pas le DS1621 pour refaire un essai et voir où j'en étais. Mais ces essais sont en ASM
Bravo à temps-x
Thermocouple MAX6675
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour JJE et à tous,
L'inconvenient du DS1621 , est que le sensor/capteur de temperature est enfoui dans le DIP8
et a donc un temps de reponse assez long et qu'on ne peut pas le placer ou on veut vraiment,
ce qu'apporte le thermocouple + la vitesse de réponse
j'en ai utilisé qui faisait à peine 0.5mm de diametre , ou 1mm dans une gaine inox
ou en version souple comme celui de temps X..
Nota : on ne peut pas"Calibrer " un thermocouple ..
on soude les 2 fils d'alliage Fe Ct (couple J) ou Chrome Alumel et on obtient un thermocouple ..
Apres pour avoir un thermocouple ETALON , ( par tri ..) il faut allonger la monnaie ..
Dans ma boite, c'est un chaudronier (habile) et habilité pour, qui les préparait ( jusqu'à 250 d'affilé !),
on les verifiait ensuite dans un four de calibration et pont de mesure milivoltmetre MECI ,vers la temperature d'utilisation .
ça c'etait avant de passer principalement aux PT100 3 fils et 4 fils ..
L'inconvenient du DS1621 , est que le sensor/capteur de temperature est enfoui dans le DIP8
et a donc un temps de reponse assez long et qu'on ne peut pas le placer ou on veut vraiment,
ce qu'apporte le thermocouple + la vitesse de réponse
j'en ai utilisé qui faisait à peine 0.5mm de diametre , ou 1mm dans une gaine inox
ou en version souple comme celui de temps X..
Nota : on ne peut pas"Calibrer " un thermocouple ..
on soude les 2 fils d'alliage Fe Ct (couple J) ou Chrome Alumel et on obtient un thermocouple ..
Apres pour avoir un thermocouple ETALON , ( par tri ..) il faut allonger la monnaie ..
Dans ma boite, c'est un chaudronier (habile) et habilité pour, qui les préparait ( jusqu'à 250 d'affilé !),
on les verifiait ensuite dans un four de calibration et pont de mesure milivoltmetre MECI ,vers la temperature d'utilisation .
ça c'etait avant de passer principalement aux PT100 3 fils et 4 fils ..
Thermocouple MAX6675
- Gérard
Expert- Messages : 1640
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
JJE a écrit :bonjour à Gérard et vous autres,
Pour info, j'ai souvenir d'avoir testé le MCP6808 de Mictochip et le DS1621 de Maxim, je crois avec succès, c'est au moins sûr pour le MCP6808 qui sont deux circuits de même fonction en I2C.
Dans mon foutoir, je ne retrouve pas le DS1621 pour refaire un essai et voir où j'en étais. Mais ces essais sont en ASM
Bravo à temps-x
Bonjour,
JJE, es-tu sûr de la référence MCP6808? Je ne trouve pas chez Microchip.
Thermocouple MAX6675
Thermocouple MAX6675
Thermocouple MAX6675
Bonsoir tout le monde,
C'est bien beau tout ses contrôleurs de tempèrature que vous me faite voir, mais il ne dépasse pas les 150 °C
Hors pour mon projet,.. il me fallait un capteur pouvant contrôler des températures de plus de 200°C, à pas chère de préférence
Le Max6675 réponds bien à ma demande, puisse qu'il peut contrôler des températures de 0°C à 1024°C.
Ok, j'en sait un peu plus.... merci..., je comprends maintenant pourquoi le thermocouple fonctionne une fois les fils réunis.
A+
C'est bien beau tout ses contrôleurs de tempèrature que vous me faite voir, mais il ne dépasse pas les 150 °C
Hors pour mon projet,.. il me fallait un capteur pouvant contrôler des températures de plus de 200°C, à pas chère de préférence
Le Max6675 réponds bien à ma demande, puisse qu'il peut contrôler des températures de 0°C à 1024°C.
paulfjujo a écrit :Source du message Nota : on ne peut pas"Calibrer " un thermocouple ..
on soude les 2 fils d'alliage Fe Ct (couple J) ou Chrome Alumel et on obtient un thermocouple ..
Apres pour avoir un thermocouple ETALON , ( par tri ..) il faut allonger la monnaie ..
Ok, j'en sait un peu plus.... merci..., je comprends maintenant pourquoi le thermocouple fonctionne une fois les fils réunis.
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités