Non c'est bien la arduino qui compte le nombres d'impulsions.
Voici des détails sur le débitmètre
http://shop.mchobby.be/senseur-diver...100000988.html
Dernière modification par Antoane ; 14/11/2015 à 13h11. Motif: Remplacement balises HTML par URL pour le lien hypertexte.
Dernière modification par Antoane ; 14/11/2015 à 13h10. Motif: Remplacement balises HTML par URL pour le lien hypertexte.
J'ai fais le test suivant :
J'ai branché le débitmètre (gnd et +5v) sur une alimentation externe (5v).
J'ai mis une résistance 10k entre le +5v et le fil d'impulsions.
J'ai mis un multimètre entre le gnd et le fils d'impulsions.
1) Il y avait du 0V quand le debitmètre ne "tourné" pas.
2) Il y avait du 2.5V quand il "tourné".
Donc je pense que 2.5v c'est une moyenne entre la position pas d'impulsions 0v et impulsions +5v (désolé c'est pas trop présit au multimètre).
J'en déduit donc que chaque impulsion du débitmètre vaut +5V.
On peut donc supposer qu'il s'agit d'une sortie à collecteur ouvert.
La valeur "un" est la tension d'alimentation de la résistance.
La valeur "zéro" est le Vce du transistor de sortie du capteur.
Dernière modification par antek ; 13/11/2015 à 12h19.
Bonjour,
c'est un problème d'anti-rebond http://www.mon-club-elec.fr/pmwiki_r...xempleDebounce
Je n'avais pas vu les 3 pages J'en été resté au pb du bouton qui ne semble pas réglé en fait.
Dernière modification par izentrop ; 13/11/2015 à 12h26.
regarde le lien que j'ai mis pour la tempo sinon un condensateur aux bornes du bouton.
Mon programme est-il bien écrit pour compter les impulsions?
Code:#define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino int etat_bouton_NO; //variable qui enregistre l'état du bouton int etat_debitmetre; //variable qui enregistre l'état du débit mètre int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre int valeur_bouton; // variable memoire du bouton NO void setup() { pinMode(bouton_NO, INPUT); //le bouton est une entrée pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint" pinMode(debitmetre, INPUT); //le débit mètre est une entrée Nb_impulsion = 0; valeur_bouton = 0; } void loop() { etat_debitmetre = digitalRead(debitmetre); etat_bouton_NO = digitalRead(bouton_NO); if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low) { valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1 } else { valeur_bouton = 0; // sinon la variable valaur_bouton se mets a 0 } if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1 { digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme } if(relais_EV == LOW) // SI relais_EV est a l'etat bas {if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé" { Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion } if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est supérieure ou égale à "10" { digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme valeur_bouton = 0; // Je remets la variable valeur_bouton a "0" Nb_impulsion = 0; // remise à "0" du compteur d'impulsions. } } }
Le soft doit fonctionner.
Le problème c est lorsqu'on te demande de faire une manip tu ne la fais pas.
Ou si tu l'a fait, il n'y a aucun retour...
Bonjour,
Avec ce code, est-ce que la led clignote http://mchobby.be/wiki/index.php?tit...l#Code_Arduino
Tu ne tiens pas compte du changement d'état de ton débitmètre,La variable Nb_impulsion passe à 1 et ne peut pas évoluer.Code:if(relais_EV == LOW) // SI relais_EV est a l'etat bas {if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé" { Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion }
Solution ici https://www.arduino.cc/en/Tutorial/S...tonStateChange
Oui avec ce code elle clignote bien!Bonjour,
Avec ce code, est-ce que la led clignote http://mchobby.be/wiki/index.php?tit...l#Code_Arduino
C'est bien comme cela que j'ai branché les BP.C'est comme cela que tu as branché tes BP ?
Pièce jointe 297835
remplace le BP par le débitmètre, fait le tourner lentement et regarde si ça clignote aussi.
J'ai rajouté un etat_relais , en supposant que le fait de lire directement ne fonctionne pas , ainsi la variable ne serait pas incrémenté.
Et
On attend la fin de l'etatbas debitmètre
Code:#define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino int etat_bouton_NO; //variable qui enregistre l'état du bouton int etat_debitmetre; //variable qui enregistre l'état du débit mètre int etat_relais; // int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre int valeur_bouton; // variable memoire du bouton NO void setup() { pinMode(bouton_NO, INPUT); //le bouton est une entrée pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint" pinMode(debitmetre, INPUT); //le débit mètre est une entrée Nb_impulsion = 0; valeur_bouton = 0; etat_relais=1; } void loop() { etat_debitmetre = digitalRead(debitmetre); While (etat_debitmetre==LOW){ etat_debitmetre = digitalRead(debitmetre); }; etat_bouton_NO = digitalRead(bouton_NO); if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low) { valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1 } else { valeur_bouton = 0; // sinon la variable valaur_bouton se mets a 0 } if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1 { digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme etat_relais=0; } if(etat_relais == 0) // SI relais_EV est a l'etat bas {if(etat_debitmetre == 0) //Si le débitmètre est en position "fermé" { Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion } if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est supérieure ou égale à "10" { digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme etat_relais=1; valeur_bouton = 0; // Je remets la variable valeur_bouton a "0" Nb_impulsion = 0; // remise à "0" du compteur d'impulsions. } } }
Merci d'avoir passer du temps pour modifier mon code.
Ca ne fonctionne pas :
Le relais s'enclenche et ce déclenche dès que je lache le BP.
Si je tient le BP enfoncé et que je fait tourné le débitmètre = le relais s’allume et s'éteint rapidement.
J'ai refait le code par rapport au lien que m'a donné poillaineux en #49.
Le relais reste enclenché mais toujours rien pour le débitmètre.
Code:#define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino int etat_bouton_NO; //variable qui enregistre l'état du bouton int etat_debitmetre; //variable qui enregistre l'état du débit mètre int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre int memoire_BP = HIGH; //état relâché par défaut int memoire_debitmetre = HIGH; //état relâché par défaut int valeur_bouton; // variable memoire du bouton NO void setup() { pinMode(bouton_NO, INPUT); //le bouton est une entrée pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint" pinMode(debitmetre, INPUT); //le débit mètre est une entrée Nb_impulsion = 0; valeur_bouton = 0 ; } void loop() { etat_bouton_NO = digitalRead(bouton_NO); // lecture de l'état du bouton etat_debitmetre = digitalRead(debitmetre); // lecture de l'état du débitmètre if((etat_bouton_NO != memoire_BP) && (etat_bouton_NO == LOW)) // Si le bouton a un état différent de celui enregistré ET { // que cet état est "appuyé" valeur_bouton = 1; // Alors la valirable valeur_bouton ce met à "1" } memoire_BP = etat_bouton_NO; // on enregistre l'état du bouton pour le tour suivant if(valeur_bouton == 1) // Si la variable valeur_bouton est à "1" { digitalWrite(relais_EV, LOW); // Alors le relais est alimenté } if((etat_debitmetre != memoire_debitmetre) && (etat_debitmetre == HIGH)) // Si le bouton a un état différent de celui { // enregistré ET que cet état est "appuyé" Nb_impulsion++; // Alors j'incrémente la varible de +1 } memoire_debitmetre = etat_debitmetre; // on enregistre l'état du bouton pour le tour suivant if(Nb_impulsion >= 10) // Si le nombre d'impulsions est supérieur ou égale à 10 { digitalWrite(relais_EV, HIGH); // Alors le relais s'éteint }
j ai modifié en cours est qu'il y a le while dans ce que tu as copié?
Code:While (etat_debitmetre==LOW){ etat_debitmetre = digitalRead(debitmetre); };
Tu veux dire dans le code que tu m'a donné, oui il y a le while.
sinon dans celui que je viens de mettre, non mais même en le mettant ca ne change rien!
Je viens de remarquer quelque chose avec ce nouveau code :J'ai refait le code par rapport au lien que m'a donné poillaineux en #49.
Le relais reste enclenché mais toujours rien pour le débitmètre.
Code:#define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino int etat_bouton_NO; //variable qui enregistre l'état du bouton int etat_debitmetre; //variable qui enregistre l'état du débit mètre int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre int memoire_BP = HIGH; //état relâché par défaut int memoire_debitmetre = HIGH; //état relâché par défaut int valeur_bouton; // variable memoire du bouton NO void setup() { pinMode(bouton_NO, INPUT); //le bouton est une entrée pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint" pinMode(debitmetre, INPUT); //le débit mètre est une entrée Nb_impulsion = 0; valeur_bouton = 0 ; } void loop() { etat_bouton_NO = digitalRead(bouton_NO); // lecture de l'état du bouton etat_debitmetre = digitalRead(debitmetre); // lecture de l'état du débitmètre if((etat_bouton_NO != memoire_BP) && (etat_bouton_NO == LOW)) // Si le bouton a un état différent de celui enregistré ET { // que cet état est "appuyé" valeur_bouton = 1; // Alors la valirable valeur_bouton ce met à "1" } memoire_BP = etat_bouton_NO; // on enregistre l'état du bouton pour le tour suivant if(valeur_bouton == 1) // Si la variable valeur_bouton est à "1" { digitalWrite(relais_EV, LOW); // Alors le relais est alimenté } if((etat_debitmetre != memoire_debitmetre) && (etat_debitmetre == HIGH)) // Si le bouton a un état différent de celui { // enregistré ET que cet état est "appuyé" Nb_impulsion++; // Alors j'incrémente la varible de +1 } memoire_debitmetre = etat_debitmetre; // on enregistre l'état du bouton pour le tour suivant if(Nb_impulsion >= 10) // Si le nombre d'impulsions est supérieur ou égale à 10 { digitalWrite(relais_EV, HIGH); // Alors le relais s'éteint }
J'ai remplacé le relais par une LED :
-quand j'appuis sur le BP la LED s'éteint au lieu de s'allumé (c'est du à l'état qui est inversé pour la led, rien de grave), et reste éteinte même quand je lâche le BP.
-quand je fait tourné le débitmètre, au bout de 10 impulsions, la petite LED "L" sur la arduino s'alume et la LED change bien d'état est s'allume.
-mais quand je reappuis sur le BP, plus rien ne se passe.
Par contre quand je branche le relais :
-Quand j'appuis que le poussoir le relais s'allume et reste allumé même quand je lâche le poussoir.
-Quand je fais tourné le débitmètre au bout de 10 impulsions, la petite LED "L" sur la arduino s'allume, le relais ne s'éteint pas mais la petite LED indicative sur le relais baisse un peu d'intensité.
Plusieurs questions se pose:
Pourquoi quand je branche une LED à la place que relais elle s'éteint bien alors que le relais non?
Pourquoi le cycle ne recommence pas? Quand je reappuis que le poussoir ca ne fais rien..