Le capteur de débit d’eau 1 à 30 L/min compte l’eau qui passe dans une canalisation : une petite turbine tourne dans le courant, un aimant fixé sur son axe passe devant un capteur à effet Hall, et chaque tour produit une impulsion électrique. Le nombre d’impulsions par seconde donne le débit, leur total donne le volume. C’est le composant des compteurs d’eau maison, des arrosages automatiques, des doseurs et des protections de pompe qui se coupent quand le réservoir est vide.
La référence livrée est le YF-S201C, un modèle à corps traversant en plastique et raccords filetés G1/2″ (DN15), la dimension de la plupart des tuyaux d’eau domestiques. Trois fils seulement : alimentation, masse, et une sortie impulsions que l’Arduino lit sur une entrée d’interruption. Aucun convertisseur analogique n’est nécessaire, et il n’y a rien à calibrer dans le programme pour démarrer puisque le capteur est linéaire sur toute sa plage.
À quoi sert un capteur de débit ?
- Compter l’eau consommée — le volume cumulé, en litres, sans relever de compteur à la main.
- Doser — remplir un volume précis (un arrosage, un mélange, un aquarium) et couper au bon moment.
- Surveiller — détecter une fuite, un débit anormal, une canalisation bouchée ou une pompe qui tourne à vide.
- Réguler — maintenir un débit constant en agissant sur une vanne ou sur la vitesse d’une pompe.
- Protéger — couper l’alimentation d’une pompe dès que le débit tombe à zéro, faute d’eau à aspirer.
Caractéristiques techniques
| Modèle | YF-S201C — capteur à effet Hall à turbine traversante |
|---|---|
| Plage de mesure | 1 à 30 litres par minute |
| Alimentation | 5 à 18 V continu (4,5 V minimum en pratique) ; 5 V pour un Arduino |
| Consommation | 15 mA au maximum sous 5 V |
| Sortie | Signal carré, niveau haut supérieur à 4,5 V sous une alimentation de 5 V, rapport cyclique 50 % |
| Étalonnage | 450 impulsions par litre — soit environ 2,25 ml par impulsion |
| Relation débit / fréquence | Fréquence (Hz) = 7,5 × débit (L/min) — donc débit = fréquence / 7,5 |
| Précision | ± 3 % entre 1 et 25 L/min ; de l’ordre de ± 10 % en dehors de cette plage |
| Pression maximale | 1,75 MPa (17,5 bar) — très au-dessus du réseau domestique |
| Température du liquide | Jusqu’à 80 °C |
| Raccords | Filetage mâle G1/2″ (DN15) des deux côtés |
| Dimensions | Environ 62 × 36 × 35 mm, corps traversant — deux vis de fixation sur le boîtier |
| Câble | 3 fils d’environ 15 cm : rouge, noir, jaune |
| Endurance | 300 000 cycles sous 0,1 MPa annoncés par le fabricant |
| Liquide | Eau uniquement — ni carburant, ni liquide chargé en particules abrasives |
Brochage : trois fils, et la règle à ne pas oublier
| Rouge | Alimentation positive. À relier au 5 V de l’Arduino. |
|---|---|
| Noir | Masse. À relier au GND de l’Arduino, référence commune du montage. |
| Jaune | Sortie impulsions. À relier à une entrée numérique capable d’interruption — D2 ou D3 sur un Uno R3. |
La sortie suit la tension d’alimentation. Le capteur ne régule pas son niveau haut : alimenté en 5 V, il envoie des impulsions de 5 V, directement compatibles avec un Arduino Uno. Si vous l’alimentez en 12 V ou plus, la sortie montera elle aussi vers cette tension, et l’entrée de la carte ne le supportera pas. Dans ce cas, alimentez le capteur en 5 V séparément, ou intercalez un diviseur de tension sur le fil jaune. C’est la cause la plus fréquente de carte abîmée sur ce montage.
Montage : les cinq points qui décident de la fiabilité
- Respectez la flèche moulée sur le corps : elle indique le sens de circulation. Monté à l’envers, le capteur ne mesure rien du tout — la turbine tourne alors à vide, sans produire d’impulsion exploitable.
- Gardez le boîtier vers le haut, axe de turbine horizontal. Le fabricant annonce une installation possible dans n’importe quelle position, mais une lecture stable demande que l’air et les dépôts ne stagnent pas dans la chambre de mesure. Un capteur tête en bas donne des impulsions irrégulières.
- Filtrez en amont sur une eau chargée. Un grain de sable ou un morceau de calcaire bloque la turbine : un filtre ou une crépine avant le capteur lui évite une panne définitive.
- Ne le laissez jamais tourner à sec. La turbine et son axe sont lubrifiés par l’eau ; à vide, l’usure est rapide et le débit n’est plus mesurable.
- Bien en dessous de 1 L/min, la lecture devient irrégulière. En bas de plage, la pression cinétique ne suffit plus à faire tourner la turbine de façon continue. Pour un goutte-à-goutte, ce capteur n’est pas l’outil adapté.
Mini-projet : un compteur d’eau avec alerte de débit excessif
Le montage tient sur la plaque d’essai et le programme fait trois choses : il affiche le débit instantané, il cumule le volume depuis la mise sous tension, et il allume un buzzer au-delà du seuil que vous fixez.
Ce qu’il faut
| La mesure | Le capteur de débit YF-S201C — celui de cette page |
|---|---|
| Le cerveau | Uno R3 + câble USB |
| L’alerte sonore | Buzzer 16 ohms 2 kHz actif |
| Les liaisons | Fils de prototypage, ou trois pinces crocodiles pour les premiers essais |
| Le raccordement à l’eau | Un adaptateur G1/2″ femelle et du ruban téflon, ou un simple tuyau souple emmanché sur les filets pour un essai |
Le câblage
| Capteur, fil rouge | → Arduino 5V |
|---|---|
| Capteur, fil noir | → Arduino GND |
| Capteur, fil jaune | → Arduino D2 |
| Buzzer, fil rouge | → Arduino D8 |
| Buzzer, fil noir | → Arduino GND |
Le programme
À copier dans l’IDE Arduino, puis à téléverser sur la carte. Le débit s’affiche sur le moniteur série réglé à 9600 bauds.
/*
* Compteur de debit d'eau - capteur YF-S201C (1 a 30 L/min)
* Carte : Arduino Uno R3
* Debit instantane, volume cumule, alerte au-dela d'un seuil.
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte BROCHE_DEBIT = 2; // fil jaune du capteur, entree interruption
const byte BROCHE_ALERTE = 8; // buzzer actif ou LED de signalisation
const float IMPULSIONS_PAR_LITRE = 450.0; // valeur moyenne du capteur
const float SEUIL_ALERTE = 15.0; // litres par minute
volatile unsigned int compteur = 0;
float volumeTotal = 0;
unsigned long dernierCalcul = 0;
void compterImpulsion() {
compteur++;
}
void setup() {
Serial.begin(9600);
pinMode(BROCHE_DEBIT, INPUT);
pinMode(BROCHE_ALERTE, OUTPUT);
// Le capteur produit un front montant a chaque passage de son aimant :
// on le compte par interruption pour ne rien rater pendant le reste
// du programme.
attachInterrupt(digitalPinToInterrupt(BROCHE_DEBIT), compterImpulsion, RISING);
dernierCalcul = millis();
}
void loop() {
// Une fenetre d'une seconde : assez large pour etre stable,
// assez courte pour que le debit affiche suive la realite.
if (millis() - dernierCalcul >= 1000) {
noInterrupts();
unsigned int impulsions = compteur;
compteur = 0;
interrupts();
float litresDansLaSeconde = impulsions / IMPULSIONS_PAR_LITRE;
float debitParMinute = litresDansLaSeconde * 60.0;
volumeTotal = volumeTotal + litresDansLaSeconde;
dernierCalcul = millis();
Serial.print("Debit : ");
Serial.print(debitParMinute, 2);
Serial.print(" L/min volume cumule : ");
Serial.print(volumeTotal, 2);
Serial.println(" L");
if (debitParMinute >= SEUIL_ALERTE) {
digitalWrite(BROCHE_ALERTE, HIGH);
} else {
digitalWrite(BROCHE_ALERTE, LOW);
}
}
}Comment ça marche
attachInterruptcompte chaque impulsion dans une variablevolatile, séparément du programme principal : aucune impulsion n’est perdue, même si le reste du code prend son temps.- La fenêtre d’une seconde est le compromis habituel sur ce capteur. Plus courte, le débit saute dans tous les sens ; plus longue, l’affichage répond avec retard. Pour un compteur d’eau au litre près, une fenêtre de dix secondes donne une lecture plus douce.
- La conversion tient en deux lignes : les impulsions comptées divisées par 450 donnent des litres, multipliés par 60 des litres par minute. Vous pouvez écrire 7,5 à la place de 450 dans le calcul, le résultat est identique puisque 450 impulsions par litre et 7,5 Hz par litre par minute décrivent la même chose.
- Le volume cumulé additionne les litres de chaque seconde : c’est le compteur d’eau de votre installation, remis à zéro à chaque redémarrage.
- Le buzzer est un modèle actif : il sonne dès qu’un niveau haut lui est appliqué, sans fréquence à définir. Un buzzer passif demanderait
tone().
Variante : afficher le débit et couper la pompe
Pour un montage fixe, deux ajouts rendent le projet autonome : un écran pour lire les litres sans ordinateur, et un relais pour agir.
- Afficher — remplacez le moniteur série par un afficheur LCD 16×02 I2C : deux fils pour le bus et deux pour l’alimentation. La bibliothèque s’occupe du reste, et le compteur devient lisible dans un local technique.
- Couper — un module 1 relais 5 V placé sur l’alimentation d’une pompe miniature permet d’arrêter le pompage dès que le débit tombe à zéro : c’est la protection contre la marche à sec, classique sur les surpresseurs et les installations d’arrosage.
- Alimenter — pour une pompe en 12 V, une alimentation 12 V 2 A séparée évite de faire passer le courant du moteur par la carte. Le capteur, lui, reste alimenté en 5 V par l’Arduino.
Attention au sens du relais. Beaucoup de modules se collent sur un niveau bas : le programme devient alors LOW pour couper et HIGH pour alimenter. Vérifiez sur votre module avant de raccorder la pompe, et coupez toujours l’alimentation avant d’intervenir sur le circuit de puissance.
Questions fréquentes
Le débit affiché est faux, comment le corriger ?
Étalonnez au volume réel : remplissez un récipient gradué, notez le nombre d’impulsions et divisez. La constante de 450 impulsions par litre est une moyenne ; selon la pression et l’orientation du capteur, elle se situe couramment entre 430 et 470. Corrigez simplement la constante IMPULSIONS_PAR_LITRE dans le programme et vous obtenez votre propre étalonnage.
Pourquoi aucune impulsion, alors que l’eau passe ?
Trois causes, dans l’ordre : le capteur est monté dans le mauvais sens — la flèche du corps doit suivre le flux ; la turbine est bloquée par un dépôt ou un grain de sable ; ou le fil jaune n’est pas sur une broche d’interruption, ce qui interroge bien la broche mais laisse passer les impulsions entre deux lectures.
Peut-il mesurer de l’air ou du carburant ?
Non. Le corps et la turbine sont prévus pour l’eau. Un carburant attaque le plastique et la mesure n’a plus aucun sens. Pour l’air, il existe des débitmètres spécifiques, et ce capteur n’en fait pas partie.
Combien de pression supporte-t-il ?
1,75 MPa, soit 17,5 bar — largement plus que la pression d’un réseau domestique, qui tourne autour de 0,3 à 0,5 MPa. La limite à surveiller n’est pas la pression mais la propreté de l’eau et la température, qui ne doit pas dépasser 80 °C.
Faut-il une résistance de tirage sur la sortie ?
Sur la plupart des exemplaires, la résistance de tirage est déjà montée dans le capteur et le signal se lit directement. Si votre lecture est erratique alors que le câblage est bon, ajoutez une résistance de 10 kΩ entre le fil jaune et le 5 V : c’est la parade connue sur les clones qui omettent ce composant.
À combiner avec
Pour surveiller un réservoir en même temps que la consommation, le capteur de niveau d’eau complète naturellement ce débitmètre : l’un mesure ce qui entre, l’autre le niveau restant. Sur une eau chaude ou un circuit de chauffage, la sonde DS18B20 en acier inoxydable apporte la température du liquide, seul paramètre manquant pour un suivi complet de l’installation.












