In diesem Artikel erklärt uns der Assistent, wie ein System zur Überwachung und Steuerung des Wasserstandes in einem Tank erstellt wird. Es ist ein einfaches und zuverlässiges System.
Die Hauptmerkmale sind wie folgt:
Echtzeit-Wasserstandsüberwachung.
Automatische Ein / Aus-Pumpe.
Notabschaltung der Pumpe.
Werkzeuge und Materialien:
-Arduino Pro mini
-Ultraschallsensor HC-SR04;
- Modul MAX485;
- LCD-Modul i2c;
LCD 1602;
- Mikrocontroller ATTINY45 / 85;
- Spannungsregler LM7805;
NPN-Transistor (2n3904);
-N-Kanal-MOSFET IRFD024PBF;
Diode 1N4007;
5-poliger Stecker;
4-poliger Stecker
-2-poliger Stecker;
- Klemmen mit 2 Kontakten (blau) - 2 Stk;
- Terminal mit 2 Kontakten (grün);
DC-Buchse (- 2 Stk.)
-Audio-Buchse (männlich / weiblich) - 2 Stück;
- Widerstand 1 kOhm;
- Widerstand 10 kOhm - 3 Stk;
- Kondensator 100 nF - 3 Stk;
Kondensator 100 uF;
- SMD-Taste, 6 x 3,5 mm;
-DIP-Schalter (SPST 2) - 2 Stk;
- Netzschalter;
-Tumbler;
-12V DC Relais;
-Relaisschütz;
- Gleichstromversorgung 5 V (> 200 mA);
- 12 V Gleichstromversorgung (> 500 mA);
-Boxen für den Fall einer geeigneten Größe;
-Fasteners;
-Lötzubehör;
- Schraubendreher;
-Wire;
Erster Schritt: Sensoreinheit
Dieses Gerät misst den Wasserstand und sendet Daten an die Hauptsteuerung. Es verfügt über zwei Sensoren zur Messung des Wasserstandes. Einer ist der Ultraschall-Abstandssensor HC-SR04, der andere sind zwei lange Schrauben, die nach außen ragen, wie auf dem Foto gezeigt.
Um die Sensoren zu installieren, müssen Sie die folgenden Schritte ausführen:
Stellen Sie den Ultraschallwandler verkehrt herum auf die Vorderseite der Abdeckung in der Nähe der Oberseite und markieren Sie die beiden Löcher für den Ultraschallsender und -empfänger.
Schneiden Sie Löcher und befestigen Sie den Sensor mit Heißkleber.
Bohren Sie dann zwei Löcher mit einem Durchmesser von 3 mm und einem Spalt von 2-3 cm in der Mitte der Abdeckung.
Setzen Sie die langen M3-Schrauben mit der Kabelklemme zwischen den beiden Unterlegscheiben auf der Rückseite der Abdeckung ein und ziehen Sie die M3-Muttern auf der anderen Seite fest.
Die Sensoreinheit verwendet den ATTINY45 als primären Mikrocontroller. Wie bereits erwähnt, wird HC-SR04 zur Messung des Wasserstandes verwendet. Dabei wird der Abstand von der Oberseite des Tanks gemessen.
Die Steuerung erfolgt auch mit zwei Schrauben in der Schaltung, in die der Transistor eingebaut ist. Der Mikrocontroller liest Daten von diesen beiden Sensoren und sendet Daten an das in der Controller-Einheit installierte Arduino.
Zunächst wollte der Master Daten über die HC-12 RF-Module senden. Die Reichweite dieser Module entspricht jedoch nicht den Anforderungen.Der Assistent verwendete den Konverter MAX485 TTL zu RS485 und fertigte anstelle der HC-12-Module eine kleine Riser-Platine an.
Schema und Link zum Board können heruntergeladen werden an dieser Adresse.
Die Installation ist wie folgt:
HC-SR04 zum Hauptstromkreis:
Vcc - 5 V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
M3-Schrauben am Hauptstromkreis:
Schraube 1 - 5 V (CN1).
Schraube 2 - 100 (CN1).
MAX485 (TX) Modul:
VCC - 5 V (HC-12-Anschluss)
A - 1/4-Zoll-Audiobuchse.
B - 1/4-Zoll-Audiobuchse.
GND - GND (HC-12-Anschluss)
R0 - RX (HC-12-Anschluss)
RE - VCC (MAX485) oder 5V.
DE - RE (abgekürzt als RE und DE).
DI - TX (HC-12-Anschluss).
DC-Buchse (P1-Anschluss):
Tipp - 5V
Hülse - GND
Schritt zwei: Controller
Die Bedienung der Steuerung ist einfach. Arduino wird als Hauptcontroller verwendet. Es empfängt Sensordaten, die von der Senderplatine über das max485-Modul gesendet werden. Es verfügt über ein 1602 LCD-Display, das den aktuellen Wasserstand und den Pumpenbetrieb anzeigt. Es verwendet ein 12-V-Relais als Schalter zum Einschalten des Relaisschützes. Es verfügt über zwei Schalter, einen zum Hintergrundbeleuchten des LCD und einen zum Ein- und Ausschalten der Notpumpe.
Eine Verknüpfung zum Schaltplan und Aufbau der Leiterplatte für Sender und Empfänger befindet sich hier.
Das i2c LCD-Modul ist direkt mit dem 1602 LCD verlötet. Die Hintergrundbeleuchtung des i2c-Moduls ist zum Ein- und Ausschalten mit dem Kippschalter verbunden. Der Notruftaster (groß) ist über den Stecker P4 mit dem Hauptstromkreis verbunden.
I2c LCD-Modul zum Hauptstromkreis (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5 V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Anschlüsse des Relaisschützes:
A1 - 230 VAC1 (Null).
A2 - NEIN (Relaiskontakt).
S1 - 230 VAC1 (Null).
S2 - 230 VAC2 (Phase)
L1 - Pumpenmotorkabel 1
L2 - Pumpenmotorkabel 2.
Verbinden Sie den COM-Relaiskontakt mit 230 VAC2 (Leitung).
Schritt drei: Software und Programmierung
Jetzt müssen Sie die Controller auf beiden Geräten programmieren.
Um Code auf ATTINY45 herunterzuladen, wird die SoftwareSerial.h-Bibliothek heruntergeladen.
In der Loop-Funktion
> Überprüfen Sie zuerst, ob der Tank voll ist oder nicht.
> Wenn es voll ist, wird "255" gesendet.
> Wenn es nicht voll ist, überprüft es den Wasserstand mit einem Ultraschallsensor und überträgt Daten über serielle Kommunikation.
Dieses Programm verwendet die Unterfunktion getwtrLvl (), um den aktuellen Wasserstand abzurufen. Zunächst wird die Zeit gemessen, die der Sensor benötigt, um Ultraschallwellen zu senden und zu empfangen. Dann wird die Zeit mit der Schallgeschwindigkeit in Entfernung umgewandelt.
dist = pulsIn (echoPin, HIGH); // Zeit, die die Schallwelle verbringt.
dist = dist / 28/2; // Zeit in Abstand in cm übersetzen
dist = dist * 1,25; // hier ist 1,25 der Korrekturfaktor zur Überwindung des Messfehlers
return dist; // gibt die Entfernung zur aufrufenden Funktion zurück
Nun zu Arduino.
In der Loop-Funktion:
> Zunächst wird geprüft, ob die Notruftaste gedrückt ist oder nicht.
> Sensorprüfung. Ein Teil des Programms prüft auf einen Sensorfehler. d.h. wenn die empfangenen Daten fünfmal ungültig (<= 1) sind, zeigt die Anzeige den Sensorfehler an und die Pumpe schaltet ab.
> Der nächste Teil zeigt den aktuellen Wasserstand an und gibt einen Befehl für Pumpe 1, wenn der Wasserstand klein ist, oder 0, wenn er 100% (voll) ist.
Dieses Programm verwendet zwei Unterfunktionen updtMotor () und getWaterLvl (). Die Funktion updtMotor () zeigt den Betrieb der Pumpe auf dem LCD an und sendet auch ein Signal an das Relais.
Die Funktion getWaterLvl prüft zunächst, ob ein Verbindungsfehler vorliegt. Wenn die Verbindung zwischen Sender und Empfänger während der Wartezeit (3000 ms) nicht hergestellt wird. Es zeigt einen Sensorfehler und schaltet die Pumpe aus.
Wenn die Verbindung wiederhergestellt ist, wird der Betrieb fortgesetzt.
Alles ist fertig, danke an den Meister für ein interessantes hausgemacht.