Capteur et Contrôleur de Niveau de Fluide Intelligent avec Arduino et Ultrason HC-SR04
Composants et Fournitures
| Arduino UNO | × | 1 |
| Capteur ultrasons HC-SR04 (générique) | × | 1 |
Applications et Services
- Arduino IDE
À Propos de ce Projet
Le schéma ci-dessous montre le capteur ultrasons et l'Arduino. Le modèle réalisé était uniquement pour présentation.
Introduction
Les indicateurs de niveau sont utilisés dans tous les secteurs industriels. On peut aussi les implémenter pour du petit échelle ou usage domestique. Nous avons construit un capteur de niveau de fluide qui fournit des données continues. Il indique le volume de fluide dans le réservoir. Le système créé est un système en boucle fermée (feedback) : il ne se contente pas d'indiquer le niveau, il le contrôle aussi via une pompe.
Construction
La figure ci-dessus est un diagramme de blocs simplifié. L'Arduino est le microcontrôleur. Le capteur ultrasons HC-SR04 est connecté à l'Arduino et monté au sommet du réservoir. J'ai utilisé deux pompes immergées pour le modèle. Ces pompes sont unidirectionnelles (ne transportent le fluide que dans un sens). On pourrait utiliser une pompe bidirectionnelle. Les deux pompes reçoivent leur signal de l'Arduino. Elles nécessitent 12V, donc un driver moteur est requis (non montré sur le diagramme).
Fonctionnement
Pour faciliter la compréhension, divisons le modèle en deux parties :
- Système de détection
- Système de contrôle
Détection
Le système de détection utilise le capteur ultrasons HC-SR04. La gamme ultrasons dépasse 20 kHz. Ce capteur a un Émetteur et un Récepteur. L'émetteur produit une fréquence de 40 kHz ; l'onde ultrasons rebondit sur la surface du fluide et est reçue par le récepteur. Le capteur a 4 broches : GND → GND Arduino, VCC → 3.3V ou 5V. La broche TRIG déclenche l'émission. La broche ECHO reçoit l'écho. On obtient ainsi la durée de propagation. Conversion temps → distance :
duration = pulseIn(echoPin, HIGH); // Temps de vol
distance = duration * 0.034 / 2; // Distance en cm (vitesse son ~340 m/s)
Système de Contrôle
L'Arduino reçoit les données du capteur et commande les pompes. On définit un niveau seuil dans le code. Si le niveau dépasse le seuil, la pompe du réservoir s'active et vide le réservoir jusqu'à repasser sous le seuil. Quand le niveau tombe sous le seuil, la pompe du réservoir de réserve remplit le réservoir. (Dans la version finale, un seul réservoir et une seule pompe seraient utilisés.)
Améliorations Futures
- Utiliser une pompe bidirectionnelle hors du réservoir → une seule pompe nécessaire.
- Afficher le niveau sur écran OLED ou LCD.
- Stocker les données dans le cloud via IoT.
- Contrôler et surveiller le niveau via application mobile (IoT).
- Ajouter une alarme sonore (buzzer) en cas de débordement, et modifier le code pour prévenir tout débordement.
Code
Contrôleur de Niveau d'Eau Arduino
int tankPump = 3;
int reservoirPump = 2;
int trigPin = 9; // blanc
int echoPin = 10; // brun
long duration;
int distance;
void setup() {
Serial.begin(9600);
pinMode(tankPump, OUTPUT);
pinMode(reservoirPump, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
ultrasound();
pump();
}
void ultrasound() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
delay(1000);
}
void pump() {
if (distance > 10) { // Niveau bas (distance grande = réservoir vide)
digitalWrite(tankPump, HIGH); // Pompe réservoir ON (vidange)
digitalWrite(reservoirPump, LOW);
} else {
digitalWrite(tankPump, LOW);
}
if (distance < 6) { // Niveau haut (distance petite = réservoir plein)
digitalWrite(reservoirPump, HIGH); // Pompe réserve ON (remplissage)
digitalWrite(tankPump, LOW);
} else {
digitalWrite(reservoirPump, LOW);
}
}
Schémas
Processus de fabrication
- Capteur de Pression Artérielle : Fonctionnement et Applications Clés
- Capteurs de Tension : Fonctionnement et Applications dans les Systèmes Électriques Modernes
- Huile de Transmission Expliquée : Rôle, Importance et Guide Entretien
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
- Maîtriser le contrôle des capteurs et actionneurs sur Raspberry Pi : Accéléromètre, Servo et Streaming de données
- Construire un système aéroponique automatisé avec Raspberry Pi et capteur d'humidité
- Vérifier et calibrer votre capteur d'humidité pour des mesures précises
- Surveillance Précise de Température et Humidité avec SHT15 sur Windows 10 IoT Core