Controler de pompă bazat pe SMS cu oprire automată în funcționare uscată

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un controler de pompă de apă bazat pe SMS cu oprire automată a pompei atunci când nu este detectat fluxul de apă prin pompă. Vom construi, de asemenea, un alt circuit de prevenire a rulării automate mult mai simplu, fără GSM, în următoarea jumătate a articolului.

Ce este Dry Run în Motoare

Am discutat deja pe Controler de pompă bazat pe GSM pe acest site web verificați-l dacă nu ați făcut-o încă. Aici adăugăm o caracteristică suplimentară pentru designul existent, care va împiedica motorul să funcționeze în stare uscată.



Alergare uscată înseamnă rularea pompei de apă fără flux de lichid. Consecința poate fi deteriorarea reparabilă a daunelor ineficiente, în funcție de cât timp a funcționat motorul fără pomparea apei și de calitatea pompei de apă.

Da, pompele de apă nu sunt ieftine și dacă sunteți un agricultor care iriga câmpul în fiecare zi, atunci o mică problemă cu pompa de apă vă poate determina pierderi economice.



Întreținerea pompei poate dura ceva timp și bani, deci este mai bine să urmați faimosul slogan „Prevenirea este mai bună decât vindecarea”.

Rularea uscată a motorului este o problemă foarte frecventă, atunci când nu există suficientă apă pentru a curge prin pompă, va apărea supraîncălzirea componentelor mecanice, precum și a componentelor electrice.

La un moment dat, componentele mecanice vor începe să se topească și, de asemenea, pot provoca scurtcircuit.

Un astfel de dezastru poate fi prevenit folosind circuitul, propus în acest proiect.

Pentru a detecta fluxul de apă, suntem utilizând senzorul de debit YF-S201 . Când senzorul nu detectează fluxul de apă, acesta întrerupe alimentarea cu energie a pompei de apă și trimite o confirmare SMS destinatarului cu privire la oprirea curgerii uscate.

Cu acest control bazat pe GSM puteți porni și opri pompa și, de asemenea, circuitul recunoaște problemele legate de funcționarea uscată a pompei.

Circuit pentru controlul pompei bazat pe SMS:

Circuit pentru controlul pompei bazat pe SMS:

Circuitul constă dintr-un convertor de curent alternativ în curent continuu utilizând transformator de 9V, redresor de punte, un condensator de netezire de 1000 uF și un regulator LM7809 de 9V. Sunt furnizate două mufe DC pentru alimentarea plăcii Arduino și a modulului SIM 800 / SIM 900 GSM.

Nu alimentați niciodată modulul GSM cu pinul 5V Arduino la pinul 5V al modulului GSM, deoarece placa Arduino nu poate furniza suficient curent.

Conexiunea dintre Modulul Arduino și GSM după cum urmează:

Arduino TX ---------------------- RX SIM 800/900

Arduino RX --------------------- TX SIM 800/900

Arduino GND ------------------- GND SIM 800/900

Alimentarea principală este asigurată de regulatorul LM 7809.

Indicatorul LED va aprinde dacă releul este activat și se stinge atunci când releul este dezactivat.

Dioda IN4007 va absorbi vârful de înaltă tensiune care apare în timpul pornirii și opririi releului.

Senzorul de debit de apă este conectat la pinul A0 al Arduino, 5V și GND furnizat de pe placa Arduino.

Program pentru proiectare bazată pe GSM:

