Automatický zavlažovací obvod pomocou Arduina

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku sa chystáme skonštruovať automatizovaný systém zavlažovania vody pre malú záhradu pomocou arduina a senzora pôdnej vlhkosti.

Úvod

Navrhovaný systém môže monitorovať hladinu pôdnej vlhkosti a keď pôdna vlhkosť klesne pod prednastavenú hodnotu, čerpadlo 12V DC sa spustí na vopred určené časové obdobie. Stav úrovne pôdnej vlhkosti a ďalšie funkcie systému je možné monitorovať prostredníctvom LCD displeja 16 x 2 v reálnom čase.



Odhaduje sa, že na celej planéte sú 3 bilióny stromov, čo je viac ako počet štartov v našej domovskej galaxii Mliečna dráha, ktorý sa odhaduje na 100 miliárd. Ale my ľudia vyrúbame nespočetné množstvo stromov, aby sme splnili naše základné potreby a potreby luxusu.

Matka príroda je navrhnutá so systémom spätnej väzby, keď druh spôsobí obrovské poruchy, príroda ho vymaže z existencie.



Ľudia po stáročia nevedomky narúšali prírodu, ale ani po veľkom vývoji v oblasti vedy a techniky sa miera narušenia neznížila.

Zmena podnebia je jedným z príkladov, keď bude dosť drastická, náš druh dlho nevydrží.
Tento projekt urobí krok vpred k ochrane prírody, môže zavlažovať vašu rozkošnú malú záhradu bez akejkoľvek ľudskej interakcie. Teraz sa pozrime na technické podrobnosti projektu.

Senzor pôdnej vlhkosti:

Jadrom projektu je snímač pôdnej vlhkosti ktorý dokáže vycítiť množstvo obsahu vlhkosti v pôde. Senzor vydáva analógové hodnoty a mikrokontrolér tieto hodnoty interpretuje a zobrazí obsah vlhkosti.

Existujú dve elektródy, ktoré budú vložené do pôdy. Elektródy sú pripojené k doske plošných spojov pozostávajúcej z komparátora IC, LED, vstupných a výstupných pinov rezistora trimra.

Ilustrácia snímača pôdnej vlhkosti:

modul snímača pôdnej vlhkosti

Má 4 + 2 piny, 2 piny pre pripojenie elektródy a zvyšok zo 4 piny sú Vcc, GND, digitálny výstup a analógový výstup. Na snímanie vlhkosti pôdy použijeme iba analógový výstupný kolík.
Pretože nepoužívame digitálny výstupný kolík, nebudeme používať na kalibráciu snímača rezistor zabudovaného trimra.

Týmto je záver o senzore pôdnej vlhkosti.

Schematický diagram:

Okruh je pomerne jednoduchý a je vhodný pre začiatočníkov. Schéma je rozdelená na dve časti toho istého projektu, aby sa predišlo nejasnostiam pri duplikovaní projektu.

Schéma zapojenia LCD pre automatický zavlažovací systém

Vyššie uvedená schéma je LCD až po arduino elektrické vedenie. Na nastavenie kontrastu LCD displeja je k dispozícii 10K potenciometer.

Automatický zavlažovací systém založený na mikrokontroléri

Tu je zvyšok schémy pozostávajúcej zo senzora pôdnej vlhkosti, 12 V DC čerpadla, kalibračného tlačidla a 12 V napájania (1 - 2 ampéry). Použite napájací zdroj s prúdom najmenej 12 V s prúdom 12 V DC.

Na zlepšenie celkovej energetickej účinnosti systému sa namiesto BJT používa MOSFET IRF540N (alebo akýkoľvek iný ekvivalentný N kanál).

Pumpa vám zaleje malú záhradu, aby ste mali vždy k dispozícii dostatočné množstvo vody.

Programový kód:

