In questo articolo, la procedura guidata ci spiegherà come realizzare un sistema per il monitoraggio e il controllo del livello dell'acqua in un serbatoio. È un sistema semplice e affidabile.
Le sue caratteristiche principali sono le seguenti:
Monitoraggio del livello dell'acqua in tempo reale.
Pompa on / off automatica.
Arresto di emergenza della pompa.
Strumenti e materiali:
-Arduino Pro mini
-Sensore ultrasonico HC-SR04;
- Modulo MAX485;
- Modulo LCD i2c;
LCD 1602;
- Microcontrollore ATTINY45 / 85;
- Regolatore di tensione LM7805;
Transistor NPN (2n3904);
MOSFET a canale N IRFD024PBF;
Diodo 1N4007;
Connettore a 5 pin;
Connettore a 4 pin
Connettore a -2 pin;
- Terminali con 2 contatti (blu) - 2 pezzi;
- Terminale con 2 contatti (verde);
Jack DC (- 2 pezzi)
-Audio jack (maschio / femmina) - 2 pezzi;
- Resistenza 1 kOhm;
- Resistenza 10 kOhm - 3 pezzi;
- Condensatore 100 nF - 3 pezzi;
Condensatore 100 uF;
- Pulsante SMD, 6x3,5mm;
-DIP switch (SPST 2) - 2 pezzi;
- pulsante di accensione;
-Tumbler;
-12 V CC;
- contattore relè;
- Alimentazione DC 5 V (> 200 mA);
- Alimentazione DC 12V (> 500 mA);
-Scatole per astucci di dimensioni adeguate;
-Krepezh;
-Accessori per saldatura;
- cacciavite;
seeing-;
Fase 1: unità sensore
Questa unità misura il livello dell'acqua e invia i dati al controller principale. Ha due sensori per misurare il livello dell'acqua. Uno è il sensore di distanza ad ultrasuoni HC-SR04, le altre due viti lunghe che sporgono verso l'esterno, come mostrato nella foto.
Per installare i sensori è necessario eseguire i seguenti passaggi:
Posizionare il trasduttore ultrasonico capovolto nella parte anteriore del coperchio vicino alla parte superiore e contrassegnare i due fori per il trasmettitore e il ricevitore ad ultrasuoni.
Tagliare i fori e fissare il sensore in posizione con colla a caldo.
Quindi praticare due fori con un diametro di 3 mm con uno spazio di 2-3 cm al centro del coperchio.
Inserire i bulloni M3 lunghi con il terminale del filo serrato tra le due rondelle sul retro del coperchio e serrare i dadi M3 sull'altro lato.
L'unità sensore utilizza ATTINY45 come microcontrollore primario. Come accennato in precedenza, HC-SR04 viene utilizzato per misurare il livello dell'acqua. Funziona misurando la distanza dalla parte superiore del serbatoio.
Inoltre, il controllo viene eseguito utilizzando due bulloni nel circuito, su cui è installato il transistor. Il microcontrollore legge i dati da entrambi questi sensori e invia i dati all'Arduino installato nell'unità di controllo.
Innanzitutto, il master voleva inviare dati tramite i moduli RF HC-12. Ma la gamma di questi moduli non corrisponde ai requisiti.La procedura guidata ha utilizzato il convertitore da MAX485 TTL a RS485 e ha realizzato un piccolo riser da installare al posto dei moduli HC-12.
Schema e collegamento alla scheda possono essere scaricati a questo indirizzo.
L'installazione è la seguente:
HC-SR04 al circuito principale:
Vcc - 5V (CN1).
trig - trigPin (CN1).
echo - echoPin (CN1).
Gnd - GND (CN1).
Bulloni M3 al circuito principale:
Bullone 1-5 V (CN1).
Bullone 2 - 100 (CN1).
Modulo MAX485 (TX):
VCC - 5 V (connettore HC-12)
A - Jack audio da 1/4 di pollice.
B - Jack audio da 1/4 di pollice.
GND - GND (connettore HC-12)
R0 - RX (connettore HC-12)
RE - VCC (MAX485) o 5V.
DE - RE (abbreviato in RE e DE).
DI - TX (connettore HC-12).
Jack DC (connettore P1):
Suggerimento: 5 V.
Manica - GND
Fase due: controller
Il funzionamento del controller è semplice. Arduino è utilizzato come controller principale. Riceve i dati del sensore inviati dalla scheda del trasmettitore attraverso il modulo max485. Ha un display LCD 1602 che mostra il livello attuale dell'acqua e il funzionamento della pompa. Utilizza un relè a 12 V come interruttore per attivare il contattore del relè. Dispone di due interruttori, uno per la retroilluminazione dell'LCD e uno per l'accensione / lo spegnimento della pompa di emergenza.
Si trova un collegamento allo schema circuitale e al design del circuito stampato per il trasmettitore e il ricevitore qui.
Il modulo LCD i2c è direttamente saldato al 1602 LCD. Il ponticello della retroilluminazione sul modulo i2c è collegato all'interruttore a levetta per l'accensione / lo spegnimento. Il pulsante di emergenza (grande) è collegato al circuito principale tramite il connettore P4.
Modulo LCD I2c sul circuito principale (CN4):
GND - CN4-1 (GND1).
VCC - CN4-2 (5V).
SCL - CN4-3 (A5).
SDA - CN4-4 (A4).
Collegamenti contattore relè:
A1 - 230 VAC1 (zero).
A2 - NO (contatto relè).
S1 - 230 VAC1 (zero).
S2 - 230 VAC2 (fase)
L1 - Cavo motore pompa 1
L2 - Cavo motore pompa 2.
Collegare il contatto del relè COM a 230 VAC2 (linea).
Fase tre: software e programmazione
Ora devi programmare i controller su entrambi i dispositivi.
Per scaricare il codice su ATTINY45, scarica la libreria SoftwareSerial.h.
Nella funzione Loop,
> Controllare innanzitutto se il serbatoio è pieno o meno.
> Se è pieno, invia "255".
> Se non è pieno, controlla il livello dell'acqua con un sensore sonoro ad ultrasuoni e trasmette i dati tramite comunicazione seriale.
Questo programma utilizza la sottofunzione getwtrLvl () per ottenere il livello attuale dell'acqua. Innanzitutto, misura il tempo impiegato dal sensore per trasmettere e ricevere onde ultrasoniche. Quindi il tempo viene convertito in distanza usando la velocità del suono.
dist = pulseIn (echoPin, HIGH); // tempo trascorso dall'onda sonora.
dist = dist / 28/2; // traduce il tempo in distanza in cm
dist = dist * 1,25; // qui 1.25 è il fattore di correzione per superare l'errore di misurazione
dist. ritorno; // restituisce la distanza alla funzione chiamante
Ora per Arduino.
Nella funzione Loop:
> Innanzitutto viene verificato se il pulsante di emergenza viene premuto o meno.
> Controllo del sensore. Parte del programma verifica la presenza di un errore del sensore. ovvero, se i dati ricevuti non sono validi (<= 1) 5 volte, il display mostra l'errore del sensore e la pompa si spegne.
> La parte successiva mostra il livello attuale dell'acqua e dà un comando per la pompa 1 se il livello dell'acqua è piccolo o 0 se è al 100% (pieno).
Questo programma utilizza due sottofunzioni updtMotor () e getWaterLvl (). La funzione updtMotor () mostra il funzionamento della pompa sul display LCD e invia anche un segnale al relè.
La funzione getWaterLvl controlla innanzitutto se sono presenti errori di connessione. Se la connessione tra il trasmettitore e il ricevitore non viene stabilita durante il tempo di attesa (3000 ms). Mostra un errore del sensore e spegne la pompa.
Quando la connessione viene ripristinata, l'operazione riprende.
Tutto è pronto, grazie al maestro per un interessante fatto in casa.