Automatisk vanningskrets ved hjelp av Arduino

Automatisk vanningskrets ved hjelp av Arduino

I dette innlegget skal vi konstruere et automatisert vanningsanlegg for liten hage ved hjelp av arduino og jordfuktighetssensor.



Introduksjon

Det foreslåtte systemet kan overvåke jordfuktighetsnivået og når jordfuktigheten går under den forhåndsinnstilte verdien, vil 12V DC-pumpen utløses i en forutbestemt periode. Status på jordfuktighetsnivået og andre funksjoner i systemet kan overvåkes via 16 x 2 LCD-skjerm i sanntid.

Det anslås at det er 3 billioner trær over hele kloden, noe som er større enn antall start i vårt hjem Melkeveis-galaksen, som anslås å være 100 milliarder. Men vi mennesker kutter utallige antall trær for å oppfylle våre grunnleggende behov til luksusbehov.





Moder Natur er designet med et tilbakemeldingssystem, når en art innfører store forstyrrelser, vil naturen utslette arten fra eksistens.

Mennesker forstyrret naturen uvitende i århundrer, men selv etter stor utvikling innen vitenskap og teknologi har forstyrrelsesgraden ikke blitt redusert.



Klimaendringer er et av eksemplene, når det blir drastisk nok vil ikke arten vare lenge.
Dette prosjektet tar et skritt fremover for å bevare naturen, det kan vanne den vakre lille hagen din uten menneskelig interaksjon. La oss nå gå inn på tekniske detaljer om prosjektet.

Jordfuktighetssensor:

Hjertet i prosjektet er jordfuktighetssensor som kan registrere mengden fuktighetsinnhold i jord. Sensoren gir ut analog verdi, og en mikrokontroller tolker disse verdiene og viser fuktighetsinnholdet.

Det er to elektroder som skal settes inn i jorden. Elektrodene er koblet til et kretskort som består av komparator IC, LED, trimmermotstandsinngang og utgangspinner.

Illustrasjon av jordfuktighetssensor:

jordfuktighetssensormodul

Den har 4 + 2 pinner, 2 pinner for elektrodetilkobling, og resten av de 4 pinnene er Vcc, GND, digital utgang og analog utgang. Vi skal bare bruke den analoge utgangspinnen for å føle jordfuktighet.
Siden vi ikke bruker digital utgangsstift, bruker vi ikke innebygd trimmemotstand for å kalibrere sensoren.

Nå konkluderer jordfuktighetssensoren.

Skjematisk diagram:

Kretsen holdes ganske enkel og nybegynnervennlig. Skjematisk er delt inn i to deler av det samme prosjektet for å redusere forvirring mens du dupliserer prosjektet.

LCD-koblingsskjema for automatisk vanningsanlegg

Ovennevnte skjematisk er LCD til arduino ledninger. Et 10K potensiometer er gitt for å justere kontrasten på LCD-skjermen.

Microcontroller basert automatisk vanningsanlegg

Her er resten av skjemaet som består av jordfuktighetssensor, 12V DC-pumpe, en kalibreringsknapp og 12V (1 - 2 amp) strømforsyning. Vennligst bruk en strømforsyning som er minst 500 mA 12V DC pumpens nåværende vurdering.

MOSFET IRF540N (eller en hvilken som helst tilsvarende N-kanal) brukes i stedet for BJT for å forbedre systemets samlede energieffektivitet.

Pumpen vil vanne den lille hagen din, og sørg for at du alltid har tilstrekkelig mengde vann tilgjengelig.

Programkode:

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

Slik kalibrerer du dette automatiske vanningsanlegget:

• Sett inn elektroden på jord med fullstendig maskinvare, et sted på vannet.
• Endre nå de to verdiene i programmet 1) Hvor lang tid det tar å vanne alle plantene (i minutter). 2) Terskelnivå under hvilken arduino utløser pumpen. Du kan bare angi prosentverdiene 80, 70, 60, 50, 40, 30, 20.

int Tid = 5 // Still tid i minutter
int terskel = 30 // bare satt terskel i prosent 80, 70, 60, 50, 40, 30, 20.

Endre verdiene i programmet.

• Last opp koden til arduino og slå på kretsen. Den vil vise “hell vann og trykk kalibrer”. Nå må du vanne hagen din manuelt til tilstrekkelig nivå.
• Etter å ha vannet hagen, trykk på kalibreringsknappen. Dette vil bestemme ledningen av elektrisitet i helt fuktig jord og snapshot referanseverdien.
• Nå er systemet klart til å betjene den lille hagen din. Prøv å legge til en sikkerhetskopi for dette prosjektet. Når strømmen svikter, vil referansekalibrert verdi bli slettet av minnet, og du må kalibrere systemet igjen.

Forfatterens prototype:

Arduino-basert Automatic Irrigation Prototype Image

Indikasjon på jordfuktighetsnivå:

Når pumpen er slått PÅ, vil den vise gjenværende tid for å slå seg av (i sekunder).




Forrige: 3 smarte laserbeskyttelseskretser Neste: OCL forsterker forklart