- Composants requis
- Capteur de débit d'eau YFS201
- Schéma
- Code du capteur de débit d'eau Arduino
- Capteur de débit d'eau Arduino fonctionnant
Si vous avez déjà visité des entreprises manufacturières à grande échelle, la première chose que vous remarquerez est qu'elles sont toutes automatisées. Les industries des boissons non alcoolisées et les industries chimiques doivent constamment mesurer et quantifier les liquides qu'elles manipulent au cours de ce processus d'automatisation, et le capteur le plus couramment utilisé pour mesurer le débit d'un liquide est un capteur de débit.. En utilisant un capteur de débit avec un microcontrôleur comme Arduino, nous pouvons calculer le débit, vérifier le volume de liquide qui a traversé un tuyau et le contrôler selon les besoins. Outre les industries manufacturières, des capteurs de débit peuvent également être trouvés dans le secteur agricole, la transformation des aliments, la gestion de l'eau, l'industrie minière, le recyclage de l'eau, les machines à café, etc. et les systèmes d'irrigation intelligents où nous devons surveiller et contrôler le débit des liquides.
Dans ce projet, nous allons construire un capteur de débit d'eau en utilisant Arduino. Nous allons interfacer le capteur de débit d'eau avec Arduino et LCD, et le programmer pour afficher le volume d'eau qui a traversé la vanne. Pour ce projet particulier, nous allons utiliser le capteur de débit d'eau YF-S201, qui utilise un effet Hall pour détecter le débit du liquide.
Composants requis
- Capteur de débit d'eau
- Arduino UNO
- Écran LCD (16x2)
- Connecteur avec filetage interne
- Fils de connexion
- Tuyau
Capteur de débit d'eau YFS201
Le capteur a 3 fils ROUGE, JAUNE et NOIR, comme indiqué dans la figure ci-dessous. Le fil rouge est utilisé pour la tension d'alimentation qui va de 5V à 18V et le fil noir est connecté à GND. Le fil jaune est utilisé pour la sortie (impulsions), qui peut être lue par un MCU. Le capteur de débit d'eau se compose d'un capteur à moulinet qui mesure la quantité de liquide qui l'a traversé.
Le fonctionnement du capteur de débit d'eau YFS201 est simple à comprendre. Le capteur de débit d'eau fonctionne sur le principe de l'effet Hall. L'effet Hall est la production de la différence de potentiel à travers un conducteur électrique lorsqu'un champ magnétique est appliqué dans la direction perpendiculaire à celle du flux de courant. Le capteur de débit d'eau est intégré à un capteur magnétique à effet Hall, qui génère une impulsion électrique à chaque tour. Sa conception est telle que le capteur à effet Hall est isolé de l'eau et permet au capteur de rester en sécurité et au sec.
L'image du module de capteur YFS201 seul est illustrée ci-dessous.
Pour me connecter au tuyau et au capteur de débit d'eau, j'ai utilisé deux connecteurs avec un filetage femelle comme indiqué ci-dessous.
Selon les spécifications YFS201, le courant maximal qu'il tire à 5 V est de 15 mA et le débit de travail est de 1 à 30 litres / minute. Lorsque le liquide s'écoule à travers le capteur, il entre en contact avec les ailettes de la roue de turbine, qui est placée sur le trajet du liquide en circulation. L'arbre de la roue de turbine est relié à un capteur à effet Hall. Pour cette raison, chaque fois que l'eau traverse la vanne, elle génère des impulsions. Il ne reste plus qu'à mesurer le temps des plus ou à compter le nombre d'impulsions en 1 seconde puis calculer les débits en litre par heure (L / Hr) puis utiliser une formule de conversion simple pour trouver le volume de l'eau qui y était passée. Pour mesurer les impulsions, nous allons utiliser Arduino UNO. La photo ci-dessous vous montre le brochage du capteur de débit d'eau.
Schéma
Le schéma du circuit du capteur de débit d'eau est illustré ci-dessous pour interfacer un capteur de débit d'eau et un écran LCD (16x2) avec Arduino. Si vous êtes nouveau sur Arduino et les écrans LCD, vous pouvez envisager de lire cet article sur l'interface Arduino et LCD.
La connexion du capteur de débit d'eau et de l'écran LCD (16x2) avec l'Arduino est donnée ci-dessous sous forme de tableau. Notez que le pot est connecté entre 5V et GND et que la broche 2 du pot est reliée à la broche V0 de l'écran LCD.
S.NON |
Broche du capteur de débit d'eau |
Broches Arduino |
1 |
Cable rouge |
5V |
2 |
Noir |
GND |
3 |
Jaune |
A0 |
S. Non |
LCD |
Arduino |
1 |
Vss |
GND (rail au sol de la maquette) |
2 |
VDD |
5V (rail positif de la planche à pain) |
3 |
Pour la connexion avec V0, vérifiez la note ci-dessus |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
sept |
D7 |
9 |
8 |
J6 à J3 |
3 à 5 |
J'ai utilisé une maquette, et une fois que la connexion a été effectuée selon le schéma de circuit illustré ci-dessus, ma configuration de test ressemblait à ceci.
Code du capteur de débit d'eau Arduino
Le code Arduino complet du capteur de débit d'eau est donné en bas de page. L'explication du code est la suivante.
Nous utilisons le fichier d'en-tête de l'écran LCD, ce qui facilite l'interfaçage de l'écran LCD avec Arduino, et les broches 12,11,5,4,3,9 sont attribuées pour le transfert de données entre l'écran LCD et Arduino. La broche de sortie du capteur est connectée à la broche 2 de l'Arduino UNO.
volatile int flow_frequency; // Mesure les impulsions du capteur de débit // Litres / heure calculés float vol = 0.0, l_minute; non signé char flowsensor = 2; // Entrée de capteur unsigned long currentTime; non signé long cloopTime; #comprendre
Cette fonction est une routine de service d'interruption et elle sera appelée chaque fois qu'il y a un signal d'interruption sur la broche 2 d'Arduino UNO. Pour chaque signal d'interruption, le décompte de la variable flow_frequency sera augmenté de 1. Pour plus de détails sur les interruptions et leur fonctionnement, vous pouvez lire cet article sur les interruptions Arduino.
void flow () // Fonction d'interruption { flow_frequency ++; }
Dans la configuration vide, nous disons au MCU que la broche 2 de l'Arduino UNO est utilisée comme INPUT en donnant la commande pinMode (pin, OUTPUT). En utilisant la commande attachInterrupt, chaque fois qu'il y a une augmentation du signal sur la broche 2, la fonction de flux est appelée. Cela augmente le nombre de la variable flow_frequency de 1. L'heure actuelle et cloopTime sont utilisées pour que le code s'exécute toutes les 1 seconde.
void setup () { pinMode (capteur de flux, INPUT); digitalWrite (capteur de flux, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (capteur de flux), flux, RISING); // Interruption de configuration lcd.clear (); lcd.setCursor (0,0); lcd.print ("Water Flow Meter"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = heure actuelle; }
La fonction if garantit que pour chaque seconde le code qu'il contient s'exécute. De cette manière, nous pouvons compter le nombre de fréquences produites par le capteur de débit d'eau par seconde. Les caractéristiques d'impulsion de débit de la fiche technique indiquent que la fréquence est de 7,5 multipliée par le débit. Le débit est donc la fréquence / 7,5. Après avoir trouvé le débit en litres / minute, divisez-le par 60 pour le convertir en litre / s. Cette valeur est ajoutée à la variable vol pour chaque seconde.
boucle vide () { currentTime = millis (); // Toutes les secondes, calculer et imprimer les litres / heure if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Met à jour cloopTime if (flow_frequency! = 0) { // Fréquence d'impulsion (Hz) = 7,5Q, Q est le débit en L / min. l_minute = (flow_frequency / 7,5); // (Fréquence d'impulsion x 60 min) / 7,5Q = débit en L / heure lcd.clear (); lcd.setCursor (0,0); lcd.print ("Taux:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // Réinitialiser le compteur Serial.print (l_minute, DEC); // Imprimer litres / heure Serial.println ("L / Sec"); }
La fonction else fonctionne lorsqu'il n'y a pas de sortie du capteur de débit d'eau dans l'intervalle de temps donné.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Taux:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Capteur de débit d'eau Arduino fonctionnant
Dans notre projet, nous avons connecté le capteur de débit d'eau à un tuyau. Si la vanne de sortie de la conduite est fermée, la sortie du capteur de débit d'eau est nulle (pas d'impulsions). Il n'y aura pas de signal d'interruption vu à la broche 2 de l'Arduino, et le compte de flow_frequency sera nul. Dans cette condition, le code qui est écrit dans la boucle else fonctionnera.
Si la vanne de sortie du tuyau est ouverte. L'eau s'écoule à travers le capteur, qui à son tour fait tourner la roue à l'intérieur du capteur. Dans cette condition, nous pouvons observer des impulsions, qui sont générées par le capteur. Ces impulsions agiront comme un signal d'interruption pour l'Arduino UNO. Pour chaque signal d'interruption (front montant), le décompte de la variable flow_frequency sera augmenté de un. L'heure actuelle et la variable cloopTIme garantissent que pour chaque seconde, la valeur de flow_frequency est prise pour le calcul du débit et du volume. Une fois le calcul terminé, la variable flow_frequency est mise à zéro et toute la procédure est lancée depuis le début.
Le travail complet peut également être trouvé dans la vidéo liée au bas de cette page. J'espère que vous avez apprécié le tutoriel et que vous avez apprécié quelque chose d'utile, si vous rencontrez des problèmes, veuillez les laisser dans la section des commentaires ou utiliser nos forums pour d'autres questions techniques.