APP下载

温室多点温度检测系统的设计及其仿真

2020-09-15孙万麟汤吉昀

机械设计与制造 2020年9期
关键词:时序总线温室

孙万麟,汤吉昀

(昌吉学院物理系,新疆 昌吉 831100)

1 引言

温度是智能温室中最重要的参数之一,适宜的生长温度可以维持温室的正常生产,甚至是提升农作物产量,提高经济效益,因而人们对智能温室系统中的温度检测性能提出了较高的要求。目前,国内关于温度检测系统的研究已经比较成熟,温室多点温度检测系统设计的文献也不少,比如有一部分学者采用Proteus平台上进行了关于多点温度检测系统的设计及仿真[1-12],他们以单片机作为控制核心,大都选用数字化温度传感器DS18B20联合起来设计多点温度检测系统,实现低功耗、低成本的温室温度检测。通过深入研究这些文献,它们也存在一些不足,有软件及器件选择上不是最佳搭配、温度数据采集不及时、实时监测存在一定误差等缺点。为了避免这些不足,并能精确采集与显示西红柿温室内的多点温度,采用嵌入式微控制器AT89C52单片机作为上位机,联合具有精度高、硬件成本低的数字温度传感器DS18B20等器件,设计了一款温室多点温度检测系统,并利用EDA平台—Proteus软件对改进电路进行了设计、仿真及其分析。通过大量仿真表明,所设计的多点温度检测系统,不仅实现温室内多点温度的精准检测,而且具有显示直观、操作方便、实时监测等优点,对西红柿温室系统中的温度检测部分具有一定的参考价值和借鉴意义。

2 多点温度检测系统电路设计

采用Proteus仿真软件设计及搭建系统硬件电路图,所设计的改进多点温度检测系统电路主要由温度传感器电路DS18B20、单片机最小系统以及人机交互电路(包括键盘、LCD和扬声器)三大部分组成,如图1所示。

在图1中,多个温度传感器DS18B20采用单总线连接、寄生电源供电,每个DS18B20的电源接口(VCC)和通信端口(DQ)都连接到总线上,有效简化了电路,并在总线上加了10kΩ上拉电阻,以提高电平的稳定性,并添加“电压探针”,分别设置在单总线(P3.7)、LCD 的 D0~D7 口(P0.0~P0.7)与 EN 端(P2.4)RS 端(P2.5),还将所有电压探针添加到虚拟分析图表中,用于检测单片机与各个器件的通信情况,其中电压探针名称与相连的单片机端口对应关系设置,如表1所示。

表1 电压探针名称Tab.1 Name of Voltage Probe

键盘电路共设置有四个按键K1、K2、K3、K4,各按键的功能,如表2所示。

表2 各个按键功能Tab.2 Key Function

3 算法实现

本系统算法采用C语言编写,源程序略。DS18B20采用单总线协议,在单总线上有三个基本时序:复位时序、写时序和读时序,主控设备通过运用这三个基本时序能够与单总线上的设备进行通信以及控制单总线上的设备。单片机要实现与多个DS18B20通信,需获取各个温度传感器的ROM编码,并需对这些编码的正确性进行CRC校验。

3.1 初始化DS18B20时序

在初始化序列期间,由总线控制器持续发出低电平作为复位脉冲,这个脉冲需要维持480US至960US,然后释放总线,总线控制器进入接收状态[1-4],单总线上的10K上拉电阻将总线拉到高电平。DS18B20检测到DQ端的上升沿需等待(15~60)US后,发出一个(60~240)US的低电平信号作为存在脉冲。单片机此时检测到总线上电平信号为负,则表明总线上挂有DS18B20。若检测到的信号为正,则表明总线上没有挂载DS18B20或者器件出现故障,其初始化时序,如图2所示。

图2 初始化时序图Fig.2 Initialization Timing Diagram

3.2 写DS18B20时序

DS18B20的数据读写是由总线控制器通过发送一个短暂的低电平信号来确认信息交换的,其写时序,如图3所示。DS18B20具有两种写时序:写0时序和写1时序,总线控制器通过写1时序向DS18B20写入逻辑1,写0时序向DS18B20写入逻辑0,每个写时序必须持续60US以上,两个写周期之间要有1US以上的恢复时间[5-8]。

图3 写时序图Fig.3 Write Timing Chart

3.3 读DS18B20时序

总线控制器发起读时序时,DS18B20只能向总线传送数据,其读时序,如图4所示。读时序开始时总线控制器将总线拉至低电平,并至少保持1US的时间,触发DS18B20的读时序,然后总线控制器释放总线[9-12]。在总线控制器拉低总线电平的下降沿产生后,DS18B20若要向总线写入逻辑1则拉高总线,写入逻辑0则拉低总线,DS18B20传输逻辑0结束后,总线会被释放,由上拉电阻返回高电平状态。

图4 读时序图Fig.4 Reading Timing Chart

3.4 主程序设计流程图

本系统的键盘采用中断式键盘与查询式键盘相结合的混合式键盘,按键K1作为外部中断触发源用来控制标志字k1,从而影响主程序走向,其系统主程序流程图,如图5所示。

图5 主程序流程图Fig.5 Flow Chart of Main Program

4 仿真及其分析

4.1 系统仿真

