Description:
Le Capteur de débit d’eau YF-S201 est un capteur de débit d’eau économique et populaire, basé sur un capteur à effet Hall et une turbine interne. Lorsque l’eau traverse le corps en plastique, elle fait tourner un rotor magnétique. Ce mouvement génère des impulsions électriques dont la fréquence est directement proportionnelle au débit du fluide.
⚙️ Caractéristiques techniques:
- Plage de mesure : 1 à 30 Litres par minute (L/min).
- Tension de fonctionnement : 5V à 18V DC (supporte parfois jusqu’à 24V selon la marque).
- Consommation de courant : ~15 mA sous 5V.
- Pression maximale de l’eau : ≤ 1,75 MPa (soit environ 17,5 bars).
- Précision : ±10% (peut descendre à ±3% entre 1 et 10 L/min après étalonnage).
- Raccordement mécanique : Filetage mâle G1/2″ (15/21 mm, soit un demi-pouce standard).
- Volume par impulsion : Chaque impulsion électrique correspond à environ 2,25 millilitres de liquide.
🔌 Brochage (Pinout) et Connexion:
- 🔴 Fil Rouge : VCC (Alimentation positive, généralement connectée au 5V de votre carte).
- ⚫ Fil Noir : GND (Masse / Terre).
- 🟡 Fil Jaune : Signal OUT (Sortie numérique d’impulsions en signal carré de type TTL 5V).
💻 Exemple de Code d’intégration (Arduino):
#define FLOW_PIN 2 // Connecter le fil jaune sur le Pin 2 (Arduino Uno/Nano)
volatile unsigned long pulseCount = 0;
float flowRate = 0.0;
unsigned int flowMilliLitres = 0;
unsigned long totalMilliLitres = 0;
unsigned long oldTime = 0;
// Fonction d'interruption appelée à chaque impulsion
void ICACHE_RAM_ATTR pulseCounter() {
pulseCount++;
}
void setup() {
Serial.begin(9600);
pinMode(FLOW_PIN, INPUT_PULLUP);
// Attacher l'interruption sur le front descendant (FALLING)
attachInterrupt(digitalPinToInterrupt(FLOW_PIN), pulseCounter, FALLING);
}
void loop() {
if ((millis() - oldTime) > 1000) { // Calculer le débit toutes les secondes
detachInterrupt(digitalPinToInterrupt(FLOW_PIN)); // Suspendre temporairement l'interruption
// Calcul du débit en L/min selon la formule constructeur (Hz / 7.5)
flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / 7.5;
oldTime = millis();
// Volume passé durant cette seconde (Débit L/min / 60) * 1000 pour les mL
flowMilliLitres = (flowRate / 60.0) * 1000;
totalMilliLitres += flowMilliLitres;
// Affichage des résultats
Serial.print("Débit instantané: ");
Serial.print(flowRate);
Serial.print(" L/min | ");
Serial.print("Volume total: ");
Serial.print(totalMilliLitres / 1000.0);
Serial.println(" L");
pulseCount = 0; // Réinitialiser le compteur d'impulsions
attachInterrupt(digitalPinToInterrupt(FLOW_PIN), pulseCounter, FALLING); // Réactiver l'interruption
}
}






Avis
Il n’y a pas encore d’avis.