chauffage solaire douche piscine

Bonjour Michel j'ai voulu chercher sur le sujet régularisation solaire thermique Mais la discussion n'est plus en entier ça s'arrête à la page 3 , je voulais voir comment j'avais fait avec mon convertisseur
Patrick
Bonjour,
Il y a plusieurs type de convertisseurs. Je connais les prolific PL2303, les driver installés automatiquement par windows ne fonctionnent pas, il faut le changer. Les FT232 qui fonctionnent bien avec le driver installé par windows et il y en a d'autres, qui fonctionnent effectivement avec un driver chinois CH340 que je ne connais pas.
D'où vient ton convertisseur? donne un lien
MM
 
C'est celui que tu m'as recommandé sur eBay
Ah..sans doute parce que il était dispo en France.
Mais si c'est effectivement un PL2303, essaie d'installer le driver IFD3200, comme indiqué dans cette page, même si windows veut en installer un autre

J'arrête de proposer les PL2303, trop de problèmes de driver. Le FT232 est plus facile à installer. Il est souvent livré avec socle USB mini, moins courant que le micro ou C, qui existent aussi
MM
 
Last edited:
Ah..sans doute parce que il était dispo en France.
Mais si c'est effectivement un PL2303, essaie d'installer le driver IFD3200, comme indiqué dans cette page, même si windows veut en installer un autre
MM
C'est ce que j'ai fait en de connectant internet mais je vais réessayer plus tard, le pilote refuse de s'installer et ch340 reviens à chaque fois, décidément je n'ai pas de chance avec les convertisseurs , je te donne le résultat de mes essais ce soir
Patrick
 
C'est ce que j'ai fait en de connectant internet mais je vais réessayer plus tard, le pilote refuse de s'installer et ch340 reviens à chaque fois, décidément je n'ai pas de chance avec les convertisseurs , je te donne le résultat de mes essais ce soir
Patrick
Il faut désinstaller et surtout supprimer l'ancien driver, il y a une case à cocher et essayer en restant déconnecter l'internet.
Plus de détails:
MM
 
c'est bien ce que j'ai fait j'ai suivi pas a pas la procédure que tu as posté dans electromag mais j'ai l'impression que l'ancien driver ne veut pas se supprimer je réessaie plus tard actuellement j'ai les enfants a garder
 
Ok, pour 3 euros, commande un FT232 français (#123), moins de pb de driver...faudra probablement un cordon USB mini (pas micro).
MM
 
Bonjour Michel j'ai reçu mon FT232 j'ai un pilote installé FTDI j'ai un cordon usb usb mini la picaxe est bien reconnue lorsque je clique exécuter j'ai chargement des données puis c'est tout ça s'arrête la si mon cordon n'estait pas un cordon data je pense que la picaxe ne serait pas reconnue ,je ne connais pas de méthode pour tester un câble pour savoir si ç'est un data ou un charge , j'avais aussi commandé un autre PL2303 mais sans succès aussi , il y as autre chose qui pose problème ,lorsque j'ai programmé mes premières picaxes ça as bien fonctionné ou alors je fait une erreur a quelque part dans mes manipulations ,je réessaie ce soir
patrick
 
Bonjour Michel j'ai reçu mon FT232 j'ai un pilote installé FTDI j'ai un cordon usb usb mini la picaxe est bien reconnue lorsque je clique exécuter j'ai chargement des données puis c'est tout ça s'arrête la si mon cordon n'estait pas un cordon data je pense que la picaxe ne serait pas reconnue ,je ne connais pas de méthode pour tester un câble pour savoir si ç'est un data ou un charge , j'avais aussi commandé un autre PL2303 mais sans succès aussi , il y as autre chose qui pose problème ,lorsque j'ai programmé mes premières picaxes ça as bien fonctionné ou alors je fait une erreur a quelque part dans mes manipulations ,je réessaie ce soir
patrick
Bonjour Patrick,
Je ne comprends pas non plus. tu dis voir le chargement des données mais tu n'as pas de message de fin de chargement, c'est ça ?
Je n'ai jamais eu ce genre de problème.
Il y a une procédure de vérification de cordon dans "port de communication", il y a "configurer et tester" puis " test du câble de programmation"
La procédure est en deux temps:
Test de la continuité aller retour du signal et test de la polarité.
Avec le cordon total convertisseur + inverseur:
1) test de continuité : on court-circuite RX et TX (connectés normalement à SI et SO du picaxe ) on lance la procédure et PE6 envoie des infos qui se traduisent par des ligne successives à l'écran => continuité OK
2) test de polarité: avec un voltmètre on vérifie que la tension 0V et 5V correspond au potentiel attendu (test de l’inverseur)
Le plus curieux est que ça a déjà fonctionné sans problème
MM
 
j'ai fait le test le retour de boucle est ok ,mais ou faut il mesurer 5 v si c'est entre gnd et + j'ai toujours 5 v ,j'ai mesuré lorsque tout est en place j'ai
5 v jusqu'à la picaxe
 