//-------------Program Developed By R.Girish-------------//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int Time = 5 // Set time in minutes
int threshold = 30 // set threshold in percentage 80, 70, 60, 50, 40, 30, 20 only.
int i
int x
int y
int z
int start
int calibrateValue
const int calibrateBTN = A1
const int input = A0
const int motor = 7
boolean calibration = false
boolean rescue = false
void setup()
{
Serial.begin(9600)
pinMode(input, INPUT)
pinMode(calibrateBTN, INPUT)
pinMode(motor, OUTPUT)
digitalWrite(calibrateBTN, HIGH)
lcd.begin(16,2)
lcd.setCursor(0,0)
lcd.print('Pour water and')
lcd.setCursor(0,1)
lcd.print('press calibrate')
while(!calibration)
{
if(digitalRead(calibrateBTN)==LOW)
{
calibrateValue = analogRead(input)
x = 1023 - calibrateValue
x = x/10
Serial.print('Difference = ')
Serial.println(x)
Serial.print('Calibration Value = ')
Serial.println(calibrateValue)
delay(500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Calibration done')
lcd.setCursor(0,1)
lcd.print('successfully !!!')
calibration = true
delay(2000)
}
}
}
void loop()
{
if(analogRead(input)<= calibrateValue)
{
delay(500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 100%')
}
if(analogRead(input) > calibrateValue && analogRead(input) <= calibrateValue+x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 90 to 99%')
}
if(analogRead(input) > calibrateValue+x && analogRead(input) <= calibrateValue+2*x )
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 80 to 90%')
start = 80
}
if(analogRead(input) > calibrateValue+2*x && analogRead(input) <= calibrateValue+3*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 70 to 80%')
start = 70
}
if(analogRead(input) > calibrateValue+3*x && analogRead(input) <= calibrateValue+4*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 60 to 70%')
start = 60
}
if(analogRead(input) > calibrateValue+4*x && analogRead(input) <= calibrateValue+5*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 50 to 60%')
start = 50
}
if(analogRead(input) > calibrateValue+5*x && analogRead(input) <= calibrateValue+6*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 40 to 50%')
start = 40
}
if(analogRead(input) > calibrateValue+6*x && analogRead(input) <= calibrateValue+7*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 30 to 40%')
start = 30
}
if(analogRead(input) > calibrateValue+7*x && analogRead(input) <= calibrateValue+8*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 20 to 30%')
start = 20
}
if(analogRead(input) > calibrateValue+8*x && analogRead(input) <= calibrateValue+9*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: 10 to 20%')
start = 10
}
if(analogRead(input) > calibrateValue+9*x && analogRead(input) <= calibrateValue+10*x)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Soil Moisture')
lcd.setCursor(0,1)
lcd.print('Level: <10%')
rescue = true
}
if(start == threshold || rescue)
{
y = Time
digitalWrite(motor, HIGH)
Time = Time*60
z = Time
for(i=0 i

Ako kalibrovať tento automatický zavlažovací systém:

• S hotovým hardvérom vložte elektródu do pôdy, niekde na cestu prúdenia vody.
• Teraz zmeňte dve hodnoty v programe 1) Čas potrebný na zalievanie všetkých rastlín (v minútach). 2) Prahová úroveň, pod ktorou arduino spúšťa čerpadlo. Nastaviť môžete iba percentuálne hodnoty 80, 70, 60, 50, 40, 30, 20.

int Time = 5 // Nastaví čas v minútach
int threshold = 30 // nastaví prahovú hodnotu iba v percentách 80, 70, 60, 50, 40, 30, 20.

Zmeňte hodnoty v programe.

• Nahrajte kód na arduino a napájajte obvod. Zobrazí sa „nalievajte vodu a stlačte kalibrovať“. Teraz musíte záhradu ručne zaliať na dostatočnú úroveň.
• Po zalievaní záhrady stlačte tlačidlo kalibrácie. Týmto sa určí vedenie elektriny v pôde s úplnou vlhkosťou a sníma sa referenčná hodnota.
• Teraz je systém pripravený slúžiť vašej malej záhrade. Skúste pre tento projekt pridať zálohu napájania. Ak dôjde k výpadku napájania, referenčná kalibrovaná hodnota bude vymazaná z pamäte a budete musieť systém znova nakalibrovať.

Autorský prototyp:

Prototypový obrázok automatického zavlažovania na základe Arduina

Údaj o úrovni pôdnej vlhkosti:

Po zapnutí čerpadla sa zobrazí zostávajúci čas potrebný na jeho vypnutie (v sekundách).




Dvojica: 3 inteligentné ochranné obvody laserového alarmu Ďalej: Vysvetlenie zosilňovača OCL