Sterownik pompy oparty na SMS-ach z automatycznym wyłączaniem na sucho

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście zamierzamy zbudować sterownik pompy wody oparty na SMS z automatycznym wyłączaniem pompy, gdy nie zostanie wykryty przepływ wody przez pompę. W następnej połowie artykułu skonstruujemy również inny, znacznie prostszy, automatyczny obwód zabezpieczający przed pracą na sucho bez GSM.

Co to jest praca na sucho w silnikach

Omówiliśmy już Sterownik pompy oparty na GSM na tej stronie, sprawdź to, jeśli jeszcze tego nie zrobiłeś. Tutaj dodajemy dodatkową funkcję do istniejącej konstrukcji, która zapobiegnie suchobiegowi silnika.



Praca na sucho oznacza uruchomienie pompy wodnej bez przepływu cieczy. Konsekwencją mogą być uszkodzenia eksploatacyjne lub uszkodzenia niezdatne do użytku, w zależności od tego, jak długo silnik pracował bez pompowania wody i jakości pompy wodnej.

Tak, pompy wodne nie są tanie, a jeśli jesteś rolnikiem, który codziennie nawadnia pole, mały problem z pompą wodną może spowodować straty ekonomiczne.



Serwisowanie pompy może zająć trochę czasu i pieniędzy, dlatego lepiej kierować się słynnym hasłem „lepiej zapobiegać niż leczyć”.

Suchobieg silnika jest bardzo częstym problemem, gdy nie ma wystarczającej ilości wody do przepływu przez pompę, może dojść do przegrzania elementów mechanicznych i elektrycznych.

W pewnym momencie elementy mechaniczne zaczną się topić, a także mogą spowodować zwarcie.

Takiej katastrofie można zapobiec korzystając z obwodu zaproponowanego w tym projekcie.

Aby wykryć przepływ wody, jesteśmy wykorzystujący czujnik przepływu wody YF-S201 . Gdy czujnik nie wykryje przepływu wody, odcina zasilanie pompy wodnej i wysyła do odbiorcy potwierdzenie SMS o wyłączeniu suchobiegu.

Dzięki temu sterowaniu opartemu na GSM można włączać i wyłączać pompę, a obwód potwierdza również problem z pracą pompy na sucho.

Obwód sterowania pompą za pomocą SMS:

Obwód sterowania pompą za pomocą SMS:

Obwód składa się z przetwornika prądu przemiennego na prąd stały z transformatorem 9 V, prostownika mostkowego, kondensatora wygładzającego 1000 μF i regulatora LM7809 9 V. Do zasilania płyty Arduino i modułu SIM 800 / SIM 900 GSM służą dwa gniazda DC.

Nigdy nie zasilaj modułu GSM pinem 5V Arduino do pinu 5V modułu GSM, ponieważ płyta Arduino nie może zapewnić wystarczającego prądu.

Połączenie między Arduino i moduł GSM następująco:

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

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

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

Główne zasilanie zapewnia regulator LM 7809.

Wskaźnik LED będzie się świecił, jeśli przekaźnik zostanie aktywowany i zgaśnie, gdy przekaźnik zostanie wyłączony.

Dioda IN4007 zaabsorbuje skok wysokiego napięcia, który występuje podczas włączania i wyłączania przekaźnika.

Czujnik przepływu wody jest podłączony do pinu A0 Arduino, 5V i GND dostarczonego z płytki Arduino.

Program do projektowania w oparciu o 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 opracowany przez R.Girisha ------------ //

Musisz umieścić kod z 10-cyfrowym numerem telefonu komórkowego odbiorcy.

Serial.println ('AT + CMGS = ' + 91xxxxxxxxxx ' r') // Zastąp x numerem telefonu komórkowego

Musisz umieścić numer telefonu komórkowego w takich 5 miejscach w kodzie.

Polecenia SMS:

· Twój SMS musi zawsze zaczynać się od „/” i kończyć się na „/”

· / Silnik włączony / do uruchamiania silnika.

· / Silnik wyłączony / do wyłączania silnika.

· / Test / do testowania obwodu.

Oto testowany SMS podczas prototypowania:

testowane SMS-y podczas prototypowania

Na zrzucie ekranu możemy zaobserwować następujące rzeczy:

· Najpierw włączany jest silnik i obwód potwierdzony odpowiedzią.

· Silnik zostaje wyłączony, a obwód jest potwierdzony odpowiedzią.

· Ponownie następuje aktywacja silnika i odłączenie czujnika w celu symulacji pracy na sucho, obwód wyłącza pompę i odpowiada potwierdzeniem pracy na sucho pompy.

· W końcu wysłano testową wiadomość SMS, a obwód odpowiedział „System działa prawidłowo”.

Proponuję zamontować czujnik przepływu wody po kilku metrach za pompą wody.

Na tym kończy się zabezpieczenie pompy przed suchobiegiem na bazie GSM.

Przyjrzyjmy się teraz prostemu zabezpieczeniu przed pracą na sucho pompy wodnej bez GSM, może to być łatwiejsze z tych dwóch.

Schemat obwodu:

Sterownik pompy oparty na SMS-ach z automatycznym wyłączaniem na sucho

Nie ma tu nic do wyjaśnienia, po prostu podłącz zgodnie ze schematem. Zasilacz może być zasilaczem ściennym 9 V z co najmniej 500 mA lub zasilaniem zilustrowanym na schemacie sterownika opartym na GSM.

Przycisk służy do włączania i wyłączania pompy.

Po naciśnięciu przycisku włączającego pompę obwód odczekuje początkowo do 20 sekund na wykrycie przepływu wody, w tym czasie przycisk jest wyłączony na 20 sekund.

Po pierwszych 20 sekundach przycisk jest aktywny i można ręcznie wyłączyć pompę, ponownie naciskając przycisk.

W przypadku wykrycia przepływu wody obwód utrzymuje pompę WŁĄCZONĄ po 20 sekundach, w przeciwnym razie obwód odcina zasilanie silnika. Obwód może również odciąć dopływ w dowolnym momencie, jeśli nie wykryto przepływu wody.

Jeśli obwód wyłączy się z powodu pracy na sucho, dioda LED miga szybko.

Program prostego zabezpieczenia pompy przed suchobiegiem:

//--------------------------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------------------------//

To kończy oba projekty.

Jeśli masz jakieś szczegółowe pytania dotyczące tego sterownika pompy opartego na wiadomości SMS z automatycznym wyłączaniem na sucho, prosimy o wyrażenie ich w sekcji komentarzy, możesz otrzymać szybką odpowiedź.




Wstecz: 4 proste obwody czujnika zbliżeniowego - za pomocą IC LM358, IC LM567, IC 555 Dalej: Inkubator wykorzystujący Arduino z automatyczną kontrolą temperatury i wilgotności