j'ai fait le test le retour de boucle est ok ,mais ou faut il mesurer 5 v si c'est entre gnd et + j'ai toujours 5 v ,j'ai mesuré lorsque tout est en place j'ai
5 v jusqu'à la picaxe
Faire suivant après le test de continuité.
Le test de polarité se fait entre le 0V et la sortie SI qui va a la broche serial in , entre le 10k et la 22k sur le µC
Il faut cliquer sur le bouton du test, le voltmètre sur le PC indique la tension à mesurer 0V ou 5V
Mais si tu vois la bande de chargement du programme, tout cela est bon. Dis exactement ce qui se passe.
MM
 
Last edited:
apparemment c'est bon j'ai réussi a charger le code ,par contre je n'ai tout compris #115 j'ai chargé la première partie ,mais que dois-je?, faire avec la seconde partie du code ?
 
apparemment c'est bon j'ai réussi a charger le code ,par contre je n'ai tout compris #115 j'ai chargé la première partie ,mais que dois-je?, faire avec la seconde partie du code ?
Il y a deux codes un: (#picaxe 08M2), est à charger dans le 08M2, placé dans le module du TC, voir #92 . L'ajustable est apparemment inutile, la mesure est la même que sur mon thermomètre de précision. Le code n'en tient pas compte, ne pas le souder.
Il est relié au PCB principal, à la place du DS18B20 trois fils: +,-,data
Le second est donc pour le PCB principal . Le code a été modifié pour lire le serout du PCB émetteur 08M2
serin à la place de readtemp
La mesure hésite parfois entre deux valeurs (moyenne de 3 mesures consécutives). A voir
MM
 
Last edited:
Bonjour Michel c'est bien ce que j'avais compris mais si je remplace le code du 20M2 Par celui du #115 ça ne va pas fonctionner, faut il remplacer une partie du code ou faire un ajout , mais comment ? Pour ce qui est de l'ajustable je vais la démonter. Merci
Patrick
 
Bonjour,
Laisse l'ajustable pour l'instant, il ne gêne pas
Oui,j'ai oublié de poster le nouveau code. Il arrive
MM
 
Bonjour,
Laisse l'ajustable pour l'instant, il ne gêne pas
Oui,j'ai oublié de poster le nouveau code. Il arrive
MM
Voici un code à essayer
Il y a une gestion d'erreur TC en plus
Code:
;gestion chauffage solaire ; MM 13/06/25
;modif 13/06/25 : Tpanneau par thermocouple et liaison RS232
#picaxe 20M2
setfreq M16
symbol pano=C.7        ;Entrée T panneau
symbol selec=pinC.6    ;poussoir de sélection 
symbol DSbalon=C.5    ;T balon
symbol DSjac=C.4        ;T jaccuzi
symbol DSpisc=C.3    ;T piscine
symbol DSser=C.2        ;T serre
symbol valid=pinC.0    ;poussoir de validation
symbol potar=B.5        ;pot de réglages consignes
symbol LCD=B.0            ;LCD 2004
symbol circBal=outpinB.1        ;circulateur balon
symbol circJac=outpinB.2        ;circulateur jaccuzi
symbol circPisc=outpinB.3        ;circulateur piscinne
symbol circSer=outpinB.4    ;circulateuur serre
symbol def        =bit0
symbol Tpano    =b1    ;valeur T° panneaux
symbol Tbalon    =b2    ;ballon
symbol Tpisc    =b3    ;piscine
symbol Tjac        =b4    ;jacuzzi
symbol Tser        =b5    ;serre
symbol Cbalon    =b6    ;valeur consigne ballon
symbol Cjac        =b7    ;jacuzzi
symbol Cpisc    =b8    ;piscine
symbol Cser        =b9    ;serre
symbol varb        =b10    ;variable byte
symbol delt        =b11    ;delte pan-balon
symbol Ident    =b12    ;Identification RS232
symbol cpt        =b13    ;compteur
symbol cumul    =w13    ;somme temp
symbol baud        =N2400_16
symbol baudT    =T2400_16    ;idem LCD mais peut changer
dirsC=%0
dirsB=%00011111
pullup %1111111100000000
;****************************************    
    pause 500    ;temps iitialisation LCD
    serout LCD, baud,(254,1)
    serout LCD, baud,(254,130,"Pa  Ba  Ja  Pi  Se")
    serout LCD, baud,(254,148,"C",254,192,"T",254,212,"P")
    read 0,Cjac,Cpisc,Cser ;lecture consignes enEEPROM
    if Cjac=0 then
         gosub consigne ; si EEPROM vide
    else
        serout LCD,baud,(254,158,#Cjac,254,162,#Cpisc,254,166,#Cser)
    endif
    ;serin [20000,erreur],C.7,baudT,ident,def,Tpano        ;reception Tpano timeout 5s
    do
        cumul=0
        for cpt=0 to 3
            serin [20000,erreur],C.7,baudT,ident,def,Tpano        ;reception Tpano timeout 5s
            cumul=cumul+Tpano
        next
        if ident<>123 or def <>0 then erreur
        Tpano=cumul/4
        readtemp DSbalon,Tbalon    ;sur C.5
        readtemp DSjac,Tjac        ;sur C.4
        readtemp DSpisc,Tpisc    ;sur C.3
        readtemp DSser,Tser        ;sur C.2
    ;Tpano=85:Tbalon=75:Tjac=35:Tpisc=32:Tser=22        ;valeurs test                
         serout LCD, baud,(254,194,#Tpano," ",254,198,#Tbalon," ",254,202,#Tjac," ",254,206,#Tpisc," ",254,210,#Tser)
        pause 200                
        if valid=0  then gosub consigne    ;passage par consigne à la MST
        gosub gescirc
    loop
;*********************************************
consigne:
    serout LCD,baud, (254,150," ",254,153,">",#delt," ")    ;affichage chevron
    do loop while valid=0        ;attente relachement valid    
    do
        if selec=0 then jac    ;si pous selection => étiquette pisc
    loop while valid=1            ;si valid relaché, on tourve        
    do loop while valid=0        ;valid a été appuyé, on attend le relachement
    do                                    ;réglage Cjac
        readadc potar, delt
        delt= 15 *delt/255
        serout LCD, baud,(254,153,"=",#delt," ")    ;affichage = devant la valeur de Cjac
    loop while valid=1            ;on tourne tant que valid est relaché
    write 3,delt                    ;valid appuyé consigne en mémoire EEPROM
    do loop while valid=0        ;attente relachement
jac:
    do loop while selec=0        ;si selec appuyé, on attend le relachement
    serout LCD,baud, (254,153," ",254,157,">",#Cjac," ")        ;effacement "=" et chevron suivant
    do
        if selec=0 then pisc        ;si pous selection => étiquette pisc
    loop while valid=1            ;si valid relaché, on tourve        
    do loop while valid=0        ;valid a été appuyé, on attend le relachement
    do                                    ;réglage Cjac
        readadc potar, Cjac
        Cjac= 50 *Cjac/255
        serout LCD, baud,(254,157,"=",#Cjac," ")    ;affichage = devant la valeur de Cjac
    loop while valid=1            ;on tourne tant que valid est relaché
    write 0,Cjac                    ;valid appuyé consigne en mémoire EEPROM
    do loop while valid=0        ;attente relachement
pisc:
    do loop while selec=0        ;si selec appuyé, on attend le relachement
    serout LCD,baud, (254,157," ",254,161,">",#Cpisc," ")        ;effacement "=" et chevron suivant
    do
        if selec=0 then Ser
    loop while valid=1
    do loop while valid=0
    do    
        readadc potar, Cpisc
        Cpisc= 40 *Cpisc/255
        serout LCD, baud,(254,161,"=",#Cpisc," ")
    loop while valid=1
    write 1, Cpisc
    do loop while valid=0
Ser:
    do loop while selec=0
    serout LCD,baud, (254,161," ",254,165,">",#Cser)
    do
        if selec=0 then fin
    loop while valid=1
    do loop while valid=0
    do    
        readadc potar, Cser
        Cser= 20 *Cser/255 +10
        serout LCD, baud,(254,165,"=",#Cser)
    loop while valid=1
    write 2, Cser        
    do loop while valid=0
fin:
    serout LCD, baud,(254,165," ")    
    return
gescirc:
    if Tbalon >=90 or Tbalon>= Tpano then 
        circBal=0        
    endif    
    varb=Tbalon+delt        ;Temp ballon +5°C
    if Tpano>varb then
        circBal=1
    else circBal=0        
    endif
    serout LCD,baud,(254,218,#circBal)    ;affichage val de circbal

    if Tbalon>Tjac and Cjac> Tjac then
        circJac= 1        
    endif
    If Tjac>=Cjac or Tjac>=Tbalon then
        circJac=0        
    endif
    serout LCD,baud,(254,222,#circJac)

    if Tser>=Cser or Tbalon<Tser or circJac=1  then
        circSer=0            
    endif        
    if Tbalon>Tser and circJac=0 and Tser<Cser then
        circser=1        
    endif
    serout LCD,baud,(254,230,#circSer)

    if Tbalon>Tpisc and circJac=0 and Tpisc< Cpisc then
        circpisc=1        
    endif
    if Tpisc>=Tbalon or Tpisc>=Cpisc or circJac=1 then
        circpisc=0        
    endif
    serout LCD,baud,(254,226,#circpisc)
    return
erreur:
    if def <> 0 then
        serout LCD,baud,(254,148,"ERR THERMOC=>valid")
    else
        serout LCD,baud,(254,148,"ERR TEMPSMAX=>valid")
    endif
    do loop while valid=1        ;attente appui
    do loop while valid=0        ;attente relachement    
    reset
    
{/code]
 
Évidemment, c'était pas la dernière MaJ, Je remets les deux codes
Pour le thermocouple
Code:
;MESURE TMAX31855 RS232
;lecture thermocouple par MAX31855 MM 13/06/25
;La broche SO va prendre successivement la valeur de chaque bit du registre.
; scanné poids fort en tête
;transmission ,défaut,température
#picaxe 08M2
#no_data
symbol CLK=C.1        ; pulse horloge
symbol CSB=C.2        ;demande lecture  _____/
symbol SO=pinC.3        ;bit de donnée serial out
symbol def=bit0
symbol cpt=b1
symbol temp=b2
symbol varw=w13         ;var temporaire
symbol temptherm=w11    ;tempé thermocouple
setfreq M4             
symbol baud=T2400_4
;*****************************
#macro spin(varw)        ;macro SPIIN
    varw = 0
    for cpt = 1 to 16
      varw=varw * 2 + SO        ;décalage à gauche + SO (0 ou 1) 
      pulsout CLK,1            ;pulse horloge  
    next cpt 
#endmacro
;************************************
    pause 500 
    high CSB    ;première conversion
    Do 
        pause 200     ;200ms
        low CSB            ;lecture registre         
        spin(temptherm)    ;exécution macro 16 premiers bits (poid fort en tête 
        high CSB                ;nouvelle conversion 
        ;*****defaut **********************     
        def=temptherm//2        ;isol bit défaut     
        ;**** temp thermocouple ******************************       
        temptherm=temptherm/4    ;suppression des 2 derniers bits
        if temptherm>=$2000 then    ;test 1er bit des 14 bits pour valeur négative
          temptherm=0                    ;fixé à 0 si négatif 
        endif       
        temptherm=temptherm/4            ;suppression des décimales-> val entière
        temptherm=temptherm//256   ;valeur entière ; on garde les 8 derniers bits
        temp=temptherm      
        serout C.0, baud,(temp,def)        ;liaison RS232       
      loop

Pour le PCB affichage:
Code:
;gestion chauffage solaire ; MM 15/06/25
;modif 13/06/25 : Tpanneau par thermocouple et liaison RS232
#picaxe 20M2
setfreq M16
symbol pano=C.7        ;Entrée T panneau
symbol selec=pinC.6    ;poussoir de sélection
symbol DSbalon=C.5    ;T balon
symbol DSjac=C.4        ;T jaccuzi
symbol DSpisc=C.3    ;T piscine
symbol DSser=C.2        ;T serre
symbol valid=pinC.0    ;poussoir de validation
symbol potar=B.5        ;pot de réglages consignes
symbol LCD=B.0            ;LCD 2004
symbol circBal=outpinB.1        ;circulateur balon
symbol circJac=outpinB.2        ;circulateur jaccuzi
symbol circPisc=outpinB.3        ;circulateur piscinne
symbol circSer=outpinB.4    ;circulateuur serre
symbol def        =bit0
symbol Tpano    =b1    ;valeur T° panneaux
symbol Tbalon    =b2    ;ballon
symbol Tpisc    =b3    ;piscine
symbol Tjac        =b4    ;jacuzzi
symbol Tser        =b5    ;serre
symbol Cbalon    =b6    ;valeur consigne ballon
symbol Cjac        =b7    ;jacuzzi
symbol Cpisc    =b8    ;piscine
symbol Cser        =b9    ;serre
symbol varb        =b10    ;variable byte
symbol delt        =b11    ;delte pan-balon
symbol Ident    =b12    ;Identification RS232
symbol cpt        =b13    ;compteur
symbol cumul    =w13    ;somme temp
symbol baud        =N2400_16
symbol baudT    =T2400_16    ;idem LCD mais peut changer
dirsC=%0
dirsB=%00011111
pullup %1111111100000000
;****************************************   
    pause 500    ;temps iitialisation LCD
    serout LCD, baud,(254,1)
    serout LCD, baud,(254,130,"Pa  Ba  Ja  Pi  Se")
    serout LCD, baud,(254,148,"C",254,192,"T",254,212,"P")
    read 0,Cjac,Cpisc,Cser ;lecture consignes enEEPROM
    if Cjac=0 then
         gosub consigne ; si EEPROM vide
    else
        serout LCD,baud,(254,158,#Cjac,254,162,#Cpisc,254,166,#Cser)
    endif
   
    do
        cumul=0
        for cpt=0 to 3
            serin [20000,erreur],C.7,baudT,Tpano,def        ;reception Tpano timeout 5s
            cumul=cumul+Tpano
        next
        if def <>0 then erreur
        Tpano=cumul/4
        readtemp DSbalon,Tbalon    ;sur C.5
        readtemp DSjac,Tjac        ;sur C.4
        readtemp DSpisc,Tpisc    ;sur C.3
        readtemp DSser,Tser        ;sur C.2
    ;Tpano=85:Tbalon=75:Tjac=35:Tpisc=32:Tser=22        ;valeurs test               
         serout LCD, baud,(254,194,#Tpano," ",254,198,#Tbalon," ",254,202,#Tjac," ",254,206,#Tpisc," ",254,210,#Tser)
        pause 200               
        if valid=0  then gosub consigne    ;passage par consigne à la MST
        gosub gescirc
    loop
;*********************************************
consigne:
    serout LCD,baud, (254,150," ",254,153,">",#delt," ")    ;affichage chevron
    do loop while valid=0        ;attente relachement valid   
    do
        if selec=0 then jac    ;si pous selection => étiquette pisc
    loop while valid=1            ;si valid relaché, on tourve       
    do loop while valid=0        ;valid a été appuyé, on attend le relachement
    do                                    ;réglage Cjac
        readadc potar, delt
        delt= 15 *delt/255
        serout LCD, baud,(254,153,"=",#delt," ")    ;affichage = devant la valeur de Cjac
    loop while valid=1            ;on tourne tant que valid est relaché
    write 3,delt                    ;valid appuyé consigne en mémoire EEPROM
    do loop while valid=0        ;attente relachement
jac:
    do loop while selec=0        ;si selec appuyé, on attend le relachement
    serout LCD,baud, (254,153," ",254,157,">",#Cjac," ")        ;effacement "=" et chevron suivant
    do
        if selec=0 then pisc        ;si pous selection => étiquette pisc
    loop while valid=1            ;si valid relaché, on tourve       
    do loop while valid=0        ;valid a été appuyé, on attend le relachement
    do                                    ;réglage Cjac
        readadc potar, Cjac
        Cjac= 50 *Cjac/255
        serout LCD, baud,(254,157,"=",#Cjac," ")    ;affichage = devant la valeur de Cjac
    loop while valid=1            ;on tourne tant que valid est relaché
    write 0,Cjac                    ;valid appuyé consigne en mémoire EEPROM
    do loop while valid=0        ;attente relachement
pisc:
    do loop while selec=0        ;si selec appuyé, on attend le relachement
    serout LCD,baud, (254,157," ",254,161,">",#Cpisc," ")        ;effacement "=" et chevron suivant
    do
        if selec=0 then Ser
    loop while valid=1
    do loop while valid=0
    do   
        readadc potar, Cpisc
        Cpisc= 40 *Cpisc/255
        serout LCD, baud,(254,161,"=",#Cpisc," ")
    loop while valid=1
    write 1, Cpisc
    do loop while valid=0
Ser:
    do loop while selec=0
    serout LCD,baud, (254,161," ",254,165,">",#Cser)
    do
        if selec=0 then fin
    loop while valid=1
    do loop while valid=0
    do   
        readadc potar, Cser
        Cser= 20 *Cser/255 +10
        serout LCD, baud,(254,165,"=",#Cser)
    loop while valid=1
    write 2, Cser       
    do loop while valid=0
fin:
    serout LCD, baud,(254,165," ")   
    return
gescirc:
    if Tbalon >=90 or Tbalon>= Tpano then
        circBal=0       
    endif   
    varb=Tbalon+delt        ;Temp ballon +5°C
    if Tpano>varb then
        circBal=1
    else circBal=0       
    endif
    serout LCD,baud,(254,218,#circBal)    ;affichage val de circbal

    if Tbalon>Tjac and Cjac> Tjac then
        circJac= 1       
    endif
    If Tjac>=Cjac or Tjac>=Tbalon then
        circJac=0       
    endif
    serout LCD,baud,(254,222,#circJac)

    if Tser>=Cser or Tbalon<Tser or circJac=1  then
        circSer=0           
    endif       
    if Tbalon>Tser and circJac=0 and Tser<Cser then
        circser=1       
    endif
    serout LCD,baud,(254,230,#circSer)

    if Tbalon>Tpisc and circJac=0 and Tpisc< Cpisc then
        circpisc=1       
    endif
    if Tpisc>=Tbalon or Tpisc>=Cpisc or circJac=1 then
        circpisc=0       
    endif
    serout LCD,baud,(254,226,#circpisc)
    return
erreur:
    if def <> 0 then
        serout LCD,baud,(254,148,"ERR THERMOC=>valid")
    else
        serout LCD,baud,(254,148,"ERR TEMPSMAX=>valid")
    endif
    do loop while valid=1        ;attente appui
    do loop while valid=0        ;attente relachement   
    reset

Finalement, c'était quoi le pb de programmation ?
MM
 
Last edited:
Bonjour Michel je pense que cela venait du module depuis que j'utilise le dernier que j'ai commandé ça fonctionne , en mettant les derniers codes ça fonctionne pas mal , j'ai juste la température du thermocouple qui était curieuse bien en dessous de la réalité mais ça as l'air de se stabiliser , la consigne ballon je ne peut pas aller au delà de 15 ,c'est un peut faible comme consigne ,j'ai bien teste potar a fond baissé ,mais a chaque démarrage consigne a 0 comme tous mais 15 maxi ,merci encore pour ton super travail ,même si je commence a comprendre le sens des écritures je serait bien incapable d'écrire tout cela
patrick
 
Bonjour Michel je pense que cela venait du module depuis que j'utilise le dernier que j'ai commandé ça fonctionne , en mettant les derniers codes ça fonctionne pas mal , j'ai juste la température du thermocouple qui était curieuse bien en dessous de la réalité mais ça as l'air de se stabiliser , la consigne ballon je ne peut pas aller au delà de 15 ,c'est un peut faible comme consigne ,j'ai bien teste potar a fond baissé ,mais a chaque démarrage consigne a 0 comme tous mais 15 maxi ,merci encore pour ton super travail ,même si je commence a comprendre le sens des écritures je serait bien incapable d'écrire tout cela
patrick
Pourquoi 15, je sais pas, mais on peut changer:
Code:
do                               
        readadc potar, delt
        delt= 15 *delt/255
        serout LCD, baud,(254,153,"=",#delt," ")    ;affichage = devant la valeur de Cjac
    loop while valid=1            ;on tourne tant que valid est relaché
    write 3,delt                    ;valid appuyé consigne en mémoire EEPROM

remplace 15 par ce que tu veux
Le thermocouple a pas mal d'inertie avec la masse de métal, c'est un peu normal. vérifie la mesure si tu as un autre thermomètre pour comparer.
MM
 
Last edited:
Actuellement je fais les tests avec le montage pour mon chauffage solaire où il va falloir que je monte aussi un thermocouple et j'ai les ds qui sont posées au même endroit que le thermocouple,elles donnent toutes la même température,donc facile a vérifier, ok je vais changer le 15 en 90
Patrick
 
michel le code que tu m'a fait passer est parfait c'est celui du chauffage solaire pour ma piscine jaccuzi etc ,mais je travaille sur le chauffage de ma douche piscine et je suis en train d'essayer de transposer le code que tu m'as donné sur celui qui correspond ,mais j'ai un message erreur symbol non connu pourtant j'ai recopié ce que je pense être bon ,mais j'ai du louper quelque chose , la DS a fondue dans le panneau cet après midi la gaine thermo a rendu l'âme et le capteur est sorti du fourreau ,ce n(est pas une grosse perte , guère plus d'un euro , je te transmet le code que j'ai modifié tant bien que mal mais apparemment plutôt mal

;chauffage solaire douche piscine 17/06/25
;T panneau par thermocouple et liaison RS232
#picaxe 20M2
setfreq M16
symbol pano=C.7
symbol DSbalon=C.5
symbol Pbal=B.5
symbol LCD=B.0
symbol circBal=outpinB.1
symbol Tpano =b1
symbol Tbalon =b2
symbol Cbalon =b3
symbol varb =b4
symbol delt =b11
symbol Ident =b12
symbol cpt =b13
symbol cumul =w13
symbol baud =N2400_16
symbol baudT =T2400_16
symbol def =bit0
dirsC=%0
dirsB=%00011111
pullup %1111111100000000
;****************************************
pause 500
serout LCD, baud,(254,1)
serout LCD, baud,(254,130,"Pa Ba ")
serout LCD, baud,(254,148,"C",254,192,"Tß",254,212,"P" ) ;ß=alt+0223 => ° sur LCD
do
cumul=0
for cpt=0 to 3
serin [20000,erreur],C.7,baudT,Tpano,def
cumul=cumul+Tpano
next
if def<>0 then erreur
Tpano=cumul/4
readtemp DSbalon,Tbalon
readadc Pbal, Cbalon
serout LCD, baud,(254,194,#Tpano," ",254,198,#Tbalon," ", 254,154,#Cbalon," ")
pause 200
gosub gescirc
loop
;*********************************************
gescirc:
if Tbalon>=90 or Tbalon>=Tpano then
circBal=0
endif
varb=Tbalon+5
if Tpano > varb and Cbalon > Tbalon then
circBal=1
else circBal=0
endif
serout LCD,baud,(254,218,#circBal)
return
 
, je te transmet le code que j'ai modifié tant bien que mal mais apparemment plutôt mal
il manque le sous programme erreur:
Dans la ligne : serin [20000,erreur],C.7,baudT,Tpano,def
entre crochet, il y a un "time out", càd que si le temps d'attente de 5s est dépassé, (20000/4 parce que l'on une freq de 16M=4 x 4MHz), la commande renvoie à un sous programme erreur pour signaler une anomalie.
idem pour la ligne
if def<>0 then erreur
def est un bit défaut de la commande de lecture du thermocouple comme une déconnexion. Débranche le TC du module et le message d'erreur apparaitra.
Donc, il faut ajouter le sous-programme "erreur:"
Si un message d'erreur apparait, il faut appuyer sur le poussoir "validation" pour resetter le programme.
MM
 
j'ai écrit cela ,ça tourne mais j'ai le message erreur qui apparait sans cesse ,bon au début j'avais le fil du retour du thermocouple qui était coupé ,c'était normal ,mais même après réparation le message revient parfois après 5 secondes parfois une minute ,mais ça arrête la lecture de température
patrick
 
C'est plutôt parce que la lecture s'arrête que le message apparait.
Il y a deux messages possibles: TC ou liaison RS232, c'est lequel ?
MM
 
ni l'un ni l'autre err thermoc=>valid ça passe si je valide
 

Attachments

  • IMG_20250617_221152.jpg
    IMG_20250617_221152.jpg
    509.5 KB · Views: 0
  • IMG_20250617_221116.jpg
    IMG_20250617_221116.jpg
    420.2 KB · Views: 0
ni l'un ni l'autre err thermoc=>valid ça passe si je valide
C'est l'erreur thermocouple (TC) mauvais contacts laison TC /module , débranche leTC et tu auras une erreur permanente .
La validation relance le programme, mais si elle revient, le problème n'est pas résolu.
MM
 
Bonjour Michel je vais essayer mais je vais aussi essayer avec une longueur de câble plus courte, c'est peut être la cause , ça fonctionne bien avec mon pcb de chauffage solaire et le thermocouple monté sans ralonge et comme je pense avoir retranscrit correctement le code sur le pcb chauffage douche piscine si ça fonctionne sans ralonge j'ai trouvé la cause,et le remède est peut être de modifier la tempo de 5 secondes et de l'augmenter
Patrick
 
J'ai changé le thermocouple le pcb du thermocouple et j'ai testé ,au début j'ai eu le même problème j'ai essayé en direct sur le pcb principal, c'est ok j' ai réessayé avec la ralonge un coup bon un coup pas bon a force d'essai, résultat problème de thermocouple il ne me reste plus qu'à tester le pcb du thermocouple je fais ça plus tard sur mon autre montage et je confirmerai avec un essai avec un autre thermocouple et son pcb
Patrick
 
Nouveau message d'erreur qui ne passe pas en validant , mais en débranchant je vais changer le câble de liaison c'est un 3x0,5 je vais tester avec du câble blindé
 

Attachments

  • Screenshot_20250618-101659.png
    Screenshot_20250618-101659.png
    333.5 KB · Views: 1
J'ai changé le thermocouple le pcb du thermocouple et j'ai testé ,au début j'ai eu le même problème j'ai essayé en direct sur le pcb principal, c'est ok j' ai réessayé avec la ralonge un coup bon un coup pas bon a force d'essai, résultat problème de thermocouple il ne me reste plus qu'à tester le pcb du thermocouple je fais ça plus tard sur mon autre montage et je confirmerai avec un essai avec un autre thermocouple et son pcb
Patrick
Le message "erreur thermocouple" est envoyé par le module 08M2 qui ne trouve pas de thermocouple. On peut ne pas tester cette erreur, il n'y aura plus de message, mais il faut mieux chercher la cause.
L'erreur time out entre crochets intervient si il n'y a pas de connexion RS232 au bout de 5s d'attente , normalement, serin reçoit une trame toutes les 200ms, si on a le message erreur thermocouple, c'est que la trame porteuse de l'erreur est reçue.
Cette rallonge est entre quoi et quoi ? Entre TC et module ou liaison RS232 ? Quelles longueurs?
J'ai cru comprendre que c'est entre TC et module, c'est pas bon, le module doit être directement raccordé au TC, c'est la liaison RS232 qu'il faut allonger
MM
 
Le TC est branché en direct sur le RS232 le câble de liaison en 3x0,5 est entre le RS232 et le pcb principal environ 3 m ,ça fonctionne un moment puis affichage (pièce jointe)
 

Attachments

  • Screenshot_20250618-101659.png
    Screenshot_20250618-101659.png
    333.5 KB · Views: 2
Le TC est branché en direct sur le RS232 le câble de liaison en 3x0,5 est entre le RS232 et le pcb principal environ 3 m ,ça fonctionne un moment puis affichage (pièce jointe)
Et il est où le module MAX31855 ?
C'est quoi ce message ?
Donne le programme, pour essayer de comprendre quelque chose.
MM
 
le max31855 est dans un boitier plexo a l'extérieur a l'abri du soleil le thermocouple est connecté directement dessus et il est broché sur le pcb avec le .8M2 ensuite liaison vers le pcb principal avec un 3x0.5 connexion par fiches sur le pcb du 08M2 et sur bornier a vis coté pcb principal ,ça tourne assez longtemps puis j'ai le message de la pièce jointe #153
les codes
;MESURE TMAX31855 RS232
;lecture thermocouple par MAX31855 MM 13/06/25
;La broche SO va prendre successivement la valeur de chaque bit du registre.
; scanné poids fort en tête
;transmission ,défaut,température
#picaxe 08M2
#no_data
symbol CLK=C.1 ; pulse horloge
symbol CSB=C.2 ;demande lecture _____/
symbol SO=pinC.3 ;bit de donnée serial out
symbol def=bit0
symbol cpt=b1
symbol temp=b2
symbol varw=w13 ;var temporaire
symbol temptherm=w11 ;tempé thermocouple
setfreq M4
symbol baud=T2400_4
;*****************************
#macro spin(varw) ;macro SPIIN
varw = 0
for cpt = 1 to 16
varw=varw * 2 + SO ;décalage à gauche + SO (0 ou 1)
pulsout CLK,1 ;pulse horloge
next cpt
#endmacro
;************************************
pause 500
high CSB ;première conversion
Do
pause 200 ;200ms
low CSB ;lecture registre
spin(temptherm) ;exécution macro 16 premiers bits (poid fort en tête
high CSB ;nouvelle conversion
;*****defaut **********************
def=temptherm//2 ;isol bit défaut
;**** temp thermocouple ******************************
temptherm=temptherm/4 ;suppression des 2 derniers bits
if temptherm>=$2000 then ;test 1er bit des 14 bits pour valeur négative
temptherm=0 ;fixé à 0 si négatif
endif
temptherm=temptherm/4 ;suppression des décimales-> val entière
temptherm=temptherm//256 ;valeur entière ; on garde les 8 derniers bits
temp=temptherm
serout C.0, baud,(temp,def) ;liaison RS232
loop

;chauffage solaire douche piscine 17/06/25
;T panneau par thermocouple et liaison RS232
#picaxe 20M2
setfreq M16
symbol pano=C.7
symbol Pbal=B.5
symbol DSbalon=C.5
symbol LCD=B.0
symbol circBal=outpinB.1
symbol Tpano =b1
symbol selec=pinC.6
symbol valid=pinC.0
symbol Tbalon =b2
symbol Cbalon =b3
symbol varb =b4
symbol delt =b11
symbol Ident =b12
symbol cpt =b13
symbol cumul =w13
symbol baud =N2400_16
symbol baudT =T2400_16
symbol def =bit0
dirsC=%0
dirsB=%00011111
pullup %1111111100000000
;****************************************
pause 500
serout LCD, baud,(254,1)
serout LCD, baud,(254,130,"Pa Ba ")
serout LCD, baud,(254,148,"C",254,192,"Tß",254,212,"P" ) ;ß=alt+0223 => ° sur LCD
do
cumul=0
for cpt=0 to 3
serin [20000,erreur],C.7,baudT,Tpano,def ;reception Tpano timeout 5s
cumul=cumul+Tpano
next
if def<>0 then erreur
Tpano=cumul/4
readtemp DSbalon,Tbalon ;sur C.5
readadc Pbal, Cbalon
serout LCD, baud,(254,194,#Tpano," ",254,198,#Tbalon," ", 254,154,#Cbalon," ")
pause 200
gosub gescirc
loop
;*********************************************
gescirc:
if Tbalon>=90 or Tbalon>=Tpano then
circBal=0
endif
varb=Tbalon+5
if Tpano > varb and Cbalon > Tbalon then
circBal=1
else circBal=0
endif
serout LCD,baud,(254,218,#circBal)
return
erreur:
if def <> 0 then
serout LCD,baud,(254,148,"ERR THERMOC=>valid")
else
serout LCD,baud,(254,148,"ERR TEMPSMAX=>valid")
endif
do loop while valid=1 ;attente appui
do loop while valid=0 ;attente relachement
reset
mais a moins d'une erreur lors de la copie ou modification des codes je pencherai pour un problème de liaison entre les pcb
ce qui est compatible avec un fonctionnement correct et au bout d'un moment une mise en erreur
patrick
 
le max31855 est dans un boitier plexo a l'extérieur a l'abri du soleil le thermocouple est connecté directement dessus et il est broché sur le pcb avec le .8M2 ensuite liaison vers le pcb principal avec un 3x0.5 connexion par fiches sur le pcb du 08M2 et sur bornier a vis coté pcb principal ,ça tourne assez longtemps puis j'ai le message de la pièce jointe #153
Ok, c'est bien une erreur thermocouple , écrasée par la lecture de la consigne ballon qui est en 154, sur la même ligne. Faudra mettre un peu d'ordre dans les affichages...
Cette erreur vient de la liaison TC - boitier. je ne vois pas d'autre raison
On peut essayer d'augmenter le temps entre les envois, dans cette séquence:
Code:
pause 200     ;200ms
       low CSB            ;lecture registre            
       spin(temptherm)    ;exécution macro 16 premiers bits (poid fort en tête    
       high CSB                ;nouvelle conversion    
       ;*****defaut **********************        
       def=temptherm//2        ;isol bit défaut

remplacer pause 200 par pause 400
On voit aussi le bit défaut "def" , c'est lui qui génère l'alarme quand il n'est pas =0
il est transmis dans cette ligne, en même temps que la tempé lue:
serout C.0, baud,(temp,def) ;liaison RS232
On peut faire un essai en supprimant les contrôles d'erreur et voir ce qui se passe
par ex en supprimant les crochets et placer un; devant le if def
serin C.7,baudT,Tpano,def ;reception Tpano timeout 5s
et
;if def<>0 then erreur
MM
 
J'ai le thermocouple que j'ai remplacé qui est sur le montage chauffage solaire avec piscine jaccuzi etc il tourne a merveille depuis plusieurs heures et la T est exactement la même que celle des DS qui sont groupés, l'étalonnage est parfait et le code fonctionne bien je vais vérifier si mon système de chauffage douche piscine est en défaut ou ok
 
Encore en défaut mais ça as passé en validant, ce soir je regarde mon code
Patrick
Ben oui, l'appui sur validation provoque le reset du programme, comme une coupure d'alim, mais ça ne résout pas le problème;
Essaye de supprimer les alarmes (voir fin #156) on verra peut être mieux les anomalies, si il y en a...
A mon avis, ce n'est pas un pb de code, c'est plutôt matériel, genre mauvais contact ou défaut TC .
MM
 
j'ai changé la liaison entre les pcb je suis passé sur du câble téléphone blindé et pour le moment ça tourne ,je verrai demain lorsque ça va chauffer ,il était temps que je change la DS par le TC la T dans le panneau vas passer les 250 vu le temps annoncé cette semaine , a quoi était sensée servir la 10k variable ?
 
Back
Top