智能温室控制器的开发
扫描二维码
随时随地手机看文章
1 引言
现代大型温室中,所有环境因子如室内温、光、气、湿、热、营养液养分状况与温度、植物根部环境温湿度等因子的监测、传感、调节,都由计算机进行综合管理,实行自动控制。但是目前我国设施农业才刚刚起步,相当一部分温室生产效益低。温室环境调控能力和调控水平、生产管理水平低,仍主要是依据管理者个人经验和主观感觉进行决策的粗放式管理。温室环境调控与生产管理设施未完善配套,较多温室环境监测与控制系统硬件与软件依赖国外进口。因此, 开发出符合中国国情的自动化温室系统, 才是解决问题的关键。本课题的研究目标是开发一款基于485通讯的温室控制器,能独立对各个温室模块进行控制。同时也可以和上位机进行通信,接受上位机指令对各个模块进行控制,并把采集的数据传给上位机。
2 设计方案
系统硬件以89C52为控制核心,按设计要求控制器应具有以下功能:1)采集信息(如DI, AI, 网络传感器等);2 )控制(能够对DO, DA, 网络执行机构进行操作);3) 根据被控对象能嵌入一定的算法;4 )具有LCD 显示功能(点阵);5 )具有报警功能;6 )根据需要能存储数据;7 )有键盘操作功能;8)遵循RS-485 协议,能够与其他测控模块通讯。根据上述功能要求,本智能控制器的功能框图如图1 所示:
500)this.style.width=500;" border="0" />
控制器需要和485总线的各个模块进行通信,接受各种环境参数,并通过这些模块对温室中的环境进行控制。上位机需要从控制器中读取环境参数的数据并对其发送参数设定值。与总线上模块的通信模式和与上位机的通信模式分别如图2,图3所
500)this.style.width=500;" border="0" />
根据以上的功能要求,本智能控制器的电路原理框图如图4 所示。系统主要由下列几个部分组成:
500)this.style.width=500;" border="0" />
3 硬件模块设计
1、数据存储模块
数据存储采用AT24C64型EEPROM ,拥有8K的数据存储量。它的寻址范围是0000H~1FFFH。存储的数据有时间,温度,光照强度,湿度等。时间包括年,月,日,时,分,秒,它们是两位数,而温度是两位数,光照强度是三位数,湿度是两位数,PH值要有四位数,CO2浓度也是四位数。由于数字要用ASC码来存储,所以一位数就要占一个字节,总共27个字节顺序存储。读取时,严格按照每个参数的位数进行。要读取指定参数的值,可通过计算它的存储字节地址来读取。
2、时钟模块
时钟模块采用DS1302,作为控制器的日历时钟。其主要特点是使用简单,接口容易,与计算机连线少,还可以对实时时钟备份电池进行慢速充电。DS1302内部具有实时时钟,日历和用户可用RAM。通过一个简单的串行口与微机通信,时钟可由用户决定是以24小时制式或12小时制式工作。
时钟模块控制采样的时间,按照一定的时间间隔,命令采样系统工作,并把采样的时间和采样的结果一同存入数据存储器中,再由上位机读出。
3、显示与键盘
显示采用LCM045,LCM045为4 位多功能通用型液晶显示模块,内含看门狗(WDT)/时钟发生器,2 种频率的蜂鸣驱动电路,内置显示RAM ,可显示任意字段笔划,3-4 线串行接口,可与任何单片机接口、IC 接口,低功耗特性;显示状态50μA(典型值), 省电模式<1μA ,工作电压2.4~ 5.2V, 视角对比度可调,显示清晰,稳定可靠,使用编程简单。控制器一开机就能显示小时和分,这要靠读取时钟芯片的值。当按下功能键就要开始显示各个环境参数的值,这些值要从数据存储器当中读取,并用上下键来移动数据,查看记录。
键盘采用独立式按键,共有四个键,包括功能键,上、下键,复位建。当按下功能键时,进入键盘中断,对键盘命令进行处理。功能键的作用是切换当前显示的环境参数,决定显示的是温度,湿度,光照强度等。上、下键的作用是查看当前显示的环境参数的历史纪录。复位建就是使整个系统回到初始状态。
4、串口扩展
由于控制器要分别与上位机和下位机进行通信,而89c52只有一个串口,所以必须再扩展一个串口满足需要。8251是一个将并口扩展为串口的芯片,用其作为串口扩展芯片可以实现与485的通信。
8251是把并口p0扩展为串口,所以将p0口接在8251的D0-D7上。用74LS373作为地址锁存器,可以对8251进行寻址。由于接收器准备好信号RXRDY高电平有效,所以为了产生中断,接了一个非门芯片7404。波特率发生器是电路中极其重要的部分,CD4040芯片的最低分频数为1,也就是说可以把频率分为1/2。晶振采用2.4576M有缘晶振。有缘晶振无需外围电路,通电即可起振。把晶振产生的频率输入CD4040。将频率分为1/2后接到工作时钟CLK,分为1/27后变成19200hz作为输入输出时钟。8251与89c52连接的硬件原理框图如图5所示:
500)this.style.width=500;" border="0" />
4 控制器软件设计
在单片机软件开发过程中, 编制的程序要合理使用各种中断机制。本系统就控制算法来说,有实时性要求, 任务复杂:有中断、定时任务、循环执行任务等, 并且人机交互操作还通常会动态地改变程序的运行模式, 尤其是人机界面——液晶的显示输出需要占用大量CPU 时间, 与此同时又不允许丢失重要的数据。还要随时准备向上位机发送数据。因此,需要综合采用消息机制与状态转移法来统一地处理好CPU 的任务安排。
在中断服务程序中, 向主程序的消息队列添加相应的消息, 来达到将中断服务程序中的数据处理部分分离出来的目的。本系统主要有两个中断:上位机中断和键盘中断。中断服务程序返回主程序后, 主控程序只处理消息循环, 判断并为消息处理对象发送所需处理的消息, 而接受消息的对象则以消息响应函数的方式出现, 当接收到主程序发来的消息后, 消息响应函数获得控制权, 做完相应的处理后将控制权交还给主程序继续消息循环的处理。用户的输入及对象的请求仅是向消息队列中添加相应的消息。
主控程序还需要查询消息队列也就是时间,根据时间的不同, 调用相应的消息处理函数, 在本系统中, 时间表现为一个变量, 通过给该变量置不同值来反映不同的消息。对于由中断触发的消息, 由于消息处理函数已经脱离了中断处理过程, 所以系统对消息处理不再象中断服务程序那样, 在时间上有十分苛刻的要求; 同时, 在消息处理过程中, 用户仍可通过键盘中断来与系统进行交互。
5 结束语
本项目是一个自动化技术与农业结合的课题, 以89c52 单片机为核心的嵌入式控制器,通过8251扩展一个串口后和单片机原有的串口一起分别和上位机和下位机通讯,从下位机收集到的数据先存入数据存储器,在接收到上位机的命令后再把数据传到上位机进行管理。并在控制器上加入键盘和显示的功能,能控制器能直接控制下位机。该控制器结构合理, 经济实用, 具有较高的推广价值。