[Analogique] Mesure du niveau d'eau - Page 5
Répondre à la discussion
Page 5 sur 11 PremièrePremière 5 DernièreDernière
Affichage des résultats 121 à 150 sur 317

Mesure du niveau d'eau



  1. #121
    mag1

    Re : Mesure du niveau d'eau


    ------

    Citation Envoyé par Yex2 Voir le message
    J'ai regardé la vidéo ce matin. Vraiment bien d'avoir mis les trois réservoirs sur deux lignes. Par contre j'ai aussi commandé un 2004 (4 lignes). Alors peut-on faire ceci:

    Réservoir d'eau
    #1 000G 000L 000%
    #2 000G 000L 000%
    #3 000G 000L 000%

    Les G sont des gallons impériaux (4.546 L/ 1 Gallon Impériaux). Le gallons impérial est l'unitité de vente dans ce coin des Antilles.
    Bonjour,

    Et un truc comme ça ?

    Nom : niv eau 2004.jpg
Affichages : 238
Taille : 462,2 Ko

    Avec la valeur globale des réserves d'eau en % et le détail par réservoir en %, litres et Gallons impériaux....

    MM

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

  2. #122
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Bonjour,

    Et un truc comme ça ?

    Pièce jointe 367272

    Avec la valeur globale des réserves d'eau en % et le détail par réservoir en %, litres et Gallons impériaux....

    MM
    Super cool. On va faire comme ça !

  3. #123
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message

    Pour le projet du chalet, il suffit de deux contacteur à flotteurs, un pour déclencher la pompe au niveau bas, et un autre pour l'arrêter au niveau haut, On peut s'amuser à gérer ça avec un 08M2, bien sûr, pour amortir le cordon

    MM
    J'ai justement acheté quelques contacteurs à flotteurs l'année dernière en me disant que ça pourrait servir un jour

    Il s'agirait de mettre on relais magnétique sur l'une des phases du moteur et l'actionner par le picaxe. Donc j'y vais pour deux picaxe 14M2 ?

    Mais sérieusement, je pense qu'avec un Thyristor et deux contacteurs flotteurs on peut arriver à faire démarrer et arrêter le pompe simplement.
    Dernière modification par Yex2 ; 04/06/2018 à 20h33.

  4. #124
    mag1

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    J'ai justement acheté quelques contacteurs à flotteurs l'année dernière en me disant que ça pourrait servir un jour

    Il s'agirait de mettre on relais magnétique sur l'une des phases du moteur et l'actionner par le picaxe. Donc j'y vais pour deux picaxe 14M2 ?

    Mais sérieusement, je pense qu'avec un Thyristor et deux contacteurs flotteurs on peut arriver à faire démarrer et arrêter le pompe simplement.

    Ben, c'est à dire que logiquement, on réfléchit d'abord et on achète ensuite.

    C'est quoi comme moteur? La pompe alimentée par le secteur?
    Et les contacteurs? NO ? NF ?

    Si il y a deux entrées et une commande moteur, un 08M2 suffit, mais il faut définir le projet.

    Commander un moteur AC avec un µC, il y a des interfaces simples, comme ceci:
    https://www.ebay.fr/itm/NEUF-RELAIS-...gAAOSwTglYlUUi


    Pour le projet bateau, as tu les moyens de faire un PCB?
    Quelle connectique ?
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  5. #125
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Ben, c'est à dire que logiquement, on réfléchit d'abord et on achète ensuite.

    C'est quoi comme moteur? La pompe alimentée par le secteur?
    Et les contacteurs? NO ? NF ?

    Si il y a deux entrées et une commande moteur, un 08M2 suffit, mais il faut définir le projet.

    Commander un moteur AC avec un µC, il y a des interfaces simples, comme ceci:
    https://www.ebay.fr/itm/NEUF-RELAIS-...gAAOSwTglYlUUi


    Pour le projet bateau, as tu les moyens de faire un PCB?
    Quelle connectique ?
    MM
    Honnêtement le projet de faire démarrer la pompe automatiquement n'est pas pressant.

    Pour les PCB, j'ai plusieurs pré-perforer que je vais utiliser. Ce sont de petit circuits pas assez compliquer pour me donner le trouble de faire des imprimer.

    Merci MM

    Yex

  6. #126
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    Voici le code complet de la version finale (photo précédente #121):

    Code:
    ;Ex: sonde de niveau capacitive MM 03/06/2018
    ;**** calibration de la sonde par action 3 sec sur le poussoir de validation  ***************
    ;**** La réponse de la comande TOUCH est considérée comme linéaire (elle l'est...)
    ;**** Le sous programme "calib:" mesure deux points arbitraires 0 et 100%  *********
    ;**** mesure de la référence interne de température dans l'émetteur 08M2
    ;**** Ces trois mesures sont mémorisées en EEPROM
    ;**** Calcul de la proportionnalité entre la mesure et les valeurs mémorisées ****
    ;**** Calcul d'une correction de température (par rapport à la t° lors de la calibration)
    ;**** Affichage du Niveau en % et en litres
    ;**** Affiche les étapes successives **************
    
    #picaxe 14M2	;directive picaxe utilisé (pour erreur de commandes)
    setfreq M16		;fréquence 16MHz			
    ;****** Nominations constantes ********
    symbol baud= N2400_16      ;vitesse liaison RS232
    symbol capacit= 316			;capacité réservoir en L
    symbol gallon=6951			;capacité en /100 de Gallon Imp
    ;****** noms variables word *********  
    symbol mesur		= w13    ;(b27,b26)
    symbol compens		= w12    ;(b25,b24)
    symbol bas			= w11    ;ref niveau bas
    symbol memcomp		= w10		;mémo réf compensation t°
    symbol delta		= w9    	;delta haut-bas
    symbol total		= w8		;total réservoirs en %
    symbol varw			= w7		;variable tempotaire
    symbol deb			= w6
    symbol cpt			= w5
    ;***** noms variables bytes ****************
     ; b1,b2,b3,b4 utilisés dans bintoascii
    symbol car		=b5
    symbol dat		=b6
    symbol sonde	=b7
    symbol posi		=b8
    ;******* noms variables bit sur b0 ***********
    symbol rsbit=bit0
    symbol calibr=bit1
    ;******* Nominations ports ***********
    symbol sonde0 	= C.0       ;entrée sonde0 n°broche=8
    symbol sonde1 	= C.1       ;entrés sonde1	n°broche=9
    symbol sonde2	= C.2	      ;entrée sonde2 n°droche=10
    symbol valid  	= pinC.3    ;valeur poussoir de validation
    
    ; Initialisation I2C . pour 14M2:sda sur B.4 ; scl sur B.3
    	hi2csetup i2cmaster,%01001110, i2cfast_16, i2cbyte
    ;** Entrée des données texte dans "table" ***********
    	table 0,(51,50,40,12,6,1)		;initialisation LCD 4 bits
    	table 20,("  calibration 0%    ")
    	table 40,("  mesure   0%=      ")
    	table 60,("  calibraton 100%   ")
    	table 80,("  mesure 100%=      ")
    	table 100,("    calibration     ")
    	table 120,("    effectu",1,"e       ")	;1 pour é
    	table 140,("   DEFAUT SONDE     ")
    	table 160,("   DEFAUT TIMEOUT   ")
    	table 180,(2,4,14,17,31,16,14,0)	;descripton lettre é	
    	table 200,("  SONDE nß          ")	;ß= alt+0223 =° sur clavier
    	table 220,("RESERVES D'EAU:    %")
    	table 240,("#1    %    L   ,  GI")
    	table 260,("#2    %    L   ,  GI")
    	table 280,("#3    %    L   ,  GI")
    	pullup %0100000000000    ;pullup sur C.3
    
    ;***** macro texte ***************
    	#macro text(posi,deb,varw)
    	car=posi:gosub EnvoiByteComm	;pos curseur en 128 
    	for cpt=deb to varw				
    		readtable cpt,car				;texte 
    		gosub EnvoiByteData		
    	next
    	#endmacro
    
    ; Initialisation LCD *********
    	for cpt=0 to 5
    		readtable cpt,car		
    		gosub EnvoiByteCommInit
    	next
    	pause 500	;temps init du LCD
    	; définition des caractères ajoutés en CGRAM
    	; def du é en CGRAM 1 **************************
    	car=1*8|$40 :gosub EnvoiByteComm
    	for cpt=180 to 187
    		readtable cpt,car		;description du é vers CGRAM n°1
    		gosub EnvoiByteData		
    	next
    
    ;******* Début Programme principal *****************  	
    	car=1:gosub EnvoiByteComm	;raz afficheur 
    	read 0,word bas, word delta,word memcomp        ; lecture param droire + t° pendant calib
    	if bas =0 then calib   ; Vers calib si aucun paramètre enregistré
    
    ;***** boucle pricipale ************************************** 
    debut:
    	calibr=0		;on est pas en calibration	
       text(128,220,239)	;texte "RESERVES D'EAU:   %"
    	text(192,240,259)	;texte fixe
    	text(148,260,279)
    	text(212,280,299) 
    	Do  
    		time=0
    		do while valid=0				;si valid=1, on entre pas
    			if time> 3 then calib	;demande de calibration 
    		loop 		
    		total=0
    		for sonde=8 to 10    ;n° des broches : broches C.0=8,C.1=9,C.3=10			
    	   	gosub mesure    
    			gosub calcul
    			gosub affich	
    			total=total+mesur
    			debug					
    		next
    		gosub afftotal	   
    	loop
    ;******* Fin programme principal *****************
    
    ;******* Les sous programmes: ***********************
    ;************** Mesure des sondes, liaison RS232 ***************
    ; Pour les essais avec une seue sonde, le port serin est bloqué à 8 (C.1) au lieu de scanner les 3 sondes
    ; Pour le scanne réel, il faut remplacer le "8" par "sonde" dans la commande serin ci dessous
    mesure:	
    	serin [10000,alarmsonde],8,baud,b27,b26,b25,b24  ;(b27;b26)mesur et (b13,b12);!! 
    	;mesur=w13 = (b27;b26)    ;reconstitution de la mesure brute
    	;compens = (b25,b24) ft tempé interne
    	if mesur =0 then alarmsonde    ;erreur de mesure, dépassement 65535
    	mesur=mesur/100
    	if memcomp>compens then     
    	  compens=memcomp- compens    ;plus froid
    	  compens=compens /4    ;ici un rapport 4 entre les variations mesure et ref t° interne
    	  mesur=mesur + compens	  
    	else
    	  compens=compens - memcomp    ;plus chaud
    	  compens=compens /4
    	  mesur=mesur - compens ;on garde les chiffres significatifs	 
    	endif    
    	return
    
    '******** Affichage des valeurs lues ***********
    affich:		
     	if sonde=8 then
    		posi=192		
    	elseif sonde=9 then
    		posi=148		
    	elseif sonde=10 then
    		posi=212	
    	endif
    
    	car=posi+3:gosub EnvoiByteComm	;pos curseur aff % 
    	bintoascii mesur,b1,b1,b1,b2,b3     ;décomposition ascii
    	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car  ;affichage valeur en %
    		gosub EnvoiByteData
    	next
    		
    	car=posi+8:gosub EnvoiByteComm	;pos curseur aff L
    	varw=capacit *mesur/100 
    	bintoascii varw,b1,b1,b1,b2,b3     
    	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car	;affichage valeur en L
    		gosub EnvoiByteData
    	next
    	
    	car=posi+13:gosub EnvoiByteComm	;pos curseur
    	varw=60*mesur	;décomposition 6951*mesur/100 =60*mesur
    	varw=9*mesur+varw	;+9*mesur
    	varw=mesur/2+varw	;+ mesur/2 (51/100 oui, bon...)
    	bintoascii varw,b1,b1,b2,b3,b4  ;pas écraser les octets utiles  	 
    	for cpt=0 to 1
    		lookup cpt,(b1,b2),car	;affichage valeur en L
    		gosub EnvoiByteData
    	next	
    	car=posi+16:gosub EnvoiByteComm	;pos curseur 
    	for cpt=0 to 1
    		lookup cpt,(b3,b4),car	;affichage valeur en L
    		gosub EnvoiByteData
    	next	
    	pause 1000			;pour stabiliser l'affichage
      return
    
    afftotal:
    	total=total/3
    	bintoascii total,b1,b1,b1,b2,b3   
    	car=144 :gosub EnvoiByteComm	;position % global
     	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car	;affichage valeur en %
    		gosub EnvoiByteData
    	next
    	return	
    ;******* Calibration, Calcul paramétres, Affichage, Mise en mémoires ***
    calib:
    	car=1:gosub EnvoiByteComm	;raz afficheur 	
    	calibr=1 	
    	text(128,20,39)				;texte "calobration 0%"
    	do:loop while valid=0		;attente relachement poussoir
    	text(192,40,59)				;texte "mesure 0=%"      
    	do  
    		serin [20000,alarmsonde],8,baud,b27,b26,b25,b24 ;(b27,b26) mesur (b25,b24) compens        
    		if mesur =0 then gosub alarmsonde    ;erreur de mesure, dépassement 65535
    		mesur=mesur/100        ;on garde les chiffres significatifs
    		bas=mesur                           ;mesure du point 0% 		
    		bintoascii mesur,b1,b1,b1,b2,b3     ;affichage
    		car=207: gosub EnvoiByteComm		;pos curseur en 205
    		for cpt=0 to 2
    			lookup cpt,(b1,b2,b3),car		;affichage valeur 0%
    			gosub EnvoiByteData
    		next
    		pause 500	
    	loop while valid=1  				;attente validation                           
    	car=1:gosub EnvoiByteComm		;raz affichage
    	text(128,60,79)					;texte calibration 100%
    	do:loop while valid=0     		;attente relachement poussoir
    	text(192,80,99)					;texte valeur mesure 100%=
    	do
    		serin [20000,alarmsonde],8   ,baud,b27,b26,b25,b24
    		if mesur =0 then gosub alarmsonde    ;erreur de mesure sonde, dépassement 65535
    		mesur=mesur/100        ;on garde les chiffres significatifs  		     
    		bintoascii mesur,b1,b1,b1,b2,b3			
    		car=207: gosub EnvoiByteComm		;pos curseur en 205
    		for cpt=0 to 2
    			lookup cpt,(b1,b2,b3),car		;affichage mesure   100%
    			gosub EnvoiByteData
    		next	
    	       pause 500					
    	 loop while valid=1
    	if bas>mesur then calib 				;erreur de procédure. retour début      
    	do:loop while valid=0				;attente relachement poussoir
    	delta=mesur-bas 
    	write 0,word bas,word delta,word compens      ;Mise en mémoire EEPROM 
    	text(128,100,119)			;texte calibration
    	text(192,120,139)			;texte effectuée
    	pause 4000  ;Temps d'affichage 
    	reset
     
    ;*********** Calcul pourcentage ***********************
    calcul:      
    	if mesur <=bas then 		; on est en dessous de 0
    		mesur=0					;butée à 0
    	else
    		mesur=mesur-bas 		;calage à l'origine	 
    	 	mesur=100*mesur/delta  ;proportionnalité ,unités en pourcents
    	endif                              
    	return
    
      ;***** Alarmes dépassement Time Out liaison sonde (temporaire) et défaut sonde **********    
    Alarmsonde:
    	car=1:gosub EnvoiByteComm	;raz afficheur
    	if mesur=0 then 	;erreur de mesure sonde (défaut isolant ?)
    	text(128,140,159)
    	else					;temps TIMEOUT dépassé (liaison coupée?)
    	text(128,160,179)
    	endif
    	text(192,200,219)	;texte sonde n°
    	sonde =sonde-7		;pour numéroter les sondes de 1 à 3
    	bintoascii sonde,b1,b2,b3
    	car=203:gosub EnvoiByteComm	;pos curseur en 128
    	car=b3: gosub EnvoiByteData 	;sonde en défaut 	
    	pause 6000        ;temps de lecture		
    	if calibr=1 then calib			;on était en calibration..on y retourne
    	goto debut  	;retour au début de la boucle principale 
     
    ; Sub envoi vers LCD via I2C *************
    EnvoiByteCommInit:
    	pause 15
    EnvoiByteComm:
    	rsbit=0
    EnvoiByteData:
    ;1ère moitié 
    	dat=car & $F0 | %1000 | rsbit ;%1000 pour l'éclairage
    	hi2cout (dat)
    	pause 2		
    	dat=dat | %1100
    	hi2cout (dat)	;pulse sur E cad P2
    	pause 2			;pause 2 pour 32 MHz
    	dat=dat | %1000	;fin pulse
    	hi2cout (dat)
    	pause 2	
    ;2ème moitié 
    	dat=car & $0F * 16 | %1000 | rsbit
    	hi2cout (dat)
    	pause 2
    	dat=dat | %1100
    	hi2cout (dat)
    	pause 2
    	dat=dat | %1000 & %1011
    	hi2cout (dat)	
    	rsbit=1
    	return
    MM
    Dernière modification par mag1 ; 05/06/2018 à 08h54.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  7. #127
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Ben, c'est à dire que logiquement, on réfléchit d'abord et on achète ensuite.

    C'est quoi comme moteur? La pompe alimentée par le secteur?
    Et les contacteurs? NO ? NF ?
    J'avais acheter ces contacteur pour un projet très simple. Il m'en est resté quelques uns.

    Ce sont de NO ou NF comme tu veux. ça dépend de la manière que tu les installes.

    Dans l'image celle de gauche est NF alors que celle de droite sera NO. Si celle de gauche était au plus bas niveau et celle de droite au plus haut niveau (soit l'inverse de cette photo), il serait possible le thyristor lorsque le niveau serait ba et de l'arrêter lorsqu'il serait haut.

    Nom : s-l1600.jpg
Affichages : 234
Taille : 89,2 Ko

  8. #128
    mag1

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    il serait possible le thyristor lorsque le niveau serait ba et de l'arrêter lorsqu'il serait haut.
    M2
    Oui, ça dépend si il est dans un sens ou dans l'autre. Si on utilise un 08M2, de toute façon, on fait ce que l'on veux.
    Les thyristors, c'est plutôt pour du continu, en alternatif, on utilise des triacs (en gros, deux thyristors inversés) et le plus simple, c'est le relais statique de #124 (inclus une commande optique)

    Nom : regreser.JPG
Affichages : 232
Taille : 26,8 Ko

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

  9. #129
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    M2
    Oui, ça dépend si il est dans un sens ou dans l'autre. Si on utilise un 08M2, de toute façon, on fait ce que l'on veux.
    Les thyristors, c'est plutôt pour du continu, en alternatif, on utilise des triacs (en gros, deux thyristors inversés) et le plus simple, c'est le relais statique de #124 (inclus une commande optique)

    Pièce jointe 367300

    MM
    T'as raison pour le Triac. Je les mélange toujours ces deux là.

  10. #130
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Bonjour,

    Et un truc comme ça ?

    Pièce jointe 367272

    Avec la valeur globale des réserves d'eau en % et le détail par réservoir en %, litres et Gallons impériaux....

    MM
    Il semble y avoir une erreur dans ta programmation (photo #121). Si la valeur globale en % est la somme des trois réservoirs, ne devrait-elle pas afficher 3 * 63% >> 189% ?

  11. #131
    mag1

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    Il semble y avoir une erreur dans ta programmation (photo #121). Si la valeur globale en % est la somme des trois réservoirs, ne devrait-elle pas afficher 3 * 63% >> 189% ?
    Non, c'est la somme des % de chaque réservoir /3 : (63+63+63) /3 = 63
    C'est ce qui reste du total des 3 réservoirs pleins.

    Au fait, la calibration se fait sur un réservoir, et est appliquée aussi aux autres, c'est pour ça que j'ai demandé si les trois sondes et les réservoirs étaient identiques.

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

  12. #132
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Non, c'est la somme des % de chaque réservoir /3 : (63+63+63) /3 = 63
    C'est ce qui reste du total des 3 réservoirs pleins.

    Au fait, la calibration se fait sur un réservoir, et est appliquée aussi aux autres, c'est pour ça que j'ai demandé si les trois sondes et les réservoirs étaient identiques.

    MM
    Tout à fait logique. Désolé, mon erreur !

    Oui ils sont identiques.

  13. #133
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    On espère pouvoir réutiliser les sondes d'origines. Mais à défaut, la réalisation de sondes à base de tube PVC de 30mm et de fil émaillé de 5 à 6 /10 de mm donneront probablement de meilleurs résultats.

    sondecapa0.jpg sondecap2.jpg sondecap3.jpg

    Plus de détails sur cette page: http://electromag1.wifeo.com/fabriat...apacitives.php

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

  14. #134
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Bonjour,

    On espère pouvoir réutiliser les sondes d'origines. Mais à défaut, la réalisation de sondes à base de tube PVC de 30mm et de fil émaillé de 5 à 6 /10 de mm donneront probablement de meilleurs résultats.

    Pièce jointe 367477 Pièce jointe 367478 Pièce jointe 367479

    Plus de détails sur cette page: http://electromag1.wifeo.com/fabriat...apacitives.php

    MM
    Beau travail. Évidement je vais attendre d'aller au bateau avant de fabriquer de nouvelles sondes.

    Merci MM

  15. #135
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    Petit programme pour #128.
    Si on veut lire le niveau par sonde capacitive, il faudrait remplacer le 08M2 par un 14M2.

    Code:
    #picaxe 08M2
    #no_data
    
    symbol caphaut= pinC.3	;capteur niveau haut
    symbol capbas= pinC.4	;capteur niveau bas
    symbol moteur= C.1		;sortie relais statique
    pullup %11000			;R pullup sur C.3 et C.4
    	do 
    		do loop while capbas = 0	;on attend le niveau bas
    		high moteur			;moteur ON
    		do loop while caphaut=0	 ;on attend le niveau haut
    		low moteur			;moteur OFF
    	loop
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  16. #136
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    Quelques nouvelles du front côté réservoirs bateau.

    Je viens de constater, mais c'est inévitable, une petite dispersion entre les valeurs mesurées par différents 08M2 Ex: on fait une calibration avec un 08M2, on a donc 100% pour la capa mesurée.
    Si on change le 08M2, on mesurera par ex 98% pour l'un et 103% pour un autre.
    Je propose donc un ajustage des mesures pour annuler cette dispersion. Une calibration se fait sur une sonde "de référence" et les deux autres sont ajustées à 100% pour la même hauteur et donc la même quantité d'eau. Ces réglages sont définitifs, ft du picaxe.

    Nouveau schéma, deux R ajustables 10k genre 25t de plus:

    Nom : niv3sondes ajust.JPG
Affichages : 188
Taille : 59,4 Ko

    Il y a une petite modif de code

    MM
    Dernière modification par mag1 ; 13/06/2018 à 07h56.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  17. #137
    mag1

    Re : Mesure du niveau d'eau

    Et non, les 08M2 ne sont pas tous égaux...

    Quatre 08M2, avec la même capacité de 3,3nF, sur le même support, donne respectivement les valeurs de mesure/100 de: 254, 225, 245, 259.

    Ce ne serait pas si mal si il n'y avait ce 225 que j'ai écarté.

    Nom : receptsondes130618.jpg
Affichages : 185
Taille : 527,3 Ko

    Sur cette photo, il y a les trois sondes: le tube avec le fil émaillé, et deux 08M2 avec un condo (gris) simulant la mesure.

    La calibration a été faite avec le tube (sonde 1) et une capa de 3,3nF simulant une hauteur de 65cm d'eau.
    Avec des condos de 3,3nF sur les deux autres 08M2 (sondes 1 et 2), les 100% ont été alignés avec les deux potars (en bas à droite)
    Sur la photo, le 3,3 nF est resté sur la sonde 1, les deux autres 3,3 sur les sondes 2 et 3 sont remplacés par des 1nF.
    Compte tenu de la précision de tous ces condos, la mesure est tout à fait satisfaisante (pour moi...)
    Pas besoin de 25t pour les ajustables.

    MM
    Dernière modification par mag1 ; 13/06/2018 à 15h43.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  18. #138
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Et non, les 08M2 ne sont pas tous égaux...

    Quatre 08M2, avec la même capacité de 3,3nF, sur le même support, donne respectivement les valeurs de mesure/100 de: 254, 225, 245, 259.

    Ce ne serait pas si mal si il n'y avait ce 225 que j'ai écarté.

    Pièce jointe 367862

    Sur cette photo, il y a les trois sondes: le tube avec le fil émaillé, et deux 08M2 avec un condo (gris) simulant la mesure.

    La calibration a été faite avec le tube (sonde 1) et une capa de 3,3nF simulant une hauteur de 65cm d'eau.
    Avec des condos de 3,3nF sur les deux autres 08M2 (sondes 1 et 2), les 100% ont été alignés avec les deux potars (en bas à droite)
    Sur la photo, le 3,3 nF est resté sur la sonde 1, les deux autres 3,3 sur les sondes 2 et 3 sont remplacés par des 1nF.
    Compte tenu de la précision de tous ces condos, la mesure est tout à fait satisfaisante (pour moi...)
    Pas besoin de 25t pour les ajustables.

    MM
    Allo MM,

    J'ai reçu presque tout le matériel sauf les écrans LCD. Je part en vacance au chalet ce week-end. De retour dans une ou deux semaines. Je vais m'y mettre à ce moment en espérant que les LCD seront arrivé...

    Merci pour tous le support apporté.

    Question : exist-il des programmes pour uploader le code dans le picaxe à l'aide du cordon usb ?

  19. #139
    mag1

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    Question : exist-il des programmes pour uploader le code dans le picaxe à l'aide du cordon usb ?
    Tout est dans l'éditeur PE6
    Je reposte cette page, regarde la vidéo...un cordon ou un autre, la procédure est la même:
    http://electromag1.wifeo.com/cordon-...ation-usb-.php

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

  20. #140
    Yex2

    Re : Mesure du niveau d'eau

    Ça l'air pas mal simple en effet.

  21. #141
    Yex2

    Re : Mesure du niveau d'eau

    J'ai trouvé l'editeur. Je vais tout installer la semaine prochaine lorsque j'aurai rien à faire au chalet...

  22. #142
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    Pour info, voici un PCB qui regroupe les composants du schéma précédent, ajustages des sondes 2 et 3 inclus (les 25t se placent plus facilement).
    On peut réaliser la,même chose sur plaques de pastilles (veroboard), mais il est plus difficile de faire un veroboard soigné que de faire graver ce PCB (ou un autre). Voir avec un club d'électronique par ex.

    Nom : pcb niveaux.JPG
Affichages : 169
Taille : 128,1 Ko


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

  23. #143
    mag1

    Re : Mesure du niveau d'eau

    Et le programme pour la prise en compte des ajustables sondes:

    Code:
    ;Ex: sonde de niveau capacitive MM 13/06/2018
    ;**** calibration de la sonde par action 3 sec sur le poussoir de validation  ***************
    ;**** La réponse de la comande TOUCH est considérée comme linéaire (elle l'est...)
    ;**** Le sous programme "calib:" mesure deux points arbitraires 0 et 100%  *********
    ;**** mesure de la référence interne de température dans l'émetteur 08M2
    ;**** Ces trois mesures sont mémorisées en EEPROM
    ;**** Calcul de la proportionnalité entre la mesure et les valeurs mémorisées ****
    ;**** Calcul d'une correction de température (par rapport à la t° lors de la calibration)
    ;**** Affichage du Niveau en % et en litres
    ;**** Affiche les étapes successives **************
    
    #picaxe 14M2	;directive picaxe utilisé (pour erreur de commandes)
    setfreq M16		;fréquence 16MHz			
    ;****** Nominations constantes ********
    symbol baud= N2400_16      ;vitesse liaison RS232
    symbol capacit= 316			;capacité réservoir en L
    symbol gallon=6951			;capacité en /100 de Gallon Imp
    ;****** noms variables word *********  
    symbol mesur		= w13    ;(b27,b26)
    symbol compens		= w12    ;(b25,b24)
    symbol bas		= w11    ;ref niveau bas
    symbol memcomp	= w10		;mémo réf compensation t°
    symbol delta		= w9    	;delta haut-bas
    symbol total		= w8		;total réservoirs en %
    symbol varw		= w7		;variable tempotaire
    symbol deb		= w6		;debut texte
    symbol cpt			= w5		;compteur
    ;***** noms variables bytes ****************
     ; b1,b2,b3,b4 utilisés dans bintoascii
    symbol car		=b5	;caractère àafficher
    symbol dat		=b6	;data I2C
    symbol sonde	=b7	;n° sonde
    symbol posi		=b8	;position curseur
    symbol ajust	=b9	;ajustement µC lue sur potar
    ;******* noms variables bit sur b0 ***********
    symbol rsbit=bit0		;bit commande/data afficheur
    symbol calibr=bit1	;memo phase calibration
    ;******* Nominations ports ***********
    symbol sonde0 	= C.0       ;entrée sonde0 n°broche=8
    symbol sonde1 	= C.1       ;entrés sonde1	n°broche=9
    symbol sonde2	= C.2	      ;entrée sonde2 n°droche=10
    symbol valid  	= pinC.3    ;valeur poussoir de validation
    symbol potaj2	= B.1			;valeur ajustage sonde µC2
    symbol potaj3	= B.2			;valeur ajustage sonde µC3
    
    ; Initialisation I2C . pour 14M2:sda sur B.4 ; scl sur B.3
    	hi2csetup i2cmaster,%01001110, i2cfast_16, i2cbyte
    ;** Entrée des données texte dans "table" ***********
    	table 0,(51,50,40,12,6,1)		;initialisation LCD 4 bits
    	table 20,("  calibration 0%    ")
    	table 40,("  mesure   0%=      ")
    	table 60,("  calibraton 100%   ")
    	table 80,("  mesure 100%=      ")
    	table 100,("    calibration     ")
    	table 120,("    effectu",1,"e       ")	;1 pour é
    	table 140,("   DEFAUT SONDE     ")
    	table 160,("   DEFAUT TIMEOUT   ")
    	table 180,(2,4,14,17,31,16,14,0)	;descripton lettre é	
    	table 200,("  SONDE nß          ")	;ß= alt+0223 =° sur clavier
    	table 220,("RESERVES D'EAU:    %")
    	table 240,("#1    %    L   ,  GI")
    	table 260,("#2    %    L   ,  GI")
    	table 280,("#3    %    L   ,  GI")
    	pullup %0100000000000    ;pullup sur C.3
    
    ;***** macro texte ***************
    	#macro text(posi,deb,varw)
    	car=posi:gosub EnvoiByteComm	;pos curseur en 128 
    	for cpt=deb to varw				
    		readtable cpt,car				;texte 
    		gosub EnvoiByteData		
    	next
    	#endmacro
    
    ; Initialisation LCD *********
    	for cpt=0 to 5
    		readtable cpt,car		
    		gosub EnvoiByteCommInit
    	next
    	pause 500	;temps init du LCD
    	; définition des caractères ajoutés en CGRAM
    	; def du é en CGRAM 1 **************************
    	car=1*8|$40 :gosub EnvoiByteComm
    	for cpt=180 to 187
    		readtable cpt,car		;description du é vers CGRAM n°1
    		gosub EnvoiByteData		
    	next
    
    ;******* Début Programme principal *****************  	
    	car=1:gosub EnvoiByteComm	;raz afficheur 
    	read 0,word bas, word delta,word memcomp        ; lecture param droire + t° pendant calib
    	if bas =0 then calib   ; Vers calib si aucun paramètre enregistré
    
    ;***** boucle pricipale ************************************** 
    debut:
    	calibr=0		;on est pas en calibration	
       text(128,220,239)	;texte "RESERVES D'EAU:   %"
    	text(192,240,259)	;texte fixe
    	text(148,260,279)
    	text(212,280,299) 
    	Do  
    		time=0
    		do while valid=0				;si valid=1, on entre pas
    			if time> 3 then calib	;demande de calibration 
    		loop 		
    		total=0
    		for sonde=8 to 10    ;n° des broches : broches C.0=8,C.1=9,C.3=10			
    	   	        gosub mesure    
    			gosub calcul
    			gosub affich	
    			total=total+mesur							
    		next
    		gosub afftotal	   
    	loop
    ;******* Fin programme principal *****************
    
    ;******* Les sous programmes: ***********************
    ;************** Mesure des sondes, liaison RS232 ***************
    ; Pour les essais avec une seue sonde, le port serin est bloqué à 8 (C.1) au lieu de scanner les 3 sondes
    ; Pour le scanne réel, il faut remplacer le "8" par "sonde" dans la commande serin ci dessous
    mesure:	
    	serin [10000,alarmsonde],sonde  ,baud,b27,b26,b25,b24  ;(b27;b26)mesur et (b13,b12);!! 
    	;mesur=w13 = (b27;b26)    ;reconstitution de la mesure brute
    	;compens = (b25,b24) ft tempé interne 
    	if mesur =0 then alarmsonde    ;erreur de mesure, dépassement 65535
    ;***** compensation dispersion µC ************ 
    	if sonde=8 then
    		mesur=mesur/100
    	elseif sonde=9 then
    		readadc potaj2,ajust	;ajust=0 à 255
    		ajust=ajust/5			;255/5=50 curseur milieu=25
    		ajust=75+ajust			;ajust = de 75 à 125
    		mesur=mesur/ajust
    	elseif sonde=10 then
    		readadc potaj3,ajust
    		ajust=ajust/5			
    		ajust=75+ajust			
    		mesur=mesur/ajust			
    	endif
    ;******* compensation température ************
    	if memcomp>compens then     
    	  compens=memcomp- compens    ;plus froid
    	  compens=compens /4    ;ici un rapport 4 entre les variations mesure et ref t° interne
    	  mesur=mesur + compens	  
    	else
    	  compens=compens - memcomp    ;plus chaud
    	  compens=compens /4
    	  mesur=mesur - compens ;on garde les chiffres significatifs	 
    	endif    
    	return
    
    '******** Affichage des valeurs lues ***********
    affich:		
     	if sonde=8 then
    		posi=192				
    	elseif sonde=9 then
    		posi=148		
    	elseif sonde=10 then
    		posi=212	
    	endif
    ;********** affichage en % **************
    	car=posi+3:gosub EnvoiByteComm	;pos curseur aff % 
    	bintoascii mesur,b1,b1,b1,b2,b3     ;décomposition ascii
    	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car  ;affichage valeur en %
    		gosub EnvoiByteData
    	next
    ;********* affichage en litres ***********		
    	car=posi+8:gosub EnvoiByteComm	;pos curseur aff L
    	varw=capacit *mesur/100 
    	bintoascii varw,b1,b1,b1,b2,b3     
    	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car	;affichage valeur en L
    		gosub EnvoiByteData
    	next
    ;*********** affichage en gallon imp ************	
    	car=posi+13:gosub EnvoiByteComm	;pos curseur
    	varw=60*mesur	;                           décomposition 6951*mesur/100 =60*mesur
    	varw=9*mesur+varw					;+9*mesur
    	varw=mesur/2+varw					;+ mesur/2 (51/100 oui, bon...)
    	bintoascii varw,b1,b1,b2,b3,b4  ;pas écraser les octets utiles  	 
    	for cpt=0 to 1
    		lookup cpt,(b1,b2),car	;affichage partie entière
    		gosub EnvoiByteData
    	next	
    	car=posi+16:gosub EnvoiByteComm	;pos curseur 
    	for cpt=0 to 1
    		lookup cpt,(b3,b4),car	;affichage décimales, après virgule
    		gosub EnvoiByteData
    	next	
    	pause 1000			;pour stabiliser l'affichage
      return
    
    ;afichage du total des 3 réservoirs en % (max=100%)
    afftotal:
    	total=total/3			;moyenne de la somme des trois réservoirs
    	bintoascii total,b1,b1,b1,b2,b3   
    	car=144 :gosub EnvoiByteComm	;position % global
     	for cpt=0 to 2
    		lookup cpt,(b1,b2,b3),car	;affichage valeur en %
    		gosub EnvoiByteData
    	next
    	return	
    
    ;******* Calibration, Calcul paramétres, Affichage, Mise en mémoires ***
    calib:
    	car=1:gosub EnvoiByteComm	;raz afficheur 	
    	calibr=1 	
    	text(128,20,39)				;texte "calobration 0%"
    	do:loop while valid=0		;attente relachement poussoir
    	text(192,40,59)				;texte "mesure 0=%"      
    	do  
    		serin [20000,alarmsonde],8,baud,b27,b26,b25,b24 ;(b27,b26) mesur (b25,b24) compens        
    		if mesur =0 then gosub alarmsonde    ;erreur de mesure, dépassement 65535		
    		mesur=mesur/100    ;on garde les chiffres significatifs 		
    		bas=mesur                           ;mesure du point 0% 		
    		bintoascii mesur,b1,b1,b1,b2,b3     ;affichage
    		car=207: gosub EnvoiByteComm		;pos curseur en 205
    		for cpt=0 to 2
    			lookup cpt,(b1,b2,b3),car		;affichage valeur 0%
    			gosub EnvoiByteData
    		next
    		pause 500	
    	loop while valid=1  				;attente validation                           
    	car=1:gosub EnvoiByteComm		;raz affichage
    	text(128,60,79)					;texte calibration 100%
    	do:loop while valid=0     		;attente relachement poussoir
    	text(192,80,99)					;texte valeur mesure 100%=
    	do
    		serin [20000,alarmsonde],8   ,baud,b27,b26,b25,b24
    		if mesur =0 then gosub alarmsonde    ;erreur de mesure sonde, dépassement 65535
    		mesur=mesur/100        ;on garde les chiffres significatifs  		     
    		bintoascii mesur,b1,b1,b1,b2,b3			
    		car=207: gosub EnvoiByteComm		;pos curseur en 205
    		for cpt=0 to 2
    			lookup cpt,(b1,b2,b3),car		;affichage mesure   100%
    			gosub EnvoiByteData
    		next	
    	pause 500					
    	loop while valid=1
    	if bas>mesur then calib		;erreur de procédure. retour début      
    	do:loop while valid=0		;attente relachement poussoir
    	delta=mesur-bas 
    	write 0,word bas,word delta,word compens      ;Mise en mémoire EEPROM 
    	text(128,100,119)			;texte calibration   
    	text(192,120,139)			;texte effectuée
    	pause 4000  				;Temps d'affichage 
    	reset
     
    ;*********** Calcul pourcentage ***********************
    calcul:      
    	if mesur <=bas then 		; on est en dessous de 0
    		mesur=0					;butée à 0
    	else
    		mesur=mesur-bas 		;calage à l'origine	 
    	 	mesur=100*mesur/delta  ;proportionnalité ,unités en pourcents
    	endif                              
    	return
    
      ;***** Alarmes dépassement Time Out liaison sonde (temporaire) et défaut sonde **********    
    Alarmsonde:
    	car=1:gosub EnvoiByteComm	;raz afficheur
    	if mesur=0 then 	;erreur de mesure sonde (défaut isolant ?)
    	text(128,140,159)
    	else					;temps TIMEOUT dépassé (liaison coupée?)
    	text(128,160,179)
    	endif
    	text(192,200,219)	;texte sonde n°
    	sonde =sonde-7		;pour numéroter les sondes de 1 à 3
    	bintoascii sonde,b1,b2,b3
    	car=203:gosub EnvoiByteComm	;pos curseur en 128
    	car=b3: gosub EnvoiByteData 	;sonde en défaut 	
    	pause 6000        ;temps de lecture		
    	if calibr=1 then calib			;on était en calibration..on y retourne
    	goto debut  	;retour au début de la boucle principale 
     
    ; Sub envoi vers LCD via I2C *************
    EnvoiByteCommInit:
    	pause 15
    EnvoiByteComm:
    	rsbit=0
    EnvoiByteData:
    ;1ère moitié 
    	dat=car & $F0 | %1000 | rsbit ;%1000 pour l'éclairage
    	hi2cout (dat)
    	pause 2		
    	dat=dat | %1100
    	hi2cout (dat)	;pulse sur E cad P2
    	pause 2			;pause 2 pour 32 MHz
    	dat=dat | %1000	;fin pulse
    	hi2cout (dat)
    	pause 2	
    ;2ème moitié 
    	dat=car & $0F * 16 | %1000 | rsbit
    	hi2cout (dat)
    	pause 2
    	dat=dat | %1100
    	hi2cout (dat)
    	pause 2
    	dat=dat | %1000 & %1011
    	hi2cout (dat)	
    	rsbit=1
    	return
    MM
    Dernière modification par mag1 ; 16/06/2018 à 20h04.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  24. #144
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    Retour sur le forum.
    Voici un exemple de LCD 2004 avec adaptateur I2C (c'est la petite plaquette). Il n'y a rien à fabriquer.
    https://www.ebay.fr/itm/LCD-2004-Bla...DhQc7Iia-oKNsQ

    Pour le fil électrique loupe... je vois pas. Je confirme que le meilleur résultat est obtenu avec du fil émaillé de 6/10 env.

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

  25. #145
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    Salut mag1,

    J'ai regardé ton circuit et j'avais une première question à te poser.
    Dans la description de la sonde, tu parles d'une longueur possible de fil de 15m.



    Est-ce que ce fil est entre la sonde le le picaxe ou entre le picaxe et l'afficheur LCD ?

    Merci pour tes lumières.

    Yex
    Salut mag1,

    Je viens de retrouver ton circuit pour une seul sonde avec alarme de niveau. C'est le premier que je vais faire ce week-end.

    Pièce jointe 369133

    Dis-moi quelle valeur de potentiomètre utilises-tu pour l'alarme ?

    Merci MM,

    Yex

  26. #146
    Yex2

    Re : Mesure du niveau d'eau

    Citation Envoyé par mag1 Voir le message
    Bonjour,

    Retour sur le forum.
    Voici un exemple de LCD 2004 avec adaptateur I2C (c'est la petite plaquette). Il n'y a rien à fabriquer.
    https://www.ebay.fr/itm/LCD-2004-Bla...DhQc7Iia-oKNsQ

    Pour le fil électrique loupe... je vois pas. Je confirme que le meilleur résultat est obtenu avec du fil émaillé de 6/10 env.

    MM
    Je t'enverrai des photos de la sonde une fois qu'elle sera terminée. Merci de ta patience.

    Yex

  27. #147
    mag1

    Re : Mesure du niveau d'eau

    Citation Envoyé par Yex2 Voir le message
    Salut mag1,

    Je viens de retrouver ton circuit pour une seul sonde avec alarme de niveau. C'est le premier que je vais faire ce week-end.

    Pièce jointe 369133

    Dis-moi quelle valeur de potentiomètre utilises-tu pour l'alarme ?

    Merci MM,

    Yex
    Pour répondre à la question, les potentiomètres servent à donner sur une broche une tension entre 0 et 5V (le plus souvent) dont on fait ce que l'on veut. Ces potar font 10k.

    Afin de ne pas partir dans tous les sens: Le LCD utilisé pour ce test de la commande picaxe "touch16" avait une interface série (un fil plus 2 alim = 3 fils). Pour éviter de fabriquer cet adaptateur décrit dans ces pages (http://electromag1.wifeo.com/lcd-ser...vec-frm010.php), j'ai opté pour l'adaptateur I2C que l'on trouce sur eBay tout fait à un euro.
    Je repose donc la question: Quel matériel as tu acheté???

    Pour le "fil en forme de loupe", Est ce que loupe = loop = boucle ??

    Pour info, c'est à mon tour d'être en vacances, avec une connexion réseau aléatoire...

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

  28. #148
    mag1

    Re : Mesure du niveau d'eau

    Bonjour,

    La réponse a ma question était dans les MP. Ce sont donc des LCD I2C.

    L'exemple de mesure de niveau avec alarme que tu cites (#145) utilise des LCD avec adaptateur série, la programmation est différente.
    Il faut donc adapter le programme....

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

  29. #149
    Yex2

    Re : Mesure du niveau d'eau

    Ok mais j'ai acheté les LCD que t'avais recommander, soit :

    1602 : https://www.ebay.com/itm/IIC-I2C-TWI...72.m2749.l2649

    2004 : https://www.ebay.com/itm/IIC-I2C-TWI...72.m2749.l2649

  30. #150
    Yex2

    Re : Mesure du niveau d'eau

    Bon voici la sonde que j'ai fabriqué pour le réservoir du chalet. En espérant que ça aide d'autres personnes dans leur projet...

    Projet nu.1

    IMG_20180721_113007107_HDR[1].jpg
    IMG_20180721_114727517[1].jpg
    IMG_20180721_114945383[1].jpg
    IMG_20180721_115253836[1].jpg

    Le fil est enfilé dans le tuyau et se rend au bas (impossible d'ajouter la photo, le système refuse). L'eau peut librement pénétrer dans le tuyau lorsque le niveau monte.

    Il me reste à construire le circuit et tester le tout. Je vais essayer de faire ça cette semaine.
    Images attachées Images attachées  
    Dernière modification par Yex2 ; 21/07/2018 à 17h20.

Page 5 sur 11 PremièrePremière 5 DernièreDernière

Discussions similaires

  1. Mesure niveau d'eau
    Par Cabx dans le forum Électronique
    Réponses: 90
    Dernier message: 22/03/2020, 06h16
  2. Mesure de Niveau
    Par invite7a7934da dans le forum Électronique
    Réponses: 2
    Dernier message: 30/12/2012, 13h50
  3. Mesure niveau d'eau
    Par invite1d577638 dans le forum Électronique
    Réponses: 18
    Dernier message: 17/12/2012, 16h53
  4. Mesure d'un niveau d'eau
    Par invite4764f378 dans le forum Électronique
    Réponses: 1
    Dernier message: 30/11/2012, 10h03
  5. Mesure de Niveau d'eau
    Par invite7b584edd dans le forum Électronique
    Réponses: 16
    Dernier message: 02/12/2009, 13h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...