在Proteus软件中打开系统的DSN文件,添加已调试好的主程序所对应的HEX文件,然后在仿真调试区点击“开始”按钮,就开始运行仿真。由于单总线上挂有4个DS18B20(U3~U6),故可读出4个温度(TEMP1~TEMP4),U3至U6在LCD上对应显示的编号是TEMP1至TEMP4。这里以西红柿温室最佳生长温度(20~35)℃作为温度阈值上下限,即温度阈值上限值是35℃,下限值是20℃,通过调节按键设置温度阈值上下限界面,如图6所示。若温度在阈值范围之内,则显示“NORMAL”字样,若超出阈值范围,则显示“WARNING”报警字样,与其同时扬声器会发出“嘟嘟…”声。以TEMP1为例,系统正常运行情况:实时检测温度为25.2℃,在阈值范围之内,并显示“NORMAL”字样,如图7所示。异常运行情况:实时检测温度为15.2℃,低于阈值下限,并显示“WARNING”报警字样,与其同时扬声器会发出“嘟嘟…”声,如图8所示。

图6 阈值设置界面Fig.6 Threshold Setting Interface

图7 系统正常运行图Fig.7 System Normal Operation Diagram

图8 系统异常运行图Fig.8 System Abnormal Operation Diagram

4.2 系统运行波形分析

利用Proteus虚拟分析工具“仿真图表”进行系统运行分析,并设置“仿真图表”结束时间为11s,并右键单击图表选择使其最大化,其系统完整周期运行波形变化,如图9所示。该图显示了11s内系统从初始化DS18B20到读取四个传感器温度的完整过程,其中U3(VCC)在仿真开始时就有复杂的波形,按照程序设计,系统上电工作首先要通过单总线对线上器件进行初始化,并对线上DS18B20进行查询,以获取各个传感器的ROM编码,因此系统仿真开始,单总线上通信频繁,输出波形复杂,此时LCD不会与单片机通信,故其余端口均为高电平。在688MS时,单片机在单总线上发出指令读取第一个DS18B20(U3)的温度值,之后U3开始检测温度并将其转化成二进制代码,在1306MS处U3将温度数据通过单总线传递给单片机,每次通信结束后,单总线会置高电平,并保持高电平至下次通信,单片机将接收到的温度数据处理后通过LCD显示,在波形图上1325MS时,单片机向LCD传输指令和数据,此时单总线已保持高电平,符合实际通信情况,也证明本设计合理。

图9 系统运行图Fig.9 Waveform Diagram of Complete Cycle Operation System

4.3 系统功能验证性分析

首先查看ROM编码,在Proteus软件中,DS18B20只允许用户修改前24位序列号,后24位序列号默认为0,在仿真运行停止的状态下,右键单击U3,选择“编辑属性”,弹出“编辑元件”面板,将“编辑元件“面板中的“ROM SerialNumber”栏更改为十六进制的C8C530H(测试值),如图10所示。更改完U3的序列码之后开始仿真运行,系统开始显示温度后,两次按下K1键,进入ROM编码显示界面,LCD会循环显示各个DS18B20的ROM值,其中U3的ROM编码显示内容,如图11所示。

图10 DS18B20“编辑元件”面板Fig.10 DS18B20"Edit Components"Panel

图11 U3 ROM编码显示界面Fig.11 Code Display Interface of U3 ROM

理论推导U3的ROM编码:DS18B20内部具有64位光刻ROM,即:8位CRC码+48位序列号+8位系列码,这64位光刻ROM后8位是产品系列码,不同型号的温度传感器系列码是不同的,DS18B20的系列码为28H,中间48位是DS18B20唯一的序列号,最高8位是CRC验证码。因前7个字节的ROM编码按高到低的顺序排列应为000000C8C53028H,根据CRC校验原理,可以计算出这56位编码的CRC检验码为26H,完整的64位ROM编码则为2600 0000 C8C5 3028H,和图11中LCD显示的编码一致。

当然,还可以通过ROM窗口查看每个DS18B20的ROM编码,每个编码按照低字节储存在低地址单元、高字节储存在高地址单元的方式存放在单片机RAM编码中,其中U3的ROM编码,如图12框中所示。可见储存在单片机中U3的ROM编码与真实ROM编码一致,再应用CRC检验原理,对U3的64位ROM编码进行校验,得到其余数为0,则CRC校验结果正确,故系统CRC校验部分设计有效可行。同理,在对报警阈值和U3、U4、U5进行设定后,各个温度传感器的读数、报警信息、ROM搜索、CRC校验也均正确。以上分析及检验表明,本系统多点温度检测与显示、ROM搜索及CRC校验等功能均正常,故本设计正确。

图12 单片机RAMFig.12 RAM of Single Chip Microcomputer

5 结论

以西红柿最佳生长温度为阈值,以嵌入式微控制器单片机AT89C52作为上位机和数字温度传感器DS18B20等器件设计了一款多点温室温度检测系统,利用Proteus软件进行了电路的设计与仿真,成功实现温室内多点温度的准确采集与显示,并根据最佳温度阈值范围能实时调节温室温度,以保证农作物适宜生长。该系统具有检测精度高、稳定性强、显示直观、操作方便、实时监测等优点,既可以在西红柿温室大棚中使用,也可以通过重置阈值上下限在其他农作物温室大棚中使用,具有一定的参考价值和应用前景。

猜你喜欢

时序总线温室
现代温室羊肚菌栽培技术
清明
苍松温室 苍松灌溉
苍松温室 苍松灌溉
基于不同建设时序的地铁互联互通方案分析
可以避免一个温室化的地球吗?
一种基于CAN总线的误码测试方法
基于FPGA 的时序信号光纤传输系统
基于模体演化的时序链路预测方法
CAN总线并发通信时下位机应用软件设计