???Comment calculer le débit (le niveau) de liquide avec un capteur???
Dans ce tutoriel, vous apprendrez à utiliser un capteur de débit d'eau avec une carte Arduino.
Arduino Mega 2560
L'Arduino Mega 2560 est une carte à microcontrôleur basée sur l'ATmega2560. Il possède 54 broches d’entrée / sortie numériques (dont 14 peuvent être utilisées en tant que sorties PWM), 16 entrées analogiques, 4 UART (ports série matériels), un oscillateur à cristal de 16 MHz, une connexion USB, une prise de courant, un en-tête ICSP, et un bouton de réinitialisation. Il contient tout le nécessaire pour prendre en charge le microcontrôleur. connectez-le simplement à un ordinateur avec un câble USB ou alimentez-le avec un adaptateur CA / CC ou une batterie pour commencer. Le Mega est compatible avec la plupart des boucliers conçus pour les Arduino Duemilanove ou Diecimila.
water flow sensor
Le capteur de débit d'eau est composé d'un corps de vanne en plastique, d'un rotor à eau et d'un capteur à effet Hall. Une roue de turbine incorporée avec un aimant est placée sur une enveloppe en plastique fermée et un capteur à effet Hall est placé. Lorsque l’eau coule dans le pipeline, elle fait tourner la roue de turbine et le flux d’aimant gêne le capteur à effet Hall dépend de la vitesse d'écoulement de l'eau, de sorte que le capteur à effet Hall produit une sortie de signal puisé, cette sortie peut être calculée en tant que volume d'eau ..
Le capteur de débit d'eau est composé d'un corps de vanne en plastique, d'un rotor à eau et d'un capteur à effet Hall. Lorsque l'eau circule dans le rotor, celui-ci roule. Sa vitesse change avec un débit différent. Le capteur à effet Hall émet le signal d'impulsion correspondant.
Mesurer le débit d'eau
Pour mesurer le débit d'eau dans le tuyau, un capteur de débit est utilisé sur la carte Arduino Mega 2560. La connexion de ceux-ci est très simple
Il y a 3 fils: noir, rouge et jaune. Noir à la broche de terre Arduino, Rouge à la broche 5v de Arduino et le fil jaune devront être connectés à une résistance de rappel 10k puis à la broche 2 de l’Arduino.
Principe de calcul du débit
Afin de mesurer la quantité d'eau traversant le capteur de débit d'eau à un moment donné, il a d'abord été passé par le capteur de débit d'eau, qui a été utilisé comme interface d'entrée dans le flux. Des formules sont appliquées afin de mesurer le nombre de rotations / impulsions en une minute de rotation.
Le débit peut être déterminé de manière inférentielle par différentes techniques, telles que le changement de vitesse ou d'énergie cinétique. Ici, nous avons déterminé le débit en modifiant la vitesse de l'eau. La vitesse dépend de la pression qui force les canalisations traversantes. La section de la conduite étant connue et restant constante, la vitesse moyenne est une indication du débit. La relation de base pour déterminer le débit du liquide dans de tels cas est Q = VxA, où Q est le débit / écoulement total d'eau à travers le tuyau, V est la vitesse moyenne du débit et A est la section du tuyau ( la viscosité, la densité et le frottement du liquide en contact avec le tuyau influencent également le débit d'eau).
Fréquence d'impulsion (Hz) = 7.5Q, Q est le débit en litres / minute
Débit (litres / heure) = (fréquence d'impulsion x 60 min) / 7.5Q
En d'autres termes:
Fréquence du capteur (Hz) = 7.5 * Q (Litres / min)
Litres = Q * temps écoulé (secondes) / 60 (secondes / minute)
Litres = (Fréquence (Impulsions / seconde) / 7.5) * temps écoulé (secondes) / 60
Litres = Légumineuses / (7.5 * 60)
Circuit
Code Arduino
volatile int flow_frequency;
unsigned int valeur;
flow_initial = 1600;
unsigned char flowsensor = 2;
unsigned long currentTime;
unsigned long cloopTime;
void flow ()
{
flow_frequency++;
}
void setup()
{
pinMode(flowsensor, INPUT);
digitalWrite(flowsensor, HIGH);
Serial.begin(9600);
attachInterrupt(0, flow, RISING);
sei(); // Enable interrupts
currentTime = millis();
cloopTime = currentTime;
}
void loop ()
{
currentTime = millis();
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime;
// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
valeur = (flow_frequency * 60 / 7.5);
flow_frequency = 0;
// Pas de flow
if ( valeur = 0 ){
flow_frequency = 0;
Serial.print('<');
Serial.print(valeur, DEC);
Serial.print(" L/hour");
Serial.println('>');
Serial.println(" there is no flow ");
delay(1000);
}
// Présence d'eau
else if ( valeur >=flow_initial ) {
flow_frequency = 0;
Serial.println("the flow of water is: ");
Serial.print('<');
Serial.print(valeur, DEC);
Serial.print(" L/hour");
Serial.println('>');
delay(1000);
}
// On peut détecter un fuite en comparant le valeur de flow avec le flow_initial=1600(par exemple)
else {
flow_frequency = 0;
Serial.println("the flow of water is: ");
Serial.print('<');
Serial.print(valeur, DEC);
Serial.print(" L/hour");
Serial.println('>');
Serial.println(" there is a water leak ");
delay(1000);
}
}
}
--------------------------------------------------------------------------------------------
Je vais postuler un video explicatif ultérieurement
Commentaires
Enregistrer un commentaire