Régularisation thermique sous sol

Bonjour Michel j'ai mesuré la consommation de courant pour voir ce qui pouvait faire chauffer le 7805 j'ai 8 MA de conso générale et se je déconnectes le LCD il reste 4 MA ce n'est pas grand chose mais le 7805 est assez chaud pour que ça pique un peut si on touche avec le dos d'un doigt mais apparemment il peut être assez chaud si je regarde ce qui est écrit donc je considère que c'est logique .
patrick
 
Bonjour Patrick,
En fait, ce qui fait chauffer un composant, c'est la puissance dissipée.
Ici, si le 7805 chute 12-5= 7V, avec un courant de 8mA (ce qui me parait très peu) , la puissance dissipée est 7 x 8 = 56 mW, ce qui est quasi rien pour lui, rien ne devrait chauffer.
J'ai un doute sur la mesure.
MM
 
Bonjour Michel j'ai refait la mesure, calibre 200 ma lecture 0,8
J'ai installé une fiche sous mes. boitiers comme ça plus besoin d'ouvrir pour reprogrammer
Patrick
 

Attachments

  • IMG_20250717_141715.jpg
    IMG_20250717_141715.jpg
    85.5 KB · Views: 2
J'ai refait la mesure avec un ampèremètre, mais c'est un produit chinois je croirais d'avantage mon contrôleur même si ce n'est pas du matériel professionnel ,120 milliampères avec le LCD et 40 milliampères sans le LCD j'ai fait les mesures sur l'alimentation 12v en amont de tous les condos
Patrick
 

Attachments

  • IMG_20250717_191246.jpg
    IMG_20250717_191246.jpg
    85 KB · Views: 0
  • IMG_20250717_191349.jpg
    IMG_20250717_191349.jpg
    84.5 KB · Views: 0
Bonjour Michel j'ai refait la mesure, calibre 200 ma lecture 0,8
J'ai installé une fiche sous mes. boitiers comme ça plus besoin d'ouvrir pour reprogrammer
Patrick
0.8 su un calibre 200mA ce n'est pas réaliste...Je ne sais pas comment tu fais cette mesure, mai attention aux erreurs de manip. sur cette gamme.
Pour mesurer le courant, le plus sûr est de placer une R en série dans l'alimentation, avant le régulateur genre 22 ou 47 ohm. et de mesurer la tension aux bornes : 100mA donne une tension de R x 0.1 = 2,2V ou 4,7V , on reste en dessous des 7V de chute avec 5V en sortie donc, le courant consommé ne change pas.
Je ne sais pas comment est branché l'afficheur chinois, mais les mesures me paraissent plus réalistes.
MM
 
bonjour l'afficheur chinois est en série sur un des conducteurs de l'alim( tout comme mon contrôleur ) avec une alimentation du son LCD a part , je mesurerai la température du 7805 j'ai un thermomètre ir il faut juste que je lui installe une pile
 
J'ai mesuré 35 degrés et c'est pareil pour les 2 autres systèmes c'est que le boîtier étant plus petit j'ai les doigts qui touchent le 7805 plus facilement que dans les autres boitiers et j'ai trouvé que c'était chaud mais fausse idée
Patrick
 
bonjour et meilleurs vœux pour cette nouvelle année qui je l'espère sera meilleure que celle qui vient de s'achever, ce n'est pas sur mais il faut espérer, j'ai un petit soucis ,tout fonctionnais bien, a part quelques valeurs extravagantes relevées par la sonde intérieure, mais j'ai éloigné la sonde et son câble d'une câble électrique qui je pense créai des perturbations, mais maintenant c'est la sonde extérieure qui fait des siennes, j'ai commencer par la changer, jusqu'à 1 degrés c'est ok, mais dés que la température passe en dessous de zéro, retour d'affichage 150 250 voir 300 degrés, des valeurs impossibles pour la sonde et surtout complétement fausses, que se passe t'il ? moi je n'en ai aucune idée .
 
