范明民
(北海职业学院,广西 北海 536000)
环境温度和湿度等会对农业生产产生极大影响,如会影响仪器设备的使用寿命,影响作物生产质量等。要想提高农业和畜牧业的产量,就必须使环境温度和湿度相对稳定、可调控。因此,设计一款可自动调节的智能数字化温湿度监控系统对促进农业发展极具价值。笔者设计的智慧农业环境监控系统不仅能实时监测和显示温湿度,还能在温湿度超过阈值时启动自动调节装置,降低人力成本,促进农业现代化发展。
合理的系统总体设计方案能够让产品在市场中更有优势。此系统的设计主要包含电源电路、温湿度检测电路、微处理器AT89C52主控制电路、液晶显示电路、报警电路、键盘电路和风机调节电路等。同时,该系统预留了拓展接口,方便后续功能的完善和升级。
系统采用STC89C52作为主控芯片,用于分析、处理转换温度和湿度传感器采集的信号,实现系统实时数据的采集和数字显示。当环境温度超过预设的阈值时,报警器报警,同时输出驱动信号调节直流电机风叶旋转,改变周围环境参数,起到自动调节温湿度的效果。系统总体设计框图如图1所示。
图1 温湿度监控系统总体设计框图
系统主控芯片起到中枢神经控制作用,处理传感器的模拟信号和输出数字信号。以小麦生长为例,小麦在不同的生命周期对环境温度和湿度有不同的要求,小麦发芽适宜的温度和湿度分别为15~20 ℃和50%RH~70%RH,小麦灌浆适宜的温度和湿度分别为20~22 ℃和70%RH~80%RH。该系统默认周围理想环境温度为15~30 ℃,湿度为45%RH~65%RH。控制电路的工作原理是当系统检测到的指标超过或者小于阈值时,启动风机调节电路,使周围环境达到适宜的温湿度。温湿度检测电路主要通过高精度的传感器测量农业生产环境的温度和湿度,显示电路主要通过LCD1602显示,复位电留上一次的数据,即插即用,使用方便。该系统正常工作时会显示所监控环境的温度,管理员使用按键电路实现温度最大值和最小值的设定。该系统会自动把设定好的温度上、下限阈值存储到EEPROM中,纵使断电,下一次系统通电正常工作后也能够恢复上一次设定的温度阈值,不需要手动重复设置上、下限阈值。该传感器维护便捷,成本低廉,非常适合应用于现代农业生产。
湿度传感器也是该监控系统的关键核心设备。该系统使用高精度、体积小、能耗低的三端口单总线数字传感器DHT11作为湿度传感器。DHT11是一款已经在标准的湿度校验室校准好的数字信号输出传感器。该产品出厂时的测量湿度范围是5%RH~95%RH,湿度误差±5%RH;温度范围是-20~60 ℃,温度误差±2 ℃,满足农牧业生产使用条件。该湿度传感器内部集成了1个电阻式感湿器件和1个NTC测温元件,在实验室条件下测试,信号有效传输距离可以超过20 m。
该监控系统采用电压为5 V的直流电机,转速约20 000 r/min。该系统采用五线四相的直流电机,采用的驱动模块为ULN2003芯片(是一个超大电压、超大电流的复合晶体管阵列集成的芯片电路,含有7个硅材料NPN复合管,能够驱动蜂鸣器和直流电机)。该电路是独立的,芯片的输入通过J46端子提供,芯片的输出由J47端子引出。J46输入对应J47输出。温度或者湿度超出阈值会自动触发一个驱动信号给直流电机,电机开始工作,直至指标稳定电机才停止工作,达到自动控制效果。
该监控系统采用电磁式蜂鸣器和发光二极管作为报警核心电路。温湿度超过阈值,发光二极管以1 s为间隔不断闪烁红光,同时启动蜂鸣器报警,提醒管理员处理。
系统软件采用模块化设计,系统复位后可以获取当前温度和湿度并且通过A/D转换实时显示。假如将温度和湿度上限分别设置为30 ℃和90%RH,当设定好上下限阈值时,系统即会把当前的温湿度数值与设定的上限阈值作对比:如果当前参数高于温度或者湿度上限阈值任一项,则启动风机降温除湿,同时二极管闪烁及蜂鸣器报警;如果当前环境的温湿度处于下限和上限之间,风机转动停止且报警消除。同理,设定下限时的工作机制也一样,从而自动把温湿度控制在阈值范围内。系统主程序流程图如图3所示。
图3 系统主程序流程图
给系统上电时先自动初始化,读取当前环境温湿度。用户可以通过键盘手动输入温湿度上、下限及启动直流风机的指标,并且通过LCD1602显示。该系统本质上为一个负反馈电路。
通过Keil uVision4工具编写模块化C语言源程序,软件设计部分主要包括温度模块、湿度模块、显示模块、直流电机驱动模块、键盘扫描模块和报警模块等6个子程序。
3.2.1 温度模块设计。DS18B20作为国内应用广泛且稳定性高的数字温度传感器,其输出信号为数字信号。编写温度模块程序时,时序要求最为严格,必须十分精确。该模块通过ds18b20init()函数进行初始化,通过ds18b20wr(uint8 dat)函数进行写数据,通过ds18b20rd()函数进行读数据。读取温度时先要进行复位,同时要注意温度有正负值及保留1位小数。
3.2.2 湿度模块设计。DHT11软件程序设计先要注意检查是否有该硬件,通过DHT11_Check()函数判断是否存在,有即返回1,否则为0。使用前也必须先将其初始化,程序通过DHT11_Init()函数对湿度传感器初始化。DHT11_Read_Bit(void)函数表示从湿度传感器按位读取数据,DHT11_Read_Byte(void)函数是指从传感器中按字节读取数据。为了避免读数据出错,程序设定函数返回值为1是正常,返回值为0是失败,每次读取数据的时间不能太短,否则会不准确,系统设置不少于100 ms。
3.2.3 显示模块设计。该系统通过LCD1602显示温度和湿度。通过lcd_init_display()函数对LCD初始化显示,data_pros()函数处理温度和湿度显示并且对有效位数进行处理,可以显示切换的温度、湿度上限和下限。
3.2.4 报警模块设计和直流电机驱动模块设计。报警模块主要是驱动发光二极管和蜂鸣器电路。设计通过baojinpros()函数进行报警处理。发光二极管分降温湿指示灯和升温湿指示灯2种,当系统检测温度或者湿度高于设定上限值时,降温湿指示灯亮;检测温度或者湿度低于设定下限值时,升温湿指示灯亮;两种情况下蜂鸣器均会报警提示用户。直流电机驱动主要是通过单片机控制ULN2003D模块输入、输出。报警时,系统会输出一个信号给直流电机,可以通过motospeed(uint16 i)函数进行风机的速度调节,并且温度和速度范围可以通过键盘程序进行设置。此外,该监控系统以10倍范围设置了3个挡位速度,便于快速反应。
3.2.5 键盘扫描模块设计。程序通过key_pros()函数进行按键处理,包括对温度和湿度上、下限的加法减计算。
该监控系统采用C语言编程,通过Proteus软件仿真测试和Keil软件烧录进行运行,运行效果良好。
传感器采集、接收环境参数并进行AD转换,将单片机处理后的信号通过LCD1602显示,超过预设阈值触发报警,提示管理员及时处理。如果未触发报警,则系统继续采集数据,比对系统阈值。该系统精确度高,能耗小,系统可靠性强,传输的数据误差较小,能满足普通农业生产需求。单片机系统目前已经稳定运行一个多月,未出现错误。
该系统经过试验测试,各指标均满足生产生活需要,适用于农业生产的智能化温湿度监控。系统可拓展性强,误差小,稳定性强,功耗低,针对复杂环境温湿度监控具备自动测试调节能力,可以在降低成本的同时提高精度。此外,该系统可以通过采用精度更高的传感器,增加更多必要的功能,持续优化,为我国农业、畜牧业健康发展提供支撑。