I den här artikeln kommer guiden att berätta för oss hur man skapar ett system för övervakning och kontroll av vattennivån i en tank. Det är ett enkelt och pålitligt system.
De viktigaste funktionerna är följande:
Vattennivåövervakning i realtid.
Automatisk på / av-pump.
Nödstopp av pumpen.
Verktyg och material:
-Arduino Pro mini
-Ultrasonic sensor HC-SR04;
- Modul MAX485;
- LCD-modul i2c;
LCD 1602;
- Mikrokontroller ATTINY45 / 85;
- Spänningsregulator LM7805;
NPN-transistor (2n3904);
-N-kanal MOSFET IRFD024PBF;
Diode 1N4007;
5-stiftskontakt;
4-stiftskontakt
-2 stiftkontakt;
- Plintar med 2 kontakter (blå) - 2 st;
- Terminal med 2 kontakter (grön);
DC-uttag (- 2 st.)
-Ludio jack (manlig / kvinnlig) - 2 st;
- Motstånd 1 kOhm;
- Motstånd 10 kOhm - 3 st;
- Kondensator 100 nF - 3 st;
Kondensator 100 uF;
- SMD-knapp, 6x3,5 mm;
-DIP-omkopplare (SPST 2) - 2 st;
- strömbrytare;
-Tumbler;
-12V DC-relä;
-Förläng kontaktor;
- DC-strömförsörjning 5 V (> 200 mA);
- DC 12V strömförsörjning (> 500 mA);
-Boxar för en lämplig storlek;
-Krepezh;
-Lödningstillbehör;
- skruvmejsel;
seeing-;
Steg ett: Sensorenhet
Denna enhet mäter vattennivån och skickar data till huvudkontrollen. Den har två sensorer för att mäta vattennivån. Den ena är ultraljudssensor HC-SR04, de andra två långa skruvarna sticker utåt, som visas på bilden.
För att installera sensorerna måste du utföra följande steg:
Placera ultraljudsgivaren upp och ner på framsidan av locket nära toppen och markera de två hålen för ultraljudssändaren och mottagaren.
Skär hål och fäst sensorn på plats med hett lim.
Borra sedan två hål med en diameter på 3 mm med ett mellanrum på 2-3 cm i mitten av locket.
Sätt i de långa M3-bultarna med kabelanslutningen fastklämd mellan de två brickorna på baksidan av locket och dra åt M3-muttrarna på andra sidan.
Sensorenheten använder ATTINY45 som den primära mikrokontrollern. Som nämnts tidigare används HC-SR04 för att mäta vattennivån. Det fungerar genom att mäta avståndet från tankens överkant.
Styrningen utförs också med två bultar i kretsen, som transistorn är installerad. Mikrokontrollern läser data från båda dessa sensorer och skickar data till Arduino installerad i styrenheten.
Först ville befälhavaren skicka data via HC-12 RF-moduler. Men utbudet av dessa moduler stämmer inte med kraven.Guiden använde MAX485 TTL till RS485-omvandlaren och gjorde en liten stigerör för att installera i stället för HC-12-modulerna.
Schema och länk till styrelsen kan laddas ner på den här adressen.
Installationen är som följer:
HC-SR04 till huvudkrets:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
M3-bultar till huvudkretsen:
Bult 1 - 5 V (CN1).
Bult 2 - 100 (CN1).
MAX485 (TX) -modul:
VCC - 5V (HC-12-anslutning)
A - 1/4-tums ljuduttag.
B - 1/4-tums ljuduttag.
GND - GND (HC-12-anslutning)
R0 - RX (HC-12-anslutning)
RE - VCC (MAX485) eller 5V.
DE - RE (förkortat RE och DE).
DI - TX (HC-12-kontakt).
DC-uttag (P1-anslutning):
Tips - 5V
Ärm - GND
Steg två: Controller
Styrningen är enkel. Arduino används som huvudkontroll. Den tar emot sensordata som skickas från sändarkortet via max485-modulen. Den har en 1602 LCD-skärm som visar aktuell vattennivå och pumpdrift. Det använder ett 12 V-relä som en strömbrytare för att slå på reläkontaktorn. Den har två omkopplare, en för bakgrundsbelysning av LCD och en för nödpump på / av.
En länk till kretsschemat och utformningen av det tryckta kretskortet för sändaren och mottagaren finns här.
I2c LCD-modulen är direkt lödd till 1602 LCD. Bakgrundsbelysningshopparen på i2c-modulen är ansluten till vippbrytaren för på / av. Nödknappen (stor) är ansluten till huvudkretsen via kontakt P4.
I2c LCD-modul till huvudkrets (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Reläkontaktoranslutningar:
A1 - 230 VAC1 (noll).
A2 - NEJ (reläkontakt).
S1 - 230 VAC1 (noll).
S2 - 230 VAC2 (fas)
L1 - Pumpmotortråd 1
L2 - Pumpmotortråd 2.
Anslut COM-reläkontakten till 230 VAC2 (linje).
Steg tre: Programvara och programmering
Nu måste du programmera kontrollerna på båda enheterna.
För att ladda ner kod till ATTINY45 laddar den ner SoftwareSerial.h-biblioteket.
I Loop-funktionen
> Kontrollera först om tanken är full eller inte.
> Om det är fullt skickar det "255."
> Om den inte är full kontrollerar den vattennivån med en ultraljudssensor och överför data via seriell kommunikation.
Detta program använder underfunktionen getwtrLvl () för att få den aktuella vattennivån. Först mäter den tiden det tar sensorn att sända och ta emot ultraljudsvågor. Därefter konverteras tiden till avstånd med hjälp av ljudets hastighet.
dist = pulseIn (echoPin, HIGH); // tid tillbringad av ljudvågen.
dist = dist / 28/2; // översätta tiden till avstånd i cm
dist = dist * 1,25; // här 1.25 är korrigeringsfaktorn för att övervinna mätfelet
returnera dist; // returnerar avståndet till den uppringande funktionen
Nu för Arduino.
I Loop-funktionen:
> Först kontrolleras om man trycker på nödknappen eller inte.
> Sensorkontroll. En del av programmet kontrollerar om det finns ett sensorfel. dvs. om de mottagna uppgifterna är ogiltiga (<= 1) 5 gånger visar displayen sensorfel och pumpen stängs av.
> Nästa del visar den aktuella vattennivån och ger ett kommando för pump 1 om vattennivån är liten, eller 0 om den är 100% (full).
Detta program använder två subfunktioner updtMotor () och getWaterLvl (). Funktionen updtMotor () visar pumpens funktion på LCD-skärmen och skickar också en signal till reläet.
GetWaterLvl-funktionen kontrollerar först om det finns något anslutningsfel. Om anslutningen mellan sändaren och mottagaren inte upprättas under väntetiden (3000 ms). Det visar ett sensorfel och stänger av pumpen.
När anslutningen återställs återupptas operationen.
Allt är klart, tack till befälhavaren för en intressant hemgjorda.