Dans cet article, l'Assistant nous expliquera comment créer un système de surveillance et de contrôle du niveau d'eau dans un réservoir. C'est un système simple et fiable.
Ses principales caractéristiques sont les suivantes:
Surveillance du niveau d'eau en temps réel.
Pompe marche / arrêt automatique.
Arrêt d'urgence de la pompe.
Outils et matériaux:
-Arduino Pro mini
-Capteur ultrasonique HC-SR04;
- Module MAX485;
- Module LCD i2c;
LCD 1602;
- Microcontrôleur ATTINY45 / 85;
- Régulateur de tension LM7805;
Transistor NPN (2n3904);
-MOSFET canal N IRFD024PBF;
Diode 1N4007;
Connecteur à 5 broches;
Connecteur 4 broches
Connecteur à 2 broches;
- Bornes à 2 contacts (bleu) - 2 pièces;
- Terminal avec 2 contacts (vert);
Prise DC (- 2 pièces)
- Prise audio (mâle / femelle) - 2 pièces;
- Résistance 1 kOhm;
- Résistance 10 kOhm - 3 pièces;
- Condensateur 100 nF - 3 pièces;
Condensateur 100 uF;
- Bouton SMD, 6x3,5 mm;
-Interrupteurs DIP (SPST 2) - 2 pièces;
- bouton d'alimentation;
-Tumbler;
-12 V DC relais;
-Relais contacteur;
- Alimentation DC 5 V (> 200 mA);
- Alimentation DC 12V (> 500 mA);
-Boîtes pour le cas d'une taille appropriée;
-Fixations;
-Accessoires de soudure;
- tournevis;
-Fil;
Première étape: unité de capteur
Cette unité mesure le niveau d'eau et envoie des données au contrôleur principal. Il dispose de deux capteurs pour mesurer le niveau d'eau. L'un est le capteur de distance à ultrasons HC-SR04, l'autre est deux longues vis qui dépassent vers l'extérieur, comme indiqué sur la photo.
Pour installer les capteurs, vous devez effectuer les étapes suivantes:
Placez le transducteur à ultrasons à l'envers sur le devant du couvercle près du haut et marquez les deux trous pour l'émetteur et le récepteur à ultrasons.
Découpez des trous et fixez le capteur en place avec de la colle chaude.
Percez ensuite deux trous d'un diamètre de 3 mm avec un espace de 2-3 cm au centre du couvercle.
Insérez les longs boulons M3 avec la borne de fil serrée entre les deux rondelles à l'arrière du couvercle et serrez les écrous M3 de l'autre côté.
L'unité de capteur utilise l'ATTINY45 comme microcontrôleur principal. Comme mentionné précédemment, le HC-SR04 est utilisé pour mesurer le niveau d'eau. Il fonctionne en mesurant la distance depuis le haut du réservoir.
En outre, le contrôle est effectué à l'aide de deux boulons dans le circuit, sur lesquels le transistor est installé. Le microcontrôleur lit les données de ces deux capteurs et envoie des données à l'Arduino installé dans l'unité de contrôleur.
Tout d'abord, le maître voulait envoyer des données via les modules RF HC-12. Mais la gamme de ces modules ne correspond pas aux exigences.L'assistant a utilisé le convertisseur MAX485 TTL vers RS485 et a fabriqué une petite carte de montage vertical à installer à la place des modules HC-12.
Le schéma et le lien vers le forum peuvent être téléchargés à cette adresse.
L'installation est la suivante:
HC-SR04 au circuit principal:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
Boulons M3 au circuit principal:
Boulon 1 - 5 V (CN1).
Boulon 2-100 (CN1).
Module MAX485 (TX):
VCC - 5V (connecteur HC-12)
A - Prise audio 1/4 pouce.
B - Prise audio 1/4 pouce.
GND - GND (connecteur HC-12)
R0 - RX (connecteur HC-12)
RE - VCC (MAX485) ou 5V.
DE - RE (abrégé en RE et DE).
DI - TX (connecteur HC-12).
Prise DC (connecteur P1):
Astuce - 5V
Manchon - GND
Deuxième étape: contrôleur
Le fonctionnement du contrôleur est simple. Arduino est utilisé comme contrôleur principal. Il reçoit les données du capteur envoyées par la carte de l'émetteur via le module max485. Il dispose d'un écran LCD 1602 qui affiche le niveau d'eau actuel et le fonctionnement de la pompe. Il utilise un relais 12 V comme interrupteur pour activer le contacteur de relais. Il dispose de deux interrupteurs, un pour le rétroéclairage de l'écran LCD et un pour l'activation / désactivation de la pompe d'urgence.
Un lien vers le schéma de circuit et la conception de la carte de circuit imprimé pour l'émetteur et le récepteur est situé ici.
Le module LCD i2c est directement soudé au LCD 1602. Le cavalier de rétroéclairage du module i2c est connecté à l'interrupteur à bascule pour marche / arrêt. Le bouton d'urgence (grand) est connecté au circuit principal via le connecteur P4.
Module LCD I2c au circuit principal (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5 V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Connexions des contacteurs de relais:
A1 - 230 VAC1 (zéro).
A2 - NON (contact relais).
S1 - 230 VAC1 (zéro).
S2 - 230 VAC2 (phase)
L1 - Fil du moteur de pompe 1
L2 - Fil du moteur de pompe 2.
Connectez le contact du relais COM à 230 VAC2 (ligne).
Troisième étape: logiciel et programmation
Vous devez maintenant programmer les contrôleurs sur les deux appareils.
Pour télécharger le code sur ATTINY45, il télécharge la bibliothèque SoftwareSerial.h.
Dans la fonction Loop,
> Vérifiez d'abord si le réservoir est plein ou non.
> S'il est plein, il envoie "255".
> S'il n'est pas plein, il vérifie le niveau d'eau avec un capteur sonore ultrasonique et transmet les données via une communication série.
Ce programme utilise la sous-fonction getwtrLvl () pour obtenir le niveau d'eau actuel. Premièrement, il mesure le temps nécessaire au capteur pour transmettre et recevoir des ondes ultrasonores. Le temps est ensuite converti en distance en utilisant la vitesse du son.
dist = pulseIn (echoPin, HIGH); // temps passé par l'onde sonore.
dist = dist / 28/2; // traduire le temps en distance en cm
dist = dist * 1,25; // ici 1,25 est le facteur de correction pour surmonter l'erreur de mesure
retour dist; // renvoie la distance à la fonction appelante
Maintenant pour Arduino.
Dans la fonction Loop:
> Tout d'abord, il est vérifié si le bouton d'urgence est enfoncé ou non.
> Vérification du capteur. Une partie du programme vérifie une erreur de capteur. c'est-à-dire que si les données reçues sont invalides (<= 1) 5 fois, l'écran affiche l'erreur du capteur et la pompe s'arrête.
> La partie suivante affiche le niveau d'eau actuel et donne une commande pour la pompe 1 si le niveau d'eau est petit, ou 0 s'il est à 100% (plein).
Ce programme utilise deux sous-fonctions updtMotor () et getWaterLvl (). La fonction updtMotor () affiche le fonctionnement de la pompe sur l'écran LCD et envoie également un signal au relais.
La fonction getWaterLvl vérifie d'abord s'il y a une erreur de connexion. Si la connexion entre l'émetteur et le récepteur n'est pas établie pendant le temps d'attente (3000 ms). Il montre une erreur de capteur et arrête la pompe.
Une fois la connexion rétablie, l'opération reprend.
Tout est prêt, merci au maître pour une intéressante fait maison.