bonjour et meilleurs vœux pour cette nouvelle année qui je l'espère sera meilleure que celle qui vient de s'achever, ce n'est pas sur mais il faut espérer, j'ai un petit soucis ,tout fonctionnais bien, a part quelques valeurs extravagantes relevées par la sonde intérieure, mais j'ai éloigné la sonde et son câble d'une câble électrique qui je pense créai des perturbations, mais maintenant c'est la sonde extérieure qui fait des siennes, j'ai commencer par la changer, jusqu'à 1 degrés c'est ok, mais dés que la température passe en dessous de zéro, retour d'affichage 150 250 voir 300 degrés, des valeurs impossibles pour la sonde et surtout complétement fausses, que se passe t'il ? moi je n'en ai aucune idée .
Bonjour patrick et meilleurs vœux,
Ce n'est pas un défaut, mais simplement le fait que les valeurs négatives ne sont pas traitées par le soft.
Que souhaites tu ? Afficher les valeurs négatives ou bloquer les valeurs négatives à 0, (plus simples).
Je suppose que les valeurs négatives n'entrainent pas de mouvement de trappes, et qu'elles sont fermées. On peut les afficher sans aucuns traitement.
A suivre...
MM
 
Bonjour Michel oui il suffit de bloquer les températures a 0 , heureusement que j'avais anticipé en débranchant l'alimentation, j'étais parti quelques jours et vu la température extérieure les trappes seraient ouvertes, il faudra que je fasse la même chose sur mon ouverture de Serre que je suis en train de faire et sur la régulation de mes panneaux solaires, sinon c'est la cata,au lieu de chauffer je vais faire un glaçon avec mon ballon d'eau chaude 😅je suppose qu'il suffit de dire a la picaxes de bloquer a 0 , mais je ne sais pas trop comment, et je connais une âme charitable qui va me dire comment faire, merci
Patrick
 
pourtant dans la chapitre lectemp on bloque a 0 ,ça ne devrait pas lire en dessous de 0.

;regulation thermique sous sol 08/07/25
;Gestion 2 moteurs et 4 FdC sur 20M2
;Tempsmax mouvement trappes 10s =>erreur FdC: reset par poussoir sur B.5
;TN=trappe Nord; TS=trappe Sud ;O=ouverte F=fermée
;Trappes en transit ;ni ouvert ni fermé => "T"
;Flag sur défaut FdC => arrêt jusqu'à reset
;Ajout hystérésis + moyenne sur 4 mesures
;Ajout temporisation entre comparaisons + affichage temps
;Ajout test FDC
#picaxe 20M2
setfreq M16
symbol LCD=B.0
symbol Potar=C.7
symbol DSext=C.1
symbol DSint=C.2
symbol FCFS = pinC.6 ;Fin course fermeture sud (0=fermé)
symbol FCOS = pinC.5 ;fin course ouverture sud (0=ouvert)
symbol FCFN = pinC.4
symbol FCON = pinC.3
symbol CTON = B.1 ;commande trappe ouverture nord
symbol CTFN = B.2 ;commande trappe fermeture nord
symbol CTOS = B.3
symbol CTFS = B.4
symbol pous=pinB.5 ;poussoir reset alarme
symbol flag=bit0
symbol Text=b1
symbol Tint=b2
symbol Cgn=b3
symbol hyster=b4
symbol Textmaj=b5
symbol Textmin=b6
symbol Tintmaj=b7
symbol Tintmin=b8
symbol cpt=b9 ;compteur
symbol TN=b10
symbol TS=b11
symbol pretime=w10
symbol Tmax=w11
symbol reste=w12
symbol cumul=w13
symbol baud=N2400_16
dirsC =%0
dirsB = %11111
pullup %111100000100000 ;pullup sur C.3 à C.6 et B.5
hyster=1 ;hystérésis +/- hyster
Tmax=10 ;0=pas de tempo
;*************************
pause 500 ;temps init LCD
serout LCD, baud,(254,1)
serout LCD, baud,(254,130,"int ext Cgn TS TN",254,192,"T")
serout LCD, baud,(254,212,"T restant: ")
;scan FdC MST
gosub testFDC
TN="T" : TS="T"
if FCFS=0 then ;C.6
TS="F"
elseif FCOS=0 then ;C.5
TS="O"
endif
if FCFN=0 then ;C.4
TN="F"
elseif FCON=0 then ;C.3
TN="O"
endif

