简易滴灌系统
void loop(void)
{
ReadAndPrint_light_intensity();//读写光照
ReadAndPrint_soil_humidity();//读写土壤湿度
ReadAndPrint_SHT11();//读写SHT11
delay(100);
}
/**************读写光照子函数***************/
delay(40000);
myGLCD.clrScr();
#define pwnpin 10
//LCD5110引脚可以自己定义,顺序是SCK,MOSI,DC,RST,CS
LCD5110 myGLCD(5,6,7,9,8);
/***********************************
LCD5110库:数字大小的外部函数声明
使用示例:myGLCD.setFont(SmallFont);
我们将土壤探头和10K电阻串联,通过分压获得电压值AC,用单片机AD口(A1口)读取这一电压值就能大概获得土壤的电压值。计算公式如下:
Soil_humidity = (1023-analogRead(A1))/10;//A1当然也可通过电压比来自器实现阈值预设,输出高点电平表示。
2.光照强度传感器
光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射光弱,电阻减小,入射光强,电阻增大。该四线制光敏模块的原理图如下:
具体方案的详解:
1.土壤传感器的选择
对于温湿度的采集,有专用的集成芯片DHT1X和SHT1X系列,虽然精度高,内带补偿,但价格昂贵,不适合于一般用户。对于一般的植株(针对一般用户),对湿度精度的要求并不会特别地严格,于是我们选择了YL-69 土壤湿度模块。由于土壤湿度越大,电阻值越小,YL-69 土壤湿度模块就是利用这一原理获得土壤湿度值。其原理图如下所示:
5.滴管系统设计
采用直流抽水泵抽水,对植株进行滴管。要控制直流电机的转速从而实现滴管,这里采用半桥驱动芯片BTN7971,运用PWM控制法实现电机转速的控制。半桥驱动原理图如下:
6.参数设定
考虑到不同植株对土壤要求不一致,本设计可通过键盘对土壤湿度进行预设,以适应不同作物。用四个按键实现湿度预设值的+1、-1、+5和-5。
本设计希望通过单片机实现小型智能滴灌,推广滴灌技术。本设计基于Ardunio Nano 3.0,配合土壤湿度传感器,温湿度传感器,光照传感器,液晶显示,键盘输入。单片机采集土壤湿度传感器、温湿度传感器和光照数据,将其显示于LED显示器上,土壤湿度传感器主要用于检测土壤湿度,对其设定阈值,配合抽水泵给植株浇水,从而实现土壤湿度控制。温湿度传感器则反映了当前的温度和湿度环境,作为参考值加入滴管系统。光照传感器采集当前光照值,从而得知当前是白天还是夜晚,作为滴管的参考值。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
7.MCU的选择
普通的51单片机功能比较单一,没有自带AD转换。Ardunio Nano 3.0自带AD,编程简单,适合推广。
整体方案的电路图:
系统程序流程框图
系统程序:
#include <LCD5110_CN.h>
#include "ZhongWen.h"
#include <SHT1x.h>
#include <MsTimer2.h>
温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHT11的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。
myGLCD.print("cd",28,16);
}
/*****************读写土壤湿度子涵数****************/
void ReadAndPrint_soil_humidity()
{
Soil_humidity = (1023-analogRead(A1))/10;
myGLCD.setFont(SmallFont);
关键字:小型自动滴灌系统Ardunio
系统设计框图:
系统总体方案:
根据实际情况及系统技术要求,拟采用Ardunio Nano 3.0作为控制与数据处理的核心以构成节水灌溉控制系统。该系统基于Ardunio Nano 3.0单片机,土壤湿度传感器反馈,由单片机采集,转化得到土壤湿度值。系统将检测得土壤的湿度值,送到显示电路显示,从而实现对土壤湿度的监测监控,并能通过键盘进行适度范围设置和显示,同时通过控制水泵开关的实现土壤湿度的控制。温湿度传感器则反映了当前的温度和湿度环境,作为参考值加入滴管系统。光照传感器采集当前光照值,从而得知当前是白天还是夜晚,作为滴管的参考值。该系统电路主要由Ardunio Nano 3.0系统电路、电源电路、湿度检测电路,输入和显示电路、开关控制电路等组成。
myGLCD.chinese(50,0,TuRang,12,2,0,0);//列,行,显示文字,字体大小,汉字数目
myGLCD.printNumF(Soil_humidity,1,50,16);
myGLCD.print("%",75,16);
}
/*****************读写空气温湿度****************/
#define dataPin 12
#define clockPin 13
SHT1x sht1x(dataPin, clockPin);
/**********变量定义*************/
#define Light_Night 500
int Light_intensity;//光强
float Soil_humidity;//土壤湿度
LogEW=0.66077+7.5×T/(237.3+T)+log10(SORH)-2
Dp=((0.66077-logEW)×237.3)/(logEW-8.16077)
式中:T为当前温度值,SORH为相对湿度值,Dp为露点。
4.数据返回
为了更加直观得得知土壤温湿度状况,本设计通过液晶显示对温湿度进行显示。可选择功耗较低的LCD或OLED显示。这里我们采用LCD5110.Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。
analogWrite(pwnpin,pwm);
myGLCD.InitLCD();//初始化函数
myGLCD.clrScr();//清屏函数
MsTimer2::set(100, T_interrupt);//定时中断,用于键土壤盘扫描和土壤湿度开关
MsTimer2::start();
}
/**********主函数*************/
************************************/
extern uint8_t SmallFont[];//小字体
extern uint8_t MediumNumbers[];//中字体
extern uint8_t BigNumbers[];//大字体
//指定SHT11数据和时钟引脚和实例化对象
基于单片机的自动滴灌系统的设计
摘要:滴灌技术由以色列斯迈哈•博拉斯父子发明,具有普通人力灌溉无法比拟的优点。灌溉技术自引进后经历了40多年的发展,配合水肥一体化技术,提高水分和肥料利用率,很大程度上节约了农业用水,节省劳动力。然而滴灌施肥技术仍然存在不足,大多的滴灌没有采取自动化控制,只是半自动的定时滴灌。
通过电阻分压获取电压值,从而换算成相应的光照值,计算公式如下:
Light_intensity = 1023-analogRead(A6);
当然也可通过电压比较器实现阈值预设,输出高点电平表示。
3.温湿度传感器
DHT1X系列和SHT1X系列自带补偿的温湿度集成传感器,通过和单片机通讯,获取当前温湿度的值。本来想采用DHT11,价格比较便宜,由于提前买了SHT11,于是就采用SHT11传感器。
}
void KeyScan()
{
if(analogRead(A2)<100)
{
Set_humidity=Set_humidity+5;
myGLCD.clrScr();
myGLCD.setFont(BigNumbers);
myGLCD.printNumF(Set_humidity,0,CENTER,8);
void ReadAndPrint_SHT11()
{
temp_c = sht1x.readTemperatureC();
humidity = sht1x.readHumidity();
myGLCD.setFont(SmallFont);
myGLCD.chinese(8,3,WenDu,12,2,0,0);//列,行,显示文字,字体大小,汉字数目