//----------------Program developed by R.Girish------------//
int motor = 8
int LED = 9
int temp = 0
int i = 0
int j = 0
int k = 0
int X = 0
int Y = 0
int mtr_on = 0
float Time = 0
float frequency = 0
const int input = A0
const int test = 6
char str[15]
void setup()
{
Serial.begin(9600)
pinMode(motor, OUTPUT)
pinMode(LED, OUTPUT)
digitalWrite(motor, LOW)
digitalWrite(LED, LOW)
analogWrite(test, 100)
for (k = 0 k <60 k++)
{
delay(1000)
}
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('System is ready to receive commands.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
if (temp == 1)
{
check()
temp = 0
i = 0
delay(1000)
}
if (mtr_on == 1)
{
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000 / Time
if (isinf(frequency))
{
digitalWrite(motor, LOW)
digitalWrite(LED, LOW)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor Deactivated. Dry Run Shut Off!')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
mtr_on = 0
delay(1000)
}
}
}
void serialEvent()
{
while (Serial.available())
{
if (Serial.find('/'))
{
delay(1000)
while (Serial.available())
{
char inChar = Serial.read()
str[i++] = inChar
if (inChar == '/')
{
temp = 1
return
}
}
}
}
}
void check()
{
if (!(strncmp(str, 'motor on', 8)))
{
digitalWrite(motor, HIGH)
digitalWrite(LED, HIGH)
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor Activated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
for (j = 0 j <20 j++)
{
delay(1000)
}
mtr_on = 1
}
else if (!(strncmp(str, 'motor off', 9)))
{
digitalWrite(motor, LOW)
digitalWrite(LED, LOW)
mtr_on = 0
delay(1000)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Motor deactivated')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
else if (!(strncmp(str, 'test', 4)))
{
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('The System is Working Fine.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
}

// ---------------- Program dezvoltat de R.Girish ------------ //

Trebuie să plasați codul cu numărul de telefon mobil din 10 cifre al destinatarului.

Serial.println ('AT + CMGS = ' + 91xxxxxxxxxx ' r') // Înlocuiți x cu numărul de telefon mobil

Trebuie să plasați numărul de telefon mobil în astfel de 5 locuri din cod.

Comenzi SMS:

· SMS-ul dvs. trebuie să înceapă întotdeauna cu „/” și să se termine cu „/”

· / Motor pornit / pentru activarea motorului.

· / Motor oprit / pentru dezactivarea motorului.

· / Test / pentru testarea circuitului.

Iată mesajele SMS testate în timpul prototipării:

SMS testat în timpul prototipării

Următoarele lucruri le putem observa din captura de ecran:

· Mai întâi motorul este pornit și circuitul confirmat cu un răspuns.

· Motorul este dezactivat și circuitul este confirmat cu un răspuns.

· Din nou motorul este activat și deconectat senzorul pentru a simula situația de funcționare uscată, circuitul oprește pompa și a răspuns cu confirmarea funcționării uscate a pompei.

· În cele din urmă, un SMS de testare a fost trimis și circuitul a răspuns cu „Sistemul funcționează bine”.

Aș sugera instalarea senzorului de debit de apă după câțiva metri după pompa de apă.

Aceasta concluzionează dispozitivul de prevenire a pompei pe bază de GSM.

Acum, să aruncăm o privire la prevenitorul simplu de pompare a apei, fără GSM, acesta ar putea fi cel mai ușor dintre cele două.

Diagrama circuitului:

Controler de pompă bazat pe SMS cu oprire automată în funcționare uscată

Nimic de explicat aici, doar conectați-vă conform schemei. Sursa de alimentare poate fi un adaptor de perete de 9V cu cel puțin 500 mA sau sursa ilustrată în schema controlerului bazat pe GSM.

Butonul este prevăzut pentru a porni și opri pompa.

Odată ce apăsați butonul pentru a porni pompa, circuitul așteaptă inițial 20 de secunde pentru a detecta debitul de apă, în acest timp butonul este dezactivat timp de 20 de secunde.

După primele 20 de secunde, butonul este activat și puteți opri manual pompa apăsând din nou butonul.

Dacă este detectat debitul de apă, circuitul menține pompa pornită după 20 de secunde, în caz contrar circuitul întrerupe alimentarea cu motor. De asemenea, circuitul poate întrerupe alimentarea în orice moment, dacă nu este detectat niciun debit de apă.

Dacă circuitul se oprește din cauza funcționării uscate, LED-ul clipește rapid.

Program pentru prevenirea simplă a pompei în funcționare uscată:

//--------------------------Program Developed by R.GIRISH------------------------//
int X = 0
int Y = 0
int i = 0
int mtr_on = 0
float Time = 0
float frequency = 0
const int input = A0
const int test = 6
const int button = A1
const int LED = 8
const int motor = 9
void setup()
{
Serial.begin(9600)
pinMode(input, INPUT)
pinMode(test, OUTPUT)
pinMode(LED, OUTPUT)
pinMode(motor, OUTPUT)
analogWrite(test, 100)
digitalWrite(button, HIGH)
}
void loop()
{
if (digitalRead(button) == LOW && mtr_on == 0)
{
Serial.println('Motor Activated')
digitalWrite(LED, HIGH)
digitalWrite(motor, HIGH)
for (i = 0 i <20 i++)
{
delay(1000)
}
mtr_on = 1
}
if (digitalRead(button) == LOW && mtr_on == 1)
{
Serial.println('Motor Deactivated')
digitalWrite(LED, LOW)
digitalWrite(motor, LOW)
mtr_on = 0
delay(1000)
}
if (mtr_on == 1)
{
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000 / Time
if (isinf(frequency))
{
Serial.println('Dry run shut off')
digitalWrite(motor, LOW)
digitalWrite(LED, LOW)
mtr_on = 0
while (true)
{
digitalWrite(LED, HIGH)
delay(500)
digitalWrite(LED, LOW)
delay(500)
}
}
}
}
//--------------------------Program Developed by R.GIRISH------------------------//

Aceasta încheie ambele modele.

Dacă aveți întrebări specifice cu privire la acest controler de pompă bazat pe SMS cu circuit de oprire automată în funcționare uscată, vă rugăm să exprimați în secțiunea de comentarii, este posibil să primiți un răspuns rapid.




Precedent: 4 circuite simple de senzori de proximitate - Utilizarea IC LM358, IC LM567, IC 555 Următorul: Incubator cu Arduino cu control automat al temperaturii și umidității