gosub lectemp ;1èrelecture pour initialisation
serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,203,#Cgn," ",254,207,TN,254,210,TS)
reste=Tmax-time
serout LCD, baud,(254,223,#reste," s " )
gosub compare

do ;boucle principale
do
pause 1 ;bug simu
if flag=1 then
do loop while pous=1 ;appui
do loop while pous=0 ;relachement pous
serout LCD, baud,(254,148," "); raz alarme
flag=0 ;raz flag
endif

if time<>pretime then ; 1 lecture et 1 affichage/s
if Tmax>time then ;sinon => <0
reste=Tmax-time ;calcul reste
else reste=0
endif
gosub lectemp
serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,203,#Cgn," ",254,207,TN,254,210,TS)
serout LCD, baud,(254,223,#reste," s " )
pretime=time
endif
loop while reste>0
;on compare les tempés toutes les X s
gosub compare
loop

lectemp:
;gosub testFDC ; option test FDC
readadc potar, Cgn ;lecture consigne sur C.7
Cgn = 15 * Cgn /250 + 15 ; de 15 à 30 °C
readtemp Dsext,Text
Textmaj=Text+hyster ;valeur majorée
if Text>hyster then
Textmin=Text-hyster ;valeur minorée
else
Textmin=0 ;on bloque à 0
endif
readtemp DSint,Tint
Tintmaj=Tint+hyster ;valeur majorée
if Tint>hyster then
Tintmin=Tint-hyster ;valeur minorée
else Tintmin=0
endif
return

testFDC:
if FCFS=0 and FCOS=0 then
serout LCD, baud,(254,148," DEFAUT FC NORD")
do loop while pous=1
do loop while pous=0
reset
endif
if FCFN=0 and FCON=0 then
serout LCD, baud,(254,148," DEFAUT FC SUD")
do loop while pous=1
do loop while pous=0
reset
endif
return

compare: ;avec hystérésis
if Tintmaj > Cgn and Textmin < Tint then ; ouverture trappe
gosub ouvre
elseif Tintmaj < Cgn and Textmin > Tint then
gosub ouvre
elseif Textmin > Cgn and Tintmin > Cgn then ;fermeture trappe
gosub ferme
elseif Tintmin < Cgn and Textmin <Tint then
gosub ferme
endif
time=0
return

ouvre: ;C.3
if FCON =1 then ;le fdc n'est pas en position ouverture (=0)
high CTON ;commande ouverture trappe nord (5V)
time=0
do
if FCFN=1 then ;le fdc n'est plus en position fermeture
TN="T"
serout LCD, baud,(254,207,TN) ;donc on est en transit
endif
loop while FCON=1 and time<10 ;FCON=C.3 => trappe nord ouverte
low CTON
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCOS")
flag=1 ;flag mémo erreur
else
TN="O"
serout LCD, baud,(254,207,TN)
endif
endif
if FCOS=1 then
high CTOS ;sortie ouverture à 1 (5V)
time=0
do
if FCFS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCOS=1 and time<10 ;FCOS=C.5 => porte ouverte
low CTOS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCON")
flag=1
else
TS="O"
serout LCD, baud,(254,210,TS)
endif
endif
return

ferme: ;C.1
if FCFN =1 then ;fermeture trappe nord
high CTFN ;commande fermeture trappe nord à 1 (5V)
time=0
do
if FCON=1 then
TN="T"
serout LCD, baud,(254,207,TN)
endif
loop while FCFN=1 and time<10 ;FCFN=C.4 => porte ouverte
low CTFN
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFS")
flag=1
else
TN="F"
serout LCD, baud,(254,207,TN)
endif
endif

if FCFS=1 then ;fermeture trappe sud
high CTFS ;commande fermeture trappe sud à 1 (5V)
time=0
do
if FCOS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCFS=1 and time<10 ;FCFS = C.6
low CTFS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFN")
flag=1
else
TS="F"
serout LCD, baud,(254,210,TS)
endif
endif
return
 
pourtant dans la chapitre lectemp on bloque a 0 ,ça ne devrait pas lire en dessous de 0.


lectemp:
;gosub testFDC ; option test FDC
readadc potar, Cgn ;lecture consigne sur C.7
Cgn = 15 * Cgn /250 + 15 ; de 15 à 30 °C
readtemp Dsext,Text
Textmaj=Text+hyster ;valeur majorée
if Text>hyster then
Textmin=Text-hyster ;valeur minorée
else
Textmin=0 ;on bloque à 0
endif
readtemp DSint,Tint
Tintmaj=Tint+hyster ;valeur majorée
if Tint>hyster then
Tintmin=Tint-hyster ;valeur minorée
else Tintmin=0
endif
return

testFDC:
if FCFS=0 and FCOS=0 then
serout LCD, baud,(254,148," DEFAUT FC NORD")
do loop while pous=1
do loop while pous=0
reset
endif
if FCFN=0 and FCON=0 then
serout LCD, baud,(254,148," DEFAUT FC SUD")
do loop while pous=1
do loop while pous=0
reset
endif
return

compare: ;avec hystérésis
if Tintmaj > Cgn and Textmin < Tint then ; ouverture trappe
gosub ouvre
elseif Tintmaj < Cgn and Textmin > Tint then
gosub ouvre
elseif Textmin > Cgn and Tintmin > Cgn then ;fermeture trappe
gosub ferme
elseif Tintmin < Cgn and Textmin <Tint then
gosub ferme
endif
time=0
return

ouvre: ;C.3
if FCON =1 then ;le fdc n'est pas en position ouverture (=0)
high CTON ;commande ouverture trappe nord (5V)
time=0
do
if FCFN=1 then ;le fdc n'est plus en position fermeture
TN="T"
serout LCD, baud,(254,207,TN) ;donc on est en transit
endif
loop while FCON=1 and time<10 ;FCON=C.3 => trappe nord ouverte
low CTON
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCOS")
flag=1 ;flag mémo erreur
else
TN="O"
serout LCD, baud,(254,207,TN)
endif
endif
if FCOS=1 then
high CTOS ;sortie ouverture à 1 (5V)
time=0
do
if FCFS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCOS=1 and time<10 ;FCOS=C.5 => porte ouverte
low CTOS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCON")
flag=1
else
TS="O"
serout LCD, baud,(254,210,TS)
endif
endif
return

ferme: ;C.1
if FCFN =1 then ;fermeture trappe nord
high CTFN ;commande fermeture trappe nord à 1 (5V)
time=0
do
if FCON=1 then
TN="T"
serout LCD, baud,(254,207,TN)
endif
loop while FCFN=1 and time<10 ;FCFN=C.4 => porte ouverte
low CTFN
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFS")
flag=1
else
TN="F"
serout LCD, baud,(254,207,TN)
endif
endif

if FCFS=1 then ;fermeture trappe sud
high CTFS ;commande fermeture trappe sud à 1 (5V)
time=0
do
if FCOS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCFS=1 and time<10 ;FCFS = C.6
low CTFS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFN")
flag=1
else
TS="F"
serout LCD, baud,(254,210,TS)
endif
endif
return
Bonsoir,
Non, on ne bloque pas les t négatives, on vérifie que les écarts des hystérésis sont suffisants pour ne pas passer en négatif.
Voici un correctif de lectemp qui bloque les mesures négatives sur Text et Tint (prudence...)
Code:
lectemp:  ;sub lecture des DS18B20 (toutes les 10 mn)    
    ;gosub testFDC ; option test FDC  
    readtemp Dsext,Text
    If Text>127 then :Text=0:endif
    Textmaj=Text+hyster    ;valeur majorée
    if Text>hyster then       
        Textmin=Text-hyster     ;valeur minorée
    else
        Textmin=0            ;on bloque à 0   
    endif      
    readtemp DSint,Tint 
    If Tint>127 then :Tint=0:endif            
    Tintmaj=Tint+hyster    ;valeur majorée
    if Tint>hyster then       
        Tintmin=Tint-hyster    ;valeur minorée
    else Tintmin=0   
    endif   
    return
A tester
MM
 
Bonjour Michel j'ai essayé mais ça ne vas pas je n'ai plus de consigne ,alors j'ai rétabli les lignes du code pour le potar mais rien de changé ,et ça veut toujours ouvrir vu que affichage consigne =0 et temp ext=0 temp int =12 c'est logique, je n'ai pas du rétablir assez de code pour que le potar fonctionne,
;regulation thermique sous sol 08/07/25
;Gestion 2 moteurs et 4 FdC sur 20M2
;Tempsmax mouvement trappes 10s =>erreur FdC: reset par poussoir sur B.5
;TN=trappe Nord; TS=trappe Sud ;O=ouverte F=fermée
;Trappes en transit ;ni ouvert ni fermé => "T"
;Flag sur défaut FdC => arrêt jusqu'à reset
;Ajout hystérésis + moyenne sur 4 mesures
;Ajout temporisation entre comparaisons + affichage temps
;Ajout test FDC
#picaxe 20M2
setfreq M16
symbol LCD=B.0
symbol Potar=C.7
symbol DSext=C.1
symbol DSint=C.2
symbol FCFS = pinC.6 ;Fin course fermeture sud (0=fermé)
symbol FCOS = pinC.5 ;fin course ouverture sud (0=ouvert)
symbol FCFN = pinC.4
symbol FCON = pinC.3
symbol CTON = B.1 ;commande trappe ouverture nord
symbol CTFN = B.2 ;commande trappe fermeture nord
symbol CTOS = B.3
symbol CTFS = B.4
symbol pous=pinB.5 ;poussoir reset alarme
symbol flag=bit0
symbol Text=b1
symbol Tint=b2
symbol Cgn=b3
symbol hyster=b4
symbol Textmaj=b5
symbol Textmin=b6
symbol Tintmaj=b7
symbol Tintmin=b8
symbol cpt=b9 ;compteur
symbol TN=b10
symbol TS=b11
symbol pretime=w10
symbol Tmax=w11
symbol reste=w12
symbol cumul=w13
symbol baud=N2400_16
dirsC =%0
dirsB = %11111
pullup %111100000100000 ;pullup sur C.3 à C.6 et B.5
hyster=1 ;hystérésis +/- hyster
Tmax=10 ;0=pas de tempo
;*************************
pause 500 ;temps init LCD
serout LCD, baud,(254,1)
serout LCD, baud,(254,130,"int ext Cgn TS TN",254,192,"T")
serout LCD, baud,(254,212,"T restant: ")
;scan FdC MST
gosub testFDC
TN="T" : TS="T"
if FCFS=0 then ;C.6
TS="F"
elseif FCOS=0 then ;C.5
TS="O"
endif
if FCFN=0 then ;C.4
TN="F"
elseif FCON=0 then ;C.3
TN="O"
endif

gosub lectemp ;1èrelecture pour initialisation
serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,203,#Cgn," ",254,207,TN,254,210,TS)
reste=Tmax-time
serout LCD, baud,(254,223,#reste," s " )
gosub compare

do ;boucle principale
do
pause 1 ;bug simu
if flag=1 then
do loop while pous=1 ;appui
do loop while pous=0 ;relachement pous
serout LCD, baud,(254,148," "); raz alarme
flag=0 ;raz flag
endif

if time<>pretime then ; 1 lecture et 1 affichage/s
if Tmax>time then ;sinon => <0
reste=Tmax-time ;calcul reste
else reste=0
endif
gosub lectemp
serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,203,#Cgn," ",254,207,TN,254,210,TS)
serout LCD, baud,(254,223,#reste," s " )
pretime=time
endif
loop while reste>0
;on compare les tempés toutes les X s
gosub compare
loop

;lectemp:
;gosub testFDC ; option test FDC
readadc potar, Cgn ;lecture consigne sur C.7
Cgn = 15 * Cgn /250 + 15 ; de 15 à 30 °C
readtemp Dsext,Text
; Textmaj=Text+hyster ;valeur majorée
; if Text>hyster then
; Textmin=Text-hyster ;valeur minorée
; else
; Textmin=0 ;on bloque à 0
; endif
; readtemp DSint,Tint
; Tintmaj=Tint+hyster ;valeur majorée
; if Tint>hyster then
; Tintmin=Tint-hyster ;valeur minorée
; else Tintmin=0
; endif
; return
lectemp: ;sub lecture des DS18B20 (toutes les 10 mn)
;gosub testFDC ; option test FDC
readtemp Dsext,Text
If Text>127 then :Text=0:endif
Textmaj=Text+hyster ;valeur majorée
if Text>hyster then
Textmin=Text-hyster ;valeur minorée
else
Textmin=0 ;on bloque à 0
endif
readtemp DSint,Tint
If Tint>127 then :Tint=0:endif
Tintmaj=Tint+hyster ;valeur majorée
if Tint>hyster then
Tintmin=Tint-hyster ;valeur minorée
else Tintmin=0
endif
return

testFDC:
if FCFS=0 and FCOS=0 then
serout LCD, baud,(254,148," DEFAUT FC NORD")
do loop while pous=1
do loop while pous=0
reset
endif
if FCFN=0 and FCON=0 then
serout LCD, baud,(254,148," DEFAUT FC SUD")
do loop while pous=1
do loop while pous=0
reset
endif
return

compare: ;avec hystérésis
if Tintmaj > Cgn and Textmin < Tint then ; ouverture trappe
gosub ouvre
elseif Tintmaj < Cgn and Textmin > Tint then
gosub ouvre
elseif Textmin > Cgn and Tintmin > Cgn then ;fermeture trappe
gosub ferme
elseif Tintmin < Cgn and Textmin <Tint then
gosub ferme
endif
time=0
return

ouvre: ;C.3
if FCON =1 then ;le fdc n'est pas en position ouverture (=0)
high CTON ;commande ouverture trappe nord (5V)
time=0
do
if FCFN=1 then ;le fdc n'est plus en position fermeture
TN="T"
serout LCD, baud,(254,207,TN) ;donc on est en transit
endif
loop while FCON=1 and time<10 ;FCON=C.3 => trappe nord ouverte
low CTON
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCOS")
flag=1 ;flag mémo erreur
else
TN="O"
serout LCD, baud,(254,207,TN)
endif
endif
if FCOS=1 then
high CTOS ;sortie ouverture à 1 (5V)
time=0
do
if FCFS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCOS=1 and time<10 ;FCOS=C.5 => porte ouverte
low CTOS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCON")
flag=1
else
TS="O"
serout LCD, baud,(254,210,TS)
endif
endif
return

ferme: ;C.1
if FCFN =1 then ;fermeture trappe nord
high CTFN ;commande fermeture trappe nord à 1 (5V)
time=0
do
if FCON=1 then
TN="T"
serout LCD, baud,(254,207,TN)
endif
loop while FCFN=1 and time<10 ;FCFN=C.4 => porte ouverte
low CTFN
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFS")
flag=1
else
TN="F"
serout LCD, baud,(254,207,TN)
endif
endif

if FCFS=1 then ;fermeture trappe sud
high CTFS ;commande fermeture trappe sud à 1 (5V)
time=0
do
if FCOS=1 then
TS="T"
serout LCD, baud,(254,210,TS)
endif
loop while FCFS=1 and time<10 ;FCFS = C.6
low CTFS
if time>= 10 then
serout LCD, baud,(254,148," DEFAUT FCFN")
flag=1
else
TS="F"
serout LCD, baud,(254,210,TS)
endif
endif
return
 
Bonjour Michel j'ai essayé mais ça ne vas pas je n'ai plus de consigne ,alors j'ai rétabli les lignes du code pour le potar mais rien de changé ,et ça veut toujours ouvrir vu que affichage consigne =0 et temp ext=0 temp int =12 c'est logique, je n'ai pas du rétablir assez de code pour que le potar fonctionne,
Bonjour,
Le fait de bloquer la t° à 0 ne modifie pas l'affichage de consigne.
A voir
MM
 
La version #255 date du 08 07, la dernière dans ma doc est du 14 07.
Voici cette version, avec la modif du blocage des T° négatives:
Code:
;regulation thermique sous sol 14/07/25
;Gestion 2 moteurs et 4 FdC sur 20M2
;Tempsmax mouvement trappes 10s =>erreur FdC: reset par poussoir sur B.5
;TN=trappe Nord; TS=trappe Sud ;O=ouverte F=fermée
;Trappes en transit ;ni ouvert ni fermé => "T"
;Flag sur défaut FdC => arrêt jusqu'à reset
;Ajout hystérésis + moyenne sur 4 mesures
;Ajout temporisation entre comparaisons + affichage temps
;Ajout test FDC
;Ajout blocage T° négatives 050126
#picaxe 20M2
;setfreq M16
symbol LCD=B.0
symbol Potar=C.7
symbol DSext=C.1
symbol DSint=C.2
symbol FCFS = pinC.6 ;Fin course fermeture sud (0=fermé)
symbol FCOS = pinC.5 ;fin course ouverture sud    (0=ouvert)
symbol FCFN = pinC.4
symbol FCON = pinC.3
symbol CTON = B.1 ;commande trappe ouverture nord
symbol CTFN = B.2 ;commande trappe fermeture nord
symbol CTOS = B.3
symbol CTFS = B.4
symbol pous=pinB.5 ;poussoir reset alarme
symbol flag=bit0
symbol Text=b1
symbol Tint=b2
symbol Cgn=b3
symbol hyster=b4
symbol Textmaj=b5
symbol Textmin=b6
symbol Tintmaj=b7
symbol Tintmin=b8
symbol cpt=b9        ;compteur
symbol TN=b10
symbol TS=b11
;symbol sg=b12
symbol pretime=w10
symbol Tmax=w11
symbol reste=w12
symbol memo=w13
symbol baud=N2400
dirsC =%0
dirsB = %11111
pullup %111100000100000 ;pullup sur C.3 à C.6 et B.5
hyster=1        ;hystérésis +/- hyster
Tmax=1800        ;0=pas de tempo Tmax ducycle en s 30 mn=0x60=1800
;*************************
pause 500 ;temps init LCD
serout LCD, baud,(254,1)    ;Effacement LCD
serout LCD, baud,(254,130,"int ext  Cgn TN TS",254,192,"T")
serout LCD, baud,(254,212,"Trestant: " )
;scant FdC MST
  
    pretime=1000        ;ini prétime n'importe quoi <>0
    gosub testFDC
    TN="T" : TS="T"    ;valeurs à priori, modifiées ensuite suivant les tests
    if FCFS=0 then            ;C.6    trappeS en FCfermée
            TS="F"
    elseif FCOS=0 then    ;C.5    trappe S en FC ouverte
            TS="O"
    endif
    if FCFN=0 then            ;C.4
            TN="F"
    elseif FCON=0 then     ;C.3
            TN="O"
    endif
  
    gosub lectemp    ;1ère lecture pour initialisation
    readadc potar, Cgn     ;lecture consigne sur C.7
    Cgn = 15 * Cgn /250 + 15 ; de 15 à 30 °C mise à l'échelle
    serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,203,#Cgn," ",254,207,TN,254,210,TS)  
    gosub compare    ;première comparaison  ;pas de tempo à la MST
      
    do             ;boucle principale cycle =Tmax
        time=0    ;initialisation  compteur de secondes  time       
        do
            if flag=1 then            ;on a eu une alarme
                do loop while pous=1    ;appui
                do loop while pous=0    ;relachement pous
                serout LCD, baud,(254,148,"             "); raz alarme
                flag=0        ;effacement flag
            endif          
              
            if time<>pretime then    ; 1ère fois, pretime = 1000 => on entre dans if.Passage suivant au changement time
                readadc potar, Cgn     ;lecture consigne sur C.7
                Cgn = 15 * Cgn /250 + 15 ; de 15 à 30 °C mise à l'échelle
                serout LCD,baud,(254,203,#Cgn," ")    ;affichage Cgn
                pretime=time            ;pretime prend la valeur actuelle pour prochain test
                memo=time//300    ;memo= reste de la division de time par 600 (càd 600 ; 1200
                if memo= 0 then         ;toutes les 600 s
                    gosub lectemp        ;on va lire les valeurs et les afficher  
                    serout LCD, baud,(254,194,#Tint," ",254,198,#Text," ",254,207,TN,254,210,TS)
                endif
            endif          
            if Tmax>=time then        ;sinon valeur "négatives"
                reste=Tmax-time    ;calcul reste
                serout LCD, baud,(254,222,#reste," s "  )    ;affichage reste
            endif              
        loop while reste>0        ;On tourne jusqu'à reste=0
    ;on compare les tempés toutes les Tmax sec
        gosub compare        ;sub comparaison avec modif trappe séventuelles
    loop        ;fin de cycle Tma
lectemp:  ;sub lecture des DS18B20 (toutes les 10 mn)   
    ;gosub testFDC ; option test FDC 
    readtemp Dsext,Text
    If Text>127 then :Text=0:endif
    Textmaj=Text+hyster    ;valeur majorée
    if Text>hyster then      
        Textmin=Text-hyster     ;valeur minorée
    else
        Textmin=0            ;on bloque à 0  
    endif     
    readtemp DSint,Tint
    If Tint>127 then :Tint=0:endif           
    Tintmaj=Tint+hyster    ;valeur majorée
    if Tint>hyster then      
        Tintmin=Tint-hyster    ;valeur minorée
    else Tintmin=0  
    endif  
    return

testFDC:
    if FCFS=0 and FCOS=0 then        ;cofiguration impossible
        serout LCD, baud,(254,148," DEFAUT FC SUD")
        do loop while pous=1
        do loop while pous=0
        reset
    endif
    if FCFN=0 and FCON=0 then
        serout LCD, baud,(254,148," DEFAUT FC NORD")
        do loop while pous=1
        do loop while pous=0
        reset
    endif  
    return

compare:            ;Comparaison avec hystérésis et mouvement trappes
    if Tintmaj > Cgn and Textmin < Tint then ; ouverture trappe
        gosub ouvre
    elseif Tintmaj < Cgn and Textmin > Tint then
        gosub ouvre
    elseif Textmin > Cgn and Tintmin > Cgn then ;fermeture trappe
        gosub ferme
    elseif Tintmin < Cgn and Textmin <= Tint then
        gosub ferme
    endif
    return

ouvre: ;C.3  
    if FCON =1 then    ;le fdc n'est pas en position ouverture (=0)
        high CTON ;commande ouverture trappe nord (5V)      
        time=0
        do
            if FCFN=1 then        ;le fdc n'est plus en position fermeture
                TN="T"
                serout LCD, baud,(254,207,TN)    ;donc on est en transit
            endif
        loop while FCON=1 and time<10 ;FCON=C.3 => trappe nord ouverte
        low CTON
        if time>= 10 then
            serout LCD, baud,(254,148," DEFAUT FCON")
            flag=1        ;flag mémo erreur
        else
            TN="O"      
            serout LCD, baud,(254,207,TN)
        endif      
    endif
    if FCOS=1 then      
        high CTOS ;sortie ouverture à 1 (5V)
        time=0
        do
            if FCFS=1 then
                TS="T"
                serout LCD, baud,(254,210,TS)
            endif
        loop while FCOS=1 and time<10 ;FCOS=C.5 => porte ouverte
        low CTOS
        if time>= 10 then
            serout LCD, baud,(254,148," DEFAUT FCOS")
            flag=1
        else
            TS="O"
            serout LCD, baud,(254,210,TS)
        endif          
    endif
    return

ferme: ;C.1  
    if FCFN =1 then ;fermeture trappe nord
        high CTFN ;commande fermeture trappe nord à 1 (5V)
        time=0
        do
        if FCON=1 then
            TN="T"
            serout LCD, baud,(254,207,TN)
        endif
        loop while FCFN=1 and time<10 ;FCFN=C.4 => porte ouverte
        low CTFN
        if time>= 10 then
            serout LCD, baud,(254,148," DEFAUT FCFN")
            flag=1
        else
            TN="F"
            serout LCD, baud,(254,207,TN)
        endif
    endif  
  
    if FCFS=1 then ;fermeture trappe sud
        high CTFS ;commande fermeture trappe sud à 1 (5V)
        time=0
        do
            if FCOS=1 then  
                TS="T"  
                serout LCD, baud,(254,210,TS)
            endif
        loop while FCFS=1 and time<10 ;FCFS = C.6
        low CTFS
        if time>= 10 then
            serout LCD, baud,(254,148," DEFAUT FCFS")
            flag=1
        else
            TS="F"
            serout LCD, baud,(254,210,TS)
        endif
    endif  
return
Je n'ai pas regardé la différene des détails entre les deux.
Apparemment, la simu fonctionne.
A tester
PS : Je suppose qu'il est anormal que les trappes restent ouvertes avec une T°ext =0
Petite modif qui pallie le pb : elseif Tintmin < Cgn and Textmin <= Tint then
La modif est rectifiée au dessus (22 heures)
MM
 
Last edited:
si je suis resté sur la version du 08 07 c'est paracerque les suivantes étaient pour tenter de régler le problème de décompte qui se fait toutes les 2 secondes ,j'ai testé cet après midi si j'introduit la ligne de code lectemp: ;sub lecture des DS18B20 (toutes les 10 mn) le retour de consigne disparait ,mais demain matin j'essai ce nouveau code .
merci patrick
 
bonjour Michel j'ai rentré le code ça tourne mais pour le moment je ne fait pas de manœuvre vu la température extérieure je ferai des essais en condition réelle lorsque les températures seront plus clémentes.
Bonne journée
patrick
 
Back
Top