Code version éco, pour alimentaion sur batterie et panneaux solaires
Dans cette version, l'arrêt moteur est assuré par des FDC ouverture et fermeture
La commande disablebod et sleep déconnecte le µC pendant 2.3s env. Pendant ce temps, le µC ne consomme quasiment rien. Les relais ne sont pas alimentés, reste le pont de mesure qui consomme 230µA, qui seront supprimés si besoin.
Un switch (inter ou strap provisoir) supprime cette mise en sommeil pour régler le seuil de luminosité (par ex).
Le potar introduit un décalage (hystérésis) entre les seuils J/N et supprime la frange d'incertitude.
Il y a donc un cycle de mesure toutes les 2,3s, au lieu de tourner en permanence.
Le programme mesure la luminosité et la compare à un seuil. Si la mesure est passée de l'autre côté de ce seuil, elle est mémorisée, si elle reste de l'autre côté pendant un temps suppérieur à un temps de validation (réglé par le potar tempo).
Le programme place la porte en conformité avec la nouvelle situation.
Pendant ce cycle d'éveil, le programme passe par "ouvreman" pour effectuer si besoin une commande manuelle.
EN CHANTIER!!! ;Porte poules mode éco et FDC MM 080518
#picaxe 20M2
#no_data
symbol potarH=B.5 ;potar hystérésis
symbol potarT=C.2 ;potar tempo en C.2
symbol potarS=C.3 ;potar seuil en C.3
symbol FCO=pinC.4 ;FCO=0 ->FCO fermé-> porte ouverte
symbol FCF=pinC.6 ;FCF=0 ->FCF fermé -> porte fermée
symbol switcheco=pinC.0 ;switch eco C/C pour réglage
symbol LDR=C.7 ;LDR en C.7
symbol ouvre=B.0 ;sortie ouverture
symbol ferme=B.1 ;sortie fermeture
symbol led= B.3 ;led J/N
symbol trans=B.4 ;led état transitoire
symbol ouvman=pinB.6 ;ouverture manuelle
symbol ferman=pinB.7 ;fermeture manuelle
symbol JN=bit0 ;bit J/N 1=jour ; 0=nuit
symbol valJN=bit1 ;validation JN
symbol memoJN=bit2 ;mémo JN
symbol eco=bit3 ;bit mémo eco
symbol hyster=b1 ;valeur hystérésie (0 à 255) : 10=1% env.
symbol seuilH=w10 ;seuil haut avec hystérésis
symbol lum=w13 ;valeur lumière (0 à 1023)
symbol seuil=w12 ;valeur seuil (0 à 1023)
symbol tempo=w11 ;valeur tempo (0 à 1023)
dirsB=%1011 ;B.0,B.1,B.3 en sorties
dirsC=%100000 ;C.5 en sortie inutilisée
pullup %101000111000000 ;pullup sur B.6,B.7,C.0,C.4,C.6
eco=0 ;initialisaion mode éco off
;***** boucle principale *****************
Do
;******test eco *********************
if eco=1 and switcheco=1 then
disablebod
sleep 1 ; mise en mode sleep env 2,4s
enablebod
endif
;****** lecture des réglages ***********
readadc10 LDR, lum ;lecture luminosité
readadc10 potarS,seuil ;lecture seuil J/N
readadc10 potarT,tempo ;lecture temporisation J/N
readadc potarH, hyster
tempo=24*tempo/10 ;max=24*1023/10 = 2455 s (40mn),min=0
seuilH=seuil+255-hyster ; 255-hyster parce que le potar est câblé à l'envers sur le typon
;****** comparateur seuil *********************
If lum >= seuilH then ;comparateur LDR éclairée=val lum forte = jour
JN=1
if switcheco=0 then ;=0:mode eco sur off led J/N s'allume pour réglage
high led ;on est de jour
else low led ;mode éco actif, led J/N éteinte
endif
elseif lum <seuil then
JN=0 : low led ;sinon on est de nuit
endif
;****** mémorisation franchissement du seuil **********
if memoJN<>JN then ;si changement de sens -> RAZ time
eco=0
time=0
endif
memoJN=JN ;memo JN
gosub ouvreman
;******* validation état après temporisation *************
if time>tempo then ;si JN stable pendant un temps tempo (0 à 40 mn)
valJN=JN ;validation de JN dans valJN
time=tempo*2 ;limitation compteur time < 65535
low trans ;extinction led trans
else high trans ;allumage led trans
endif
;******** mouvement porte *******************
If valJN=1 and FCO=1 then ;de jour et porte non ouverte
eco=0
low ferme
high ouvre
elseif valJN=0 and FCF=1 then ;de nuit et porte non fermée
eco=0
low ouvre
high ferme
elseif JN=1 and FCO=0 then ;
eco=1
low ferme
low ouvre
elseif JN=0 and FCF=0 then
eco=1
low ferme
low ouvre
endif
loop
;********* ouverture / fermeture manuelle *************
ouvreman:
if ouvman=0 then ;ouverture manuelle force valJN=1
low ferme
high ouvre
do loop while FCO=1
low ouvre
do loop while ouvman=0
elseif ferman=0 then ;fermeture manuelle force valJN=0
low ouvre
high ferme
do loop while FCF=1
low ferme
do loop while ferman=0
endif
return https://www.ebay.fr/itm/2x-GT2-20Teeth-Poulie-Synchrone-3M-GT2-Courroie-pr-3D-Imprimante-RepRap-Prusa-/162621064410