Edité le 20 Juillet 2007
Je vous propose l'évolution de notre montage précédent. Après cette version "1",
voici une détection de niveau avec une gestion sur 3 sondes.
Les deux sondes (haute et basse) sont identiques au montage précédent, la troisième
sonde quant à elle sera dédiée à la détection de l'humidité du terrain, nous ajoutons
de "l'intelligence" au système qui activera l'arrosage en fonction de l'humidité
du sol et à condition que la cuve d'eau de pluie soit pleine !!!
Le montage en cours d'essai... Les relais de sondes seront remplacés par des
"interrupteurs électroniques " de la famille CD 4066. Moins de consommation et du silence
en font le principal atout...
Edité le 22 Juillet 2007
Aperçu de l'étude de l'implantation des composants
(Merci à René )
Ce typon sera finalisé après les choix en composants.
Les sondes seront toujours gérées par notre 4001 puisque ce composant
dispose de 4 Portes donc de 4 sondes possibles.
La partie commutation sera assurée par le 4066 (à droite sur le projet)
L'hésitation se fait maintenant sur le choix en sortie :
Relais (avec la consommation importante), ou triac avec tous les problèmes
d'étude des quadrants et filtrages pour éviter les parasitages secteur...
et l'implantation d'un opto pour la sécurité...
ou encore le "tout" basse tension avec une commutation thyristor ???
Des choix restent à faire...
Edité le 7 Septembre 2007
Choix retenus et difficultés à résoudre...
Il a fallu faire un choix et décider des options techniques pour l'élaboration de notre maquette :
L'alimentation se fera par une alimentation 220/ 12 volts avec régulation 5 volts pour
l'alimentation du PIC.
Le choix du 220 volts a été retenu compte tenu du fait que l'élément "pompe" est un modèle 220 volts,
un système d'aspiration en TBT n'aurait pas assez d'autonomie pour assurer l'arrosage de notre terrain...
(sans parler de l'importante aspiration à obtenir pour notre cuve...)
Le 4066 sera présent pour commuter "en silence" les sondes...
Le 4011 doté d'un inverseur en sortie de sonde de commande assure toujours la logique de détection...
La sortie sera du type opto coupleur et triac pour rester dans la logique du tout silence...
Edité le 8 Septembre 2007
Les "grandes lignes" de ce cahier des charges sont maintenant tracées.
Les deux difficultés à résoudre sont :
1/ La mise au point de la sonde connectée sur RB4 chargée de détecter le niveau d'humidité.
Actuellement, je teste l'ajout d'un simple ajustable sur la masse permettant de "décaler" le
niveau logique par rapport à cette masse, ceci permettra d'obtenir une "largeur" plus ou moins
étroite du niveau de déclenchement...
Il restera tout de même une importante question si vous souhaitez comme moi mettre en service
cette automatisation, la profondeur de la sonde dans le sol, il faudra trouver le juste milieu de détection...
Pour ma part, je fais des essais (en même temps que la mise au point de la sonde), dans plusieurs bacs
humidifiés à différents seuils, utile pour "calibrer" le niveau de déclenchement désiré.
2/ La sortie sur triac.
Le déclenchement de la pompe se fait par triac via un opto pour la sécurité totale du montage.
L'opto retenu est le modèle "MOC 3041 (qui dans ce cas précis est en fait un opto triac)
Les motifs de ce choix :
Il est facile à trouver chez votre revendeur habituel,
Coût raisonnable,
Il intègre (et c'est le principal atout de ce composant) une détection de passage à zéro, ce
qui signifie qu'il commute "à vide" permettant ainsi un minimum de parasitages sur le réseau
220 volts de votre habitation. Du coup nous pouvons nous affranchir de l'ajout d'un filtrage
supplémentaire de type LC toujours délicat à calculer et encombrant pour notre application !
(Merci les datasheet !)
Le programme
En attendant que j'établisse le schéma de principe final, je vous laisse méditer sur le programme ( et oui mon
programmeur que je remercie a été nettement plus rapide pour élaborer le soft !!!)
Pour les commentaires, le principe du système à 2 sondes a été conservé, il a été rajouté le mode Sleep pour les
économies d'énergie (future application en TBT pourquoi pas), le chien de garde en cas de plantage, et l'ajout de la
fameuse sonde prioritaire sur RB4 chargée de détecter le niveau d'humidité et lancer le système en cas de manque d'eau.
A noter également dans les évolutions techniques, les diodes de visualisations des états.
(bien pratique en cas de défaut des sondes)
A savoir :
Visualisation de la sonde Basse
Visualisation de la sonde Haute
Visualisation de l'état d'humidité
Marche de la pompe
LE PROGRAMME
;**********************************************************************
; Automatisation du fonctionnement d'une pompe d'arrosage ; mise en *
; marche sur interrupteur M/A et si le détecteur d'humidité indique *
; un manque d'eau dans le sol ; régulation sur contact haut et bas *
; *
; tableau de vérité *
; ----------------- *
; (manque humidité) *
; Contact1 (humid=RB4) F F F F O O O O *
; Contact2 (bas=RB5) F F O O F F O O *
; Contact3 (haut=RB6) F O F O F O F O *
; --------------------------------------- *
; 1 2 3 4 5 6 7 8 *
; *
; 1 = marche *
; 2 = contact haut découvert --> attendre remplissage complet *
; 3 = contact bas découvert/contact haut couvert --> impossible *
; 4 = pas d'eau *
; 5 = assez d'humidité + réservoir plein *
; 6 = assez d'humidité + contact haut découvert *
; 7 = assez d'humidité + défaut *
; 8 = assez d'humidité + pas d'eau *
; *
; on utilisera le PORTB avec les résistances de pull-up (attention *
; les signaux seront inversés, uniquement sur PORTB).Les pattes *
; RB1,RB2,RB3 sont configurées en sorties et on envoie 5v dessus ; *
; les pattes RB4, RB5 et RB6 sont configurées en entrées pour *
; réceptionner ces 5v si les contacts sont fermées par le niveau *
; de l'eau. Pour que la pompe démarre, il faut que : *
; 1)- le contact qui détermine le degré d'humidité *
; du sol soit fermé (RB4). *
; 2)- le contact bas soit fermé (RB5) *
; 3)- le contact haut soit fermé (RB6) *
; *
; Quand la pompe a démarré, on teste : *
; - le contact bas. Tant qu'il est fermé, la pompe tourne *
; - le contact d'humidité. Tant qu'il est fermé, la pompe tourne *
;
; Pour éviter les redémarrages intempestifs, on arrête la pompe à *
; la première coupure et on ne la redémarre que lorsque le contact *
; haut est à nouveau fermé (le niveau d'eau est remonté). *
; Le mode sleep (économie) et le watchdog (plantage)ont été *
; intégrés. *
; Le PORTA est utilisé comme suit : *
; - RA0=commande moteur *
; - RA1=LED verte = démarrage moteur *
; - RA2=LED jaune = manque d'eau ; le contact haut n'est *
; pas couvert *
; - RA3=défaut ; le contact bas n'est pas couvert et le *
; contact haut l'est *
; - RB0= LED verte = humidité suffisante *
; *
; Date : 5/8/07 *
; Auteur : Briola *
;**********************************************************************
; Fichier requis: P16F84a.inc *
;**********************************************************************
LIST p=16F84a ; Définition de processeur
#include <p16F84a.inc> ; Définitions des constantes
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC
; '__CONFIG' précise les paramètres encodés dans le processeur au moment
; de la programmation du processeur. Les définitions sont dans le fichier
; include.
; _CP_OFF Code protection OFF
; _PWRTE_ON Timer reset sur power-on en service
; _WDT_ON Watch-dog en service
; _XT_OSC Oscillateur quartz moyenne vitesse
;*********************************************************************
; DECLARATIONS DE VARIABLES *
;*********************************************************************
CBLOCK 0x00C ; début de la zone variables
tempo_1 : 1 ;
tempo_11 : 1 ;
tempo_111 : 1 ;
ENDC ; Fin de la zone
;**********************************************************************
; DEMARRAGE SUR RESET *
;**********************************************************************
org 0x000 ; Adresse de départ après reset
goto init ;
;*********************************************************************
; INITIALISATIONS *
;*********************************************************************
; initialisation et configuration du PORTB
init
bsf STATUS,RP0 ; passer banque1
movlw b'01110000' ; RB4, RB5 et RB6 en entrées
movwf TRISB ; le reste du PORTB en sorties
movlw b'00000000' ; configuration du PORTA
movwf TRISA ; en sorties
; mise en service des resistances de pull-up
movlw b'00001111' ; RB7=0 --> resistances de pull-up en service
movwf OPTION_REG ; RB6=0 --> interruption sur transition de 1 à 0
; RB3=1 --> prédiviseur sur watchdog
; RB2/RB0=1 prédiviseur à 128
; initialisation des interruptions
bcf STATUS,RP0 ; bank0
movlw b'00000000' ; pas d'interruptions
movwf INTCON ;
goto start ;
;*********************************************************************
; PROGRAMME PRINCIPAL *
;*********************************************************************
start ; attention dans tout ce passage on est en logique
; inverse
clrwdt ;
clrf PORTA ; efface le PORTA
clrf PORTB ; efface le PORTB
bcf PORTB,1 ; on envoie 5v sur RB1
bcf PORTB,2 ; on envoie 5v sur RB2
bcf PORTB,3 ; on envoie 5v sur RB3
sommeil
sleep ; passe en mode sleep ; quand il y a débordement du watchdog
; le programme continue simplement à l'instruction suivante
bcf PORTB,0 ; éteindre la LED verte témoin d'humidité
btfsc PORTB,4 ; on teste le contact d'humidité RB4
goto humidite ; si humidité suffisante allumer LED et retour au mode sleep
btfsc PORTB,6 ; sinon on teste le contact haut
goto manque ; si ouvert retour sur mode sleep
btfsc PORTB,5 ; si fermé, on teste le contact bas RB5
goto defaut ; si le contact bas est ouvert : impossible-->defaut
bsf PORTA,0 ; si toujours fermé, démarrer pompe
bsf PORTA,1 ; allumer LED témoin verte
clrwdt ;
btfsc PORTB,4 ; tester le contact d'humidité RB4
goto humidite ; si humidité suffisante allumer LED et retour au mode sleep
btfss PORTB,5 ; tester le contact bas RB5
goto $-4 ; si toujours fermé, boucler sur le test
bcf PORTA,0 ; si ouvert, arrêter pompe
bcf PORTA,1 ; éteindre LED témoin
goto start ; arrêt
defaut
bsf PORTA,3 ; allumer LED "défaut"
call delai_1 ;
goto fin ;
humidite
bcf PORTA,0 ; arrêter le moteur
bcf PORTA,1 ; éteindre LED témoin verte
bsf PORTB,0 ; allumer LED "humidité" ; attention, RB0 étant utilisé
; en sortie, il n'y a pas de résistance de pull-up d'où 'bsf'
; pourquoi n'avoir pas utilisée la dernière sortie du PORTA
; parce qu'elle fonctionne en drain ouvert et n'est pas
; utilisable.
call delai_1 ; temporise 1s
goto sommeil
manque
bsf PORTA,2 ; allumer LED "manque"
call delai_1 ; temporise 1s
goto sommeil
;--------------------o------------------------------------------------
; temporisation de 1s (avec quartz 4Mhz)
delai_1
movlw d'100' ;
movwf tempo_1 ;
delai_11
movlw d'50' ;
movwf tempo_11 ;
delai_111
movlw d'50' ;
movwf tempo_111 ;
delai_1111
clrwdt
decfsz tempo_111,f ;
goto delai_1111 ;
decfsz tempo_11,f ;
goto delai_111 ;
decfsz tempo_1,f ;
goto delai_11 ;
return
fin
nop
END ; directive fin de programme
Et le fichier "Hex" si vous souhaitez le tester sur platine d'essai...
Les programmes
Pompe à 3 sondes
(hex)
A l'aimable autorisation de l'auteur
Fichier asm pour modification du programme à votre convenance.
(après modification une recompilation est nécessaire -
.hex pour le processeur PIC)
N'hésitez pas à me faire part de vos améliorations !!!
"L'include "du 16F84
(L'ensemble des "include" de la famille PIC sont disponibles sur le site du fabricant
www.microchip.com ) -- Important pour vos compilations...
L'ensemble des fichiers (compressé au format rar)
A bientôt pour la suite.