[Numérique] Besoin d'un coup de main pour un cablage de CI NE555 - Page 3
Répondre à la discussion
Page 3 sur 3 PremièrePremière 3
Affichage des résultats 61 à 72 sur 72

Besoin d'un coup de main pour un cablage de CI NE555



  1. #61
    invitebe7773af

    Re : Besoin d'un coup de main pour un cablage de CI NE555


    ------

    J'dirais 2, ça m'a l'air plus évolutif. Merci.

    Yank

    -----

  2. #62
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Bonjour,

    Ok, je pense aussi que c'est une bonne solution. Le menu va représenter un bonne partie du programme final

    Après l'exclusion du 20X2, cause aux 4 hpwm non utilisables indépendamment (destinés à commander des ponds et demi ponds) et les petits problèmes de time sur le 20M2,

    la meilleure solution serait le kit AXE 401, pour le prix, il inclut le picaxe 28X2, une plaque d'assemblage,etc,etc...bref, à médité:
    http://www.gotronic.fr/art-kit-shiel...401k-17941.htm
    voir la fiche technique. (Précision, je ne suis le représentant de personne et je ne vends rien)

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  3. #63
    invitebe7773af

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Woh. ça commence à dépasser (et de loin) mes (maigres) connaissances en électronique. Je ne sais pas ce qu'est un S.H.I.E.L.D., mais si je peux intégrer une organisation secrète, tant mieux ! ^^ (Comprennes qui pourra ^^)
    Bon, très bien, ça avance, c'est extra... Merci encore, je serais surement encore à tenter de câbler des trucs improbables si t'avais pas foutu le nez la dedans, c'est.... hmmm, je crois que le vrai terme est "généreux". Alors encore Merci.

    Je me penche dessus dans la semaine prochaine histoire de faire le clair sur la liste de course et sur le plan de cablage, parce que ça devient fourni pour mon petit cerveau !

    Yank

  4. #64
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Je ne suis pas un spécialiste arduino, mais je croix savoir que la notion de "shield" estune de leur trouvaille, l'arduino est la base, avec le µC et les alim et les E/S du µC sur des connecteurs, les shields sont des extensions propres à chaque application, qui se fixent sur les connecteurs. Tout comme l'AXE 401 qui est disent ils compatible avec ls shield arduino, je n'ai pas vérifié.

    "Généreux"... j'ai pas encore parlé des "compensations". En fait, c'est la possibilité, si le projet abouti, d'ajouter un page à la liste des réalisations des "forumeurs":

    Comme celle ci :
    http://electromag1.wifeo.com/portail...utomatique.php

    ou celle là, d'un autre forum
    http://electromag1.wifeo.com/chrono-agility.php

    Je réfléchis un peu au menu possible

    MM
    Dernière modification par mag1 ; 10/12/2015 à 20h40.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  5. #65
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Bonjour,

    Sauf surprise, le système est quasiment près.

    Un détail, si le même ventilo assure les fonctions "refroidissement" en marche "continue", il fonctionne par intermittence en mode "renouvellement". Quelle serait la fréquence dans cette fonction?

    Je propose un système idem irrigation, par ex 15 s de fonctionnement toutes les X minutes. Ok?

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  6. #66
    invitebe7773af

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Salut !

    Désolé de l'attente, c'est un brin le rush en ce moment...

    Alors, concernant le ventilo de "renouvellement" : Le même système que l'irrigation me convient très bien. Au niveau de l'intervalle, 15 secondes serait parfait. Merci !

    Yank

  7. #67
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Citation Envoyé par LelogindeYank Voir le message
    Salut !

    Désolé de l'attente, c'est un brin le rush en ce moment...

    Alors, concernant le ventilo de "renouvellement" : Le même système que l'irrigation me convient très bien. Au niveau de l'intervalle, 15 secondes serait parfait. Merci !

    Yank
    Bonjour,

    En attendant, la proposition picaxe de gestion de la serre est terminée, elle répond au cahier des charges ci dessous:

    Les deux rampes leds chaudes et froides sont sélectionnées par un interrupteur connecté au picaxe.
    Les autres paramètres sont entrés par un menu disponible à tout moment, en appuyant sur le poussoir (déclenche une interruption)
    Un potentiomètre permet de balayer les options du menu, le poussoir valide

    Méthode:
    Appui poussoir -> menu -> affichage d'un sous menu par potar -> validation du sous menu par poussoir -> réglage du paramètre par potar -> validation et retour au menu par poussoir
    Chaque option du menu est accompagnée du réglage correspondant
    Les options du menu et réglages des paramètres:

    1- Puissance leds de 0 à 100%
    2- Puissance brassage de 0 à 100%
    3- T° de consigne de la régulation de température T°-1°C, on chauffe ; T°+1°C, on ventille
    4- Cycle d'irrigation: 1 mn toutes le X minutes avec X=0 à 40 mn
    5- Temps d'allumage leds chaudes: X heures /24 h, avec X =0 à 24
    6- Temps d'allumage des leds froides : X heures /24h avec X=0 à 24
    7- Cycle renouvellement d'air : ventillation 15 s toutes les X minutes avec X= 0 à 40 mn
    8- Sortie du menu. Mémorisation des paramètres. Retour au programme principal et poursuite du cycle de 24 H

    Un LCD affiche l'ensemble des paramètres, sur 4 lignes
    Leds sélectionnées, le temps d'éclairage programmé de cette rampe, le temps passé en heures dans le cycle, t° consigne, t° lue
    Dans cette configuration, la variable time s'incrémente toutes les 3 s (env). Après étalonnage, cette base de temps est stable.
    ETC, voir photo jointe
    Le volume du programme est au max des possibilités du 20M2. On ne peut rien ajouter, mais le programme n'est pas optimisé
    Images attachées Images attachées  
    Dernière modification par mag1 ; 16/12/2015 à 21h24.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  8. #68
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Bonjour,

    Voici le schéma du circuit, ajout d'un poussoir reset pour réinitialiser le cycle de 24 H.
    Un gosub a fait économiser 200 octets. On peut peaufiner un peu la présentation.
    Vu le nombre réduit de composants, une petite plaque véroboard suffirait

    MM
    Images attachées Images attachées  
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  9. #69
    invitee6c3c18d

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    salut; Je n'ai rien suivi au sujet mais l'absence de résistance de grille sur chaque Mosfet me fait tiqué, c'est un oubli ? Difficile de donner une valeur exacte facilement mais j'ai vu du 47 à 300 ohms selon les cas.

  10. #70
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Citation Envoyé par ranarama Voir le message
    salut; Je n'ai rien suivi au sujet mais l'absence de résistance de grille sur chaque Mosfet me fait tiqué, c'est un oubli ? Difficile de donner une valeur exacte facilement mais j'ai vu du 47 à 300 ohms selon les cas.
    Cette Rg est ignorée dans les notes d'interfaces picaxes ( IRL520 Ciss=500pF et ici, IRL530 et 800pF). Donc, j'ai rien mis, sinon, avec 5 V et 20mA max sur la sortie, en considérant que les 900pF déchargés comme un C/C , ça fait 250ohms.
    Dans cette appli, j'aurai plutôt tendance à supprimer aussi les 10k.
    Les puristes seront d'un autre avis.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  11. #71
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Bonjour,

    C'est la fin de l'année, l'époque des cadeaux....
    Voici le programme répondant au CDC (et un peu plus) de Yank, si il est encore intéressé.
    La précision de la seconde sur 24 h n'est pas garantie, il faudrait une horloge temps réelle (entrées I2C libres). Mais elle n'est peut être pas nécessaire.

    Code:
    #picaxe 20M2	;directive picaxe utilisé (fac.)
    ;noms broches
    symbol LCD		=C.0
    symbol Chauffe	=B.0	;sortie chauffage
    symbol sorbrass	=B.1
    symbol choixmenu	=B.3	;ADC 
    symbol Pomp		=B.4	;sortie pompe
    symbol sondeT	=B.6	;readtemp DS18B20
    symbol Ventil	=C.4	;sortie ventil
    symbol led0		=C.5
    symbol led1		=C.3
    symbol led		=pinC.6
    ;noms variables bit
    symbol finmenu=bit0
    symbol memoirrig=bit1
    symbol memoair=bit2
    symbol memoled=bit3
    ;noms variables byte
    symbol tempelu=b1
    symbol consigTempe=b2
    symbol air=b3
    symbol affirrig=b4
    symbol puisled=b5
    symbol irrig=b6
    symbol tempoled1=b7
    symbol tempoled0=b8
    symbol affair=b9
    symbol brass=b10
    symbol tempoled=b11
    symbol toprenouv=b12
    symbol topirrigat=b13
    symbol htime=b14
    symbol affled=b15
    ;noms variables word
    symbol memotime=w10
    symbol memotime2=w11
    symbol memotime1=w12
    symbol vartemp=w13	;variable temporaire (vie courte)
    ;noms constantes
    symbol baud=N4800_32
    symbol temp24=27100	;nbre d'incrémentations de time en 24h dans cette configuration
    					; une incrémentation = 3,2 s env
    symbol tpsirrig=18	;temps irrigation 18x3,2=57,6 s
    symbol tpsrenouv=5	;temps renouvelement air 5x3,2=16 s
    ;*****************************************************************
    	setfreq M32			;fréquence picaxe 32MHz
    	pullup %100001001000000		;pullup sur C.1 , C.6 et B.6
    	pause 500	;tempo init LCD
    	read 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair
    	gosub convers			;conversion param horloge 24 heures
    	pwmout sorbrass,249,0	;activation pwm sortie brassage
    	serout C.0,baud,(254,1)	;RAZ LCD
    	setint %00000,%00010	;interruption niv 0 sur C.1
    	gosub affichtxt		;affichage fond d'écran
    	gosub affichval		;affichage paramètres enregistrés 
    	memoled=not led		;pour passer par le reglage pwmout
    	time=0
    ;******* programme principal ************
    	do 		
    		if time >temp24 then	;fin cycle 24 h
    				time=0			;RAZ time
    		endif
    		gosub choixled		;lecture du switch led et ajustement temps cycle
    		gosub regultemp		;régulation de température sorties chauffage/ventilation		
    		gosub tempocycle	;réglage du cycle en ft des leds sélectionnées	
    		gosub irrigat		;temporisation irrigation
    		gosub renouvair		;temporisation renouvellement d'air
    		gosub brassage		;réglage puissance brassage
    		gosub lectempe		;lecture de la sonde de température DS18B20
    		gosub affichval		;affichage et actualisation des paramètres
    	loop
    	end	;fin programme principal
    ;***************************************************************	
    choixled:
    	if led<>memoled then		;pour ne passer qu'en cas de changement	
    		vartemp=puisled*10		;vartemp de 0 à 1000 (250 x 4)
    		if led=0 then
    			pwmout led1, off		;arret PWM sur led1 
    			pwmout led0,249,vartemp ; start pwm led0 1000Hz
    			tempoled=tempoled0	;chargement val mémorisée				
    			memoled=%0			;mémo leds en fonction (froides)		
    			affled="F"			;val affichage leds froides
    				else
    			pwmout led0,off			;arret leds froides
    			pwmout led1,249,vartemp ;start pwm leds chaudes
    			tempoled=tempoled1			
    			memoled=%1			;mémo leds en fonction (chaudes)
    			affled="C"
    		endif
    	endif 
    	return
    	
    lectempe:	
    	if memotime<>time then
    		readtemp sondeT,tempelu		;lecture de la température
    	memotime=time	;pour attendre le prochain changement de time	
    	endif	
    	
    	return
    	
    regultemp:	
    	If  tempelu > consigtempe  then
    		high Ventil : low chauffe	;surchauffe, on chauffe pas et on ventille	
    	elseif tempelu < consigtempe and memoair=1 then
    		high Ventil : high chauffe	;on chauffe mais on ventille (dans cycle ventilation)
    	elseif tempelu < consigtempe and memoair=0 then
    		low ventil:high chauffe		;on chauffe sans ventiller (hors cycle ventilation)
    	elseif tempelu = consigtempe and memoair=1 then
    		high Ventil : low chauffe	;dans la bande de régulation mais on ventille cause cycle
    	else low Ventil : low chauffe		;dans tous les autres cas, on ne fait rien
    	endif
    	return
    	
    brassage:
    	vartemp=brass*10
    	pwmduty sorbrass,vartemp
    	return
    	
    tempocycle:
    	vartemp=temp24/24
    	htime=time/vartemp
    	vartemp=puisled*10	
    	if led=0 and htime<=tempoled0 then		
    		pwmduty led0,vartemp
    	elseif	led=1 and htime<=tempoled1 then
    		pwmduty led1,vartemp	
    	else
    		pwmduty led0,0
    		pwmduty led1,0
    	endif
    	return
    	
    irrigat:	
    	topirrigat=time//irrig		;modulo temps irrigation
    	if topirrigat <>0 and memoirrig =0 then		;si modulo=0 ou memo=0
    		return
    	endif
    	if topirrigat=0 then		;on est dans le modulo=0
    		memotime1=time+tpsirrig		;on mémorise le temp présent +temps d'ouverture,ici 18 unités time
    	endif
    	if memotime1>time then 		;on pas rattraper le temps mémorisé
    		memoirrig=1			;memoirrig=0, la porte reste ouverte
    		high pomp			;pompe sur marche
    	else
    		 memoirrig=0		;on a rattrapé le temps mémorisé,on ferme la porte
    		low pomp			;arret de la pompe
    	endif
    	return
    	
    renouvair:
    	toprenouv=time//air
    	if toprenouv <>0 and memoair =0 then
    		return
    	endif
    	if toprenouv=0 then
    		memotime2=time+tpsrenouv
    	endif
    	if memotime2>time then 
    		memoair=1
    		high ventil
    	else
    		 memoair=0
    		;low ventil par regulation tempé,même ventilo
    	endif
    	return
    	
    convers:
    	air=temp24/24/60*affair	
    	irrig=temp24/24/60*affirrig		;interval irrigation en mn
    	return
    
    affichtxt:
    	serout LCD,baud,(254,128,"Led TC/TP TßCo Tßlue ")
    	serout LCD,baud,(254,148,"PLed Vent Irri Brass")	
    	return
    	
    affichval:
    	serout LCD,baud,(254,212,#puisled,"%",254,217,#affair,"m",254,222,#affirrig,"m",254,227,#brass,"%")
    	serout LCD,baud,(254,193,affled,254,196,#htime,"/",#tempoled," ",254,202,#consigtempe,"ß",254,207,#tempelu,"ß")
    	;serout LCD,baud,(254,192,affled,254,196,#time,254,202,#consigtempe,"ß",254,207,#tempelu,"ß");test time
    	return
    ;*******************************************************	
    interrupt:		;sous programme MENU
    	serout LCD,baud,(254,1)		;RAZ LCD
    	do loop while pinC.1=0		;attente relachement poussoir
    	finmenu=%0				;on tourne jusqu'a ce que ce bit passe à 0
    	do 
    		readadc choixmenu, vartemp
    		select case vartemp
    			case >200			 
    			gosub mretour 
    			case >175
    			gosub mrenouvel
    			case >150
    			gosub mtempfroid
    			case >125
    			gosub mtempchaud
    			case >100
    			gosub mirrig
    			case >75
    			gosub mconsgtemp
    			case >50
    			gosub mbrass
    			case>=0
    			gosub mpuisled
    		endselect
    	loop while finmenu=%0		;sortie de boucle avec finmenu=1 
    	return				;d'où return prog principal
    efface:
    	serout LCD,baud,(254,192, "                    ")
    	return
    	
    mbrass:
    	serout LCD,baud,(254,128, "2-Brassage         ")	;titre
    	serout LCD,baud,(254,192, #brass,"%    ")	;affichage variable enregistrée
    	if pinC.1= 1 then return :endif	;si on appuie pas sur le poussoir,retour dans la boucle
    	do loop while pinC.1=0			;on a appuyé ! On passe au réglage
    	Do
    		readadc choixmenu,vartemp	;lecture du potard
    		vartemp=100*vartemp/255		;mise à l'échelle
    		serout LCD,baud,(254,192,"reg  ",#vartemp," %      ")	;affichage, ici 0 à 100%			
    	loop while pinC.1=1			;on boucle tant que l'on appuie pas
    	brass=vartemp				;mise à jour variable, ici brass
    	do loop while pinC.1=0			;attente relachement
    	gosub efface				;effacement ligne 2
    	return
    	
    mpuisled:
    	serout LCD,baud,(254,128, "1-Puissance leds    ")
    	serout LCD,baud,(254,192, #puisled,"%    ");de 0 à 100%
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=100*vartemp/255		
    		serout LCD,baud,(254,192,"reg ",#vartemp,"%    ")	;de 0 à 100%			
    	loop while pinC.1=1
    	puisled=vartemp	
    	do loop while pinC.1=0
    	gosub efface
    	return
    	
    mconsgtemp:
    	serout LCD,baud,(254,128, "3-Consigne temperat ")
    	serout LCD,baud,(254,192, #consigtempe,"ßC   ")	;de 20 à 30°C
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=10*vartemp/255 +20		
    		serout LCD,baud,(254,192,"reg ",#vartemp,"ßC   ")				
    	loop while pinC.1=1
    	consigtempe=vartemp	
    	do loop while pinC.1=0
    	gosub efface
    	return
    	
    mirrig:
    	serout LCD,baud,(254,128, "4-Cycle irrigation  ")
    	serout LCD,baud,(254,192, #affirrig,"mn    ")	;de 20 à 30°C
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=40*vartemp/255 
    		affirrig=vartemp
    		serout LCD,baud,(254,192,"reg ",#affirrig,"mn   ")	; de 1 à 40 mn			
    	loop while pinC.1=1	
    	do loop while pinC.1=0
    	gosub efface
    	return
    	
    mtempchaud:
    	serout LCD,baud,(254,128, "5-Cycle leds chaudes")		
    	serout LCD,baud,(254,192, #tempoled1,"h/24 ");heures sur 24 heure
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=24*vartemp/255
    		tempoled1=vartemp
    		serout LCD,baud,(254,192,"reg " ,#tempoled1,"h/24 ")	;heures sur 24 heure			
    	loop while pinC.1=1	
    	gosub efface
    	do loop while pinC.1=0	
    	return
    	
    mtempfroid:
    	serout LCD,baud,(254,128, "6-Cycle leds froides")
    	serout LCD,baud,(254,192, #tempoled0,"h/24 ");heures sur 24 heure
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp 
    		vartemp=24*vartemp/255	
    		tempoled0=vartemp
    		serout LCD,baud,(254,192,"reg ",#tempoled0,"h/24 ")	;heures sur 24 heure			
    	loop while pinC.1=1	
    	do loop while pinC.1=0
    	gosub efface
    	return
    	
    mrenouvel:
    	serout LCD,baud,(254,128, "7-Cycle renouvel air")
    	serout LCD,baud,(254,192, #affair,"mn   ")	
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=40*vartemp/255 
    		affair=vartemp
    		serout LCD,baud,(254,192,"reg ",#affair,"mn   ")	; de 1 à 40 mn			
    	loop while pinC.1=1	
    	do loop while pinC.1=0
    	gosub efface
    	return
    	
    mretour:
    	serout LCD,baud,(254,128, "8-Retour            ")
    	gosub efface
    	if  pinC.1=1 then return:endif
    	 finmenu=1
    	write 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair
    	gosub convers	;conversion variables affichées en variables de travail 
    	memoled=not led	;pour actualisation éventuelle de la rampe de leds C/F
    	do loop while pinC.1=0	;attente relachement poussoir
    	gosub affichtxt
    	gosub affichval
    	setint %00000,%00010
    	return
    Bonne année

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  12. #72
    mag1

    Re : Besoin d'un coup de main pour un cablage de CI NE555

    Bonjour,

    L'intéressé a confirmé qu'il était toujours intéressé.
    Voici une MAJ du programme, des erreurs en moins, des commentaires en plus.
    J'ai vu aussi une interruption de l'irrigation entre 21h et 7 h? C'est ajouter, à confirmer.
    Code:
    #picaxe 20M2	;directive picaxe utilisé (fac.)
    ;noms broches
    symbol LCD		=C.0	;sortie LCD
    symbol Chauffe	=B.0	;sortie chauffage
    symbol sorbrass	=B.1	;sortie brassage
    symbol choixmenu	=B.3	;ADC 
    symbol Pomp		=B.4	;sortie pompe
    symbol sondeT	=B.6	;readtemp DS18B20
    symbol Ventil	=C.4	;sortie ventil
    symbol led0		=C.5	;sortie leds froides
    symbol led1		=C.3	;sortie leds chaudes
    symbol led		=pinC.6	;entrée choix leds
    ;noms variables bit
    symbol finmenu=bit0		;bit sortie menu
    symbol memoirrig=bit1	;bit memo irrigation en cours
    symbol memoair=bit2 	;bit mémo reneuvellement air en ours
    symbol memoled=bit3		;bit modif choix led
    ;noms variables byte
    symbol tempelu=b1		;tempé lue DS18B20
    symbol consigTempe=b2	;temé consigne régulation
    symbol htime=b3			;heure en cours
    symbol affirrig=b4		;affichage temps cycle irrigation en clair
    symbol puisled=b5		;puissance leds
    symbol tempoled1=b6		;tempo leds chaudes
    symbol tempoled0=b7		;tempo leds froides
    symbol affair=b8		;affichage tempo cycle renouv air
    symbol brass=b9			;puissange brassage
    symbol affled=b10 		;affichage led (F / C)
    symbol tempoled=b11		;tempo leds actuelle
    ;noms variables word
    symbol air=w8			;temps cycle renouvellement air		
    symbol irrig=w9			;temps cycle irrigation	
    symbol memotime=w10		;mémo changement variable time	
    symbol memotime2=w11	;temps fermeture renouvellement air
    symbol memotime1=w12	;temps fermeture irrigation
    symbol vartemp=w13		;variable temporaire (vie courte)
    ;noms constantes
    symbol baud=N4800_32
    symbol temp24=26350	;nbre d'incrémentations de time en 24h dans cette configuration
    				; une incrémentation = 3,2 s env
    symbol tpsirrig=18	;temps irrigation 18x3,2=57,6 s
    symbol tpsrenouv=5	;temps renouvelement air 5x3,2=16 s
    ;*****************************************************************
    	setfreq M32			;fréquence picaxe 32MHz
    	pullup %100001001000000		;pullup sur C.1 , C.6 et B.6
    	pause 500	;tempo init LCD
    	read 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair
    	gosub convers			;conversion param horloge 24 heures
    	pwmout sorbrass,249,0	;activation pwm sortie brassage 1000Hz à 32M 
    	serout C.0,baud,(254,1)	;RAZ LCD
    	setint %00000,%00010	;interruption niv 0 sur C.1
    	gosub affichtxt		;affichage fond d'écran
    	gosub affichval		;affichage paramètres enregistrés 
    	memoled=not led		;pour passer par le reglage pwmout
    	time=0
    ;******* programme principal ************
    	do 		
    		if time >=temp24 then	;fin cycle 24 h
    			time=0		;RAZ time
    		endif
    		gosub choixled		;lecture du switch led et ajustement temps cycle
    		gosub regultemp		;régulation de température sorties chauffage/ventilation		
    		gosub tempocycle		;réglage du cycle en ft des leds sélectionnées	
    		gosub irrigat		;temporisation irrigation
    		gosub renouvair		;temporisation renouvellement d'air
    		gosub brassage		;réglage puissance brassage
    		gosub lectempe		;lecture de la sonde de température DS18B20
    		gosub affichval		;affichage et actualisation des paramètres
    	loop
    	end	;fin programme principal
    ;***************************************************************	
    choixled:
    	if led<>memoled then		;pour ne passer qu'en cas de changement	
    		vartemp=puisled*10		;vartemp de 0 à 1000 (250 x 4)
    		if led=0 then
    			pwmout led1, off		;arret PWM sur led1 
    			pwmout led0,249,vartemp ; start pwm led0 1000Hz
    			tempoled=tempoled0	;chargement val mémorisée				
    			memoled=%0			;mémo leds en fonction (froides)		
    			affled="F"			;val affichage leds froides
    		else
    			pwmout led0,off			;arret leds froides  
    			pwmout led1,249,vartemp ;start pwm leds chaudes
    			tempoled=tempoled1			
    			memoled=%1			;mémo leds en fonction (chaudes)
    			affled="C"
    		endif
    	endif 
    	return
    ;*******************************************
    lectempe:	
    	if memotime<>time then		
    		readtemp sondeT,tempelu		;lecture de la température		
    	memotime=time	;pour attendre le prochain changement de time	
    	endif		
    	return
    ;*******************************************
    regultemp:	
    	If  tempelu > consigtempe  then
    		high Ventil : low chauffe	;surchauffe, on chauffe pas et on ventille	
    	elseif tempelu < consigtempe and memoair=1 then
    		high Ventil : high chauffe	;on chauffe mais on ventille (dans cycle ventilation)
    	elseif tempelu < consigtempe and memoair=0 then
    		low ventil:high chauffe		;on chauffe sans ventiller (hors cycle ventilation)
    	elseif tempelu = consigtempe and memoair=1 then
    		high Ventil : low chauffe	;dans la bande de régulation mais on ventille cause cycle
    	else low Ventil : low chauffe		;dans tous les autres cas, on ne fait rien
    	endif
    	return
    	
    brassage:
    	vartemp=brass*10
    	pwmduty sorbrass,vartemp
    	return
    	
    tempocycle:
    	vartemp=temp24/24		;nbre incrémentation time pour une heure
    	htime=time/vartemp		;calcul heure en cours
    	vartemp=puisled*10		;puissance led en dutytime
    	if led=0 and htime<=tempoled0 then	;si bonne leds et dans le cycle éclairement	
    		pwmduty led0,vartemp			;MAJ pwm duty
    	elseif	led=1 and htime<=tempoled1 then		;sinon, c'est l'autre...
    		pwmduty led1,vartemp	
    	else
    		pwmduty led0,0		;hors des temps éclairement
    		pwmduty led1,0		;on éteint tout
    	endif
    	return
    	
    irrigat:
    	if htime>=21 or htime <=7 then 	;on est hors du créneau
    		low pomp					;confirmation, au cas où
    		return						;on repart
    	endif
    	vartemp=time//irrig						;modulo temps irrigation
    	if vartemp <>0 and memoirrig =0 then	;si pas modulo=0 et porte fermée,
    		return								;on repart		
    	endif
    	if vartemp=0 then				;on est dans le modulo=0
    		memotime1=time+tpsirrig		;on mémorise le temp présent +temps d'ouverture,voir constantes
    	endif
    	if memotime1>time then 		;on a pas rattrapé le temps mémorisé
    		memoirrig=1				;memoirrig=1, la porte reste ouverte
    		high pomp				;pompe sur marche
    	else
    		 memoirrig=0		;on a rattrapé le temps mémorisé,on ferme la porte
    		low pomp			;arret de la pompe
    	endif
    	return
    	
    renouvair:
    	vartemp=time//air
    	if vartemp <>0 and memoair =0 then
    		return
    	endif
    	if vartemp=0 then
    		memotime2=time+tpsrenouv
    	endif
    	if memotime2>time then 
    		memoair=1	;porte reste ouverte
    		high ventil
    	else
    		 memoair=0	;porte fermée pour le renouvellement air
    		;low ventil par regulation tempé,même ventilo
    	endif
    	return
    	
    convers:
    	air=temp24/24/59*affair		;59 pour compensation arrondi	
    	irrig=temp24/24/59*affirrig		;interval irrigation en unités time
    	return
    
    affichtxt:
    	serout LCD,baud,(254,128,"Led TC/TP TßCo Tßlue ")	;ß=alt+0223 donne ° sur écran chinois
    	serout LCD,baud,(254,148,"PLed Vent Irri Brass")	
    	return
    	
    affichval:
    	serout LCD,baud,(254,212,#puisled,"%",254,217,#affair,"m",254,222,#affirrig,"m",254,227,#brass,"%")
    	serout LCD,baud,(254,193,affled,254,196,#htime,"/",#tempoled," ",254,202,#consigtempe,"ß",254,207,#tempelu,"ß")
    	;serout LCD,baud,(254,192,affled,254,196,#time,254,202,#consigtempe,"ß",254,207,#tempelu,"ß");test time
    	return
    ;*******************************************************	
    interrupt:		;sous programme MENU, intro des variables
    	serout LCD,baud,(254,1)		;RAZ LCD
    	do loop while pinC.1=0		;attente relachement poussoir
    	finmenu=%0				;on tourne jusqu'a ce que ce bit passe à 1
    	do 
    		readadc choixmenu, vartemp
    		select case vartemp
    			case >200			 
    			gosub mretour 
    			case >175
    			gosub mrenouvel
    			case >150
    			gosub mtempfroid
    			case >125
    			gosub mtempchaud
    			case >100
    			gosub mirrig
    			case >75
    			gosub mconsgtemp
    			case >50
    			gosub mbrass
    			case>=0
    			gosub mpuisled
    		endselect
    	loop while finmenu=%0		;sortie de boucle avec finmenu=1 
    	return				;d'où return prog principal
    efface:
    	do loop while pinC.1=0
    	serout LCD,baud,(254,192, "                    ")
    	return
    	
    mbrass:
    	serout LCD,baud,(254,128, "2-Brassage         ")	;titre
    	serout LCD,baud,(254,192, #brass,"%    ")	;affichage variable enregistrée
    	if pinC.1= 1 then return :endif	;si on appuie pas sur le poussoir,retour dans la boucle
    	do loop while pinC.1=0			;on a appuyé ! On passe au réglage
    	Do
    		readadc choixmenu,vartemp	;lecture du potard
    		vartemp=100*vartemp/255		;mise à l'échelle
    		serout LCD,baud,(254,192,"reg  ",#vartemp," %      ")	;affichage, ici 0 à 100%			
    	loop while pinC.1=1			;on boucle tant que l'on appuie pas
    	brass=vartemp				;mise à jour variable, ici brass	
    	gosub efface				;effacement ligne 2
    	return
    	
    mpuisled:
    	serout LCD,baud,(254,128, "1-Puissance leds    ")
    	serout LCD,baud,(254,192, #puisled,"%    ");de 0 à 100%
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=100*vartemp/255		
    		serout LCD,baud,(254,192,"reg ",#vartemp,"%    ")	;de 0 à 100%			
    	loop while pinC.1=1
    	puisled=vartemp	
    	gosub efface
    	return
    	
    mconsgtemp:
    	serout LCD,baud,(254,128, "3-Consigne temperat ")
    	serout LCD,baud,(254,192, #consigtempe,"ßC   ")	;de 20 à 30°C
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=10*vartemp/255 +20		
    		serout LCD,baud,(254,192,"reg ",#vartemp,"ßC   ")				
    	loop while pinC.1=1
    	consigtempe=vartemp	
    	gosub efface
    	return
    	
    mirrig:
    	serout LCD,baud,(254,128, "4-Cycle irrigation  ")
    	serout LCD,baud,(254,192, #affirrig,"mn    ")	;de 20 à 30°C
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=60*vartemp/255 	;entre 0 et 60 mn
    		affirrig=vartemp
    		serout LCD,baud,(254,192,"reg ",#affirrig,"mn   ")				
    	loop while pinC.1=1	
    	gosub efface
    	return
    	
    mtempchaud:
    	serout LCD,baud,(254,128, "5-Cycle leds chaudes")		
    	serout LCD,baud,(254,192, #tempoled1,"h/24 ");heures sur 24 heure
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=24*vartemp/255
    		tempoled1=vartemp
    		serout LCD,baud,(254,192,"reg " ,#tempoled1,"h/24 ")	;heures sur 24 heure			
    	loop while pinC.1=1	
    	gosub efface	
    	return
    	
    mtempfroid:
    	serout LCD,baud,(254,128, "6-Cycle leds froides")
    	serout LCD,baud,(254,192, #tempoled0,"h/24 ");heures sur 24 heure
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp 
    		vartemp=24*vartemp/255	
    		tempoled0=vartemp
    		serout LCD,baud,(254,192,"reg ",#tempoled0,"h/24 ")	;heures sur 24 heure			
    	loop while pinC.1=1	
    	gosub efface
    	return
    	
    mrenouvel:
    	serout LCD,baud,(254,128, "7-Cycle renouvel air")
    	serout LCD,baud,(254,192, #affair,"mn   ")	
    	if pinC.1= 1 then return :endif
    	do loop while pinC.1=0
    	Do
    		readadc choixmenu,vartemp
    		vartemp=60*vartemp/255 
    		affair=vartemp
    		serout LCD,baud,(254,192,"reg ",#affair,"mn   ")	; de 1 à 60 mn			
    	loop while pinC.1=1	
    	gosub efface
    	return
    	
    mretour:	;retour programme principal
    	serout LCD,baud,(254,128, "8-Retour            ")
    	serout LCD,baud,(254,192, "          ")
    	if  pinC.1=1 then return:endif
    	
    	 finmenu=1
    	write 0, b0,puisled,brass,consigtempe,affirrig,tempoled1,tempoled0,affair	;mémo des variables en EEPROM
    	gosub convers	;conversion variables affichées en variables de travail 
    	memoled=not led	;pour actualisation éventuelle de la rampe de leds C/F
    	do loop while pinC.1=0	;attente relachement poussoir
    	gosub affichtxt		;réaffichage titres
    	gosub affichval		;réafichage des variables
    	setint %00000,%00010	;réactivation interruption
    	return
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

Page 3 sur 3 PremièrePremière 3

Discussions similaires

  1. Besoin d'un coup de main pour mon pc...
    Par invite5211c5ed dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 5
    Dernier message: 01/05/2012, 10h15
  2. [Blanc] besoin d'un coup de main pour MàLaver
    Par inviteb8600f37 dans le forum Dépannage
    Réponses: 3
    Dernier message: 25/01/2007, 13h20
  3. besoin d'un coup de main pour du transfert de matière
    Par invitea65c8e4b dans le forum Technologies
    Réponses: 0
    Dernier message: 06/06/2006, 13h38
  4. j'ai besoin d'un coup de main pour série/parallèle
    Par invite109a0ca3 dans le forum Électronique
    Réponses: 3
    Dernier message: 09/04/2003, 20h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...