棉花叶面温度采集系统的设计与测试

2018-03-12 02:55常国权李亚兵
江苏农业科学 2018年2期
关键词:下位命令上位

常国权, 冯 贺, 李亚兵

(1.安阳工学院计算机科学与信息工程学院,河南安阳 455000; 2.中国农业科学院棉花研究所,河南安阳 455000)

棉花是我国重要的经济作物之一,在纺织、国防、医药、汽车工业等领域具有重要的作用,对棉花进行科学、智能化生长环境监测是提高棉花产量最重要的环节之一。为研究棉花叶面温度对棉花生长及其产量的影响,进而采取有效的控制措施,需要实时对棉花叶面温度进行采集,并将温度和采集时间进行存储,农业参数采集所用的传感器大多采用串行数字接口(serial digital interface at 1200 baud,简称SDI-12)总线接口,SDI-12是一种基于微处理器的传感器接口标准,是由美国水文组织提出的一种串行数据通信接口协议[1],为单线总线技术,由于SDI-12具有接口简单、功耗低、可组网、传输距离远、各节点独立性强等特点,该技术在农业多参数测控、水文和气象环境监测等领域中的应用越来越广泛。本研究设计一种能通过SDI-12总线进行棉花叶面温度的数据采集、存储系统,并采用Apogee公司生产的符合SDI-12协议的高精度、非接触红外线温度传感器SI-411进行数据试验和测试,该系统可以连接符合SDI-12协议的传感器,对参数进行采集、存储,并可以存储采集的时间、地点编号等信息,同时开发上位机软件以方便进行数据的处理和对系统的管理。

1 系统总体设计

本系统主要由下位机采集系统、上位机管理软件等2部分组成,核心是下位机采集系统的设计与实现。下位机采集系统由STC15F2K32S2单片机、Flash存储器W25Q64、128×64点阵液晶模块、SDI-12接口、USB转串口接口、4×5键盘、DS1302时钟及备用电池等模块组成。下位机采集系统使用USB线供电或者和PC通信,系统采用脱机工作方式,通过USB接口和PC进行数据传输;Flash存储器W25Q64用来存储采集的温度数据和采集时间、地点编号等信息;128×64液晶模块用来显示温度、时间及其他提示信息;4×5键盘主要用来对系统进行设置和控制,如设置时间、启动采集等;DS1302时钟模块主要为系统提供一个时间基准,并在采集温度的同时存储采集时间,系统断电时由备用电池给时钟模块供电以维持系统时间;SDI-12接口的数据线使用的是单片机的P3.2引脚,该引脚具有中断功能[2],当P3.2引脚产生中断时,在中断服务子程序中检测SDI-12起始信号并进行数据的接收和处理;蜂鸣器在用户操作时可以发出声音提示,也可以通过软件设置关闭声音提示。系统的总体结构如图1所示。

2 系统硬件设计

2.1 SDI-12接口电路设计

SDI-12传感器和单片机的接口电路是系统设计的核心。如前文所述,SDI-12为单线总线接口,SDI-12传感器只需要连接电源、地和数据线(data line)即可。本研究所采用的SDI-12协议传感器是美国Apogee公司生产的高精度、非接触红外线温度传感器SI-411,它具有功耗低、精度高、非接触、工作电压范围(4.5~24 V)宽等优点,在植物、土壤、水流表面温度测量方面的应用较多[3]。由于SI-411传感器的工作电压范围较宽,因此可直接用5 V电压给其供电,STC15F2K32S2单片机的P3.2引脚通过R5、C5、DZ1、R9等组成的保护电路与SDI-12传感器接口相连,STC15F2K32S2单片机的P3.2引脚支持上升沿和下降沿中断[4],这给程序检测SDI-12总线上的数据带来了较大方便,当发送SDI-12协议命令时,P3.2引脚模拟SDI-12协议命令时序,对SDI-12传感器返回的数据在单片机外部中断服务子程序中进行处理;RESET按键可以使单片机复位,这给程序的调试和下载带来方便。SDI-12和单片机接口电路设计如图2所示。

2.2 系统其他接口电路设计

为辅助采集系统更好地工作,增加W25Q64存储器、USB转串口CH340G、128×64液晶模块、4×5键盘、蜂鸣器、DS1302时钟及备用电池等模块。其中,W25Q64存储器是WINBOND公司生产的64 Mb串行存储器[5],该存储器工作电压为3.3 V,需要用REG-1117稳压芯片提供3.3 V电压,该芯片和STC单片机采用模拟串行外设接口(serial peripheral interface,简称SPI)时序通信方式进行通信,因此,将STC单片机的普通IO口P2.3~P2.6直接和该芯片连接即可,但STC单片机的P2.3~P2.6接口需要配置为准双向口模式。

CH340G是沁恒股份有限公司生产的USB转串口芯片,该芯片可以把STC单片机的晶体管-晶体管逻辑(transistor-transistor logic,简称TTL)串口信号转换为USB信号,并在PC上虚拟出1个串口,通过该USB转接芯片可以实现系统供电、程序下载、串口通信等功能[6]。128×64液晶模块采用SPI接口,因此STC单片机只需要5个普通IO口和该模块连接即可[7]。限于篇幅,其他模块的接口设计不再一一叙述。系统其他接口电路设计原理如图3所示[8]。

3 系统软件设计

系统软件设计主要包括下位机软件设计、上位机管理软件设计,其中下位机软件设计是系统设计的核心。下位机软件程序在Keil开发环境下采用C语言编写,上位机管理软件程序采用VC++6.0编写。

SDI-12总线技术属于单线总线技术,即在1根数据线上进行双向半双工数据交换,数据线是三态的,使用负逻辑[9]。协议规定总线通信的波特率为1 200 bps,SDI-12帧格式为1位起始位,7位数据位,1位奇偶校验位(偶校验)和1位停止位,数据最低位先发送,其中起始位为高电平,停止位为低电平[10]。与其他通信协议标准不同,SDI-12既约定接口的电气规范,又约定通信的内容。所有在SDI-12总线上发送的字符必须是可打印的ASCⅡ字符,SDI-12数据记录器和传感器在数据线上通过ASCⅡ码进行通信。

SDI-12传感器不工作时即进入低功耗模式,数据记录器需要通过数据线发送break信号唤醒传感器,1个break信号时间至少为12 ms的连续高电平,传感器从低功耗模式中被唤醒后,数据记录器需要再发送1个至少为8.33 ms的连续低电平marking信号,然后才能发送包含地址码的命令。传感器匹配地址正确并接收到正确的命令后,拉低信号线 8.33 ms 并返回数据。如果地址无效或空闲时间超过 100 ms,传感器将返回到低功耗待机状态[11]。SDI-12命令和响应时序如图4所示。

如前文所述,SDI-12总线上发送的命令字符均为ASCⅡ字符,命令由若干个字符组成,第1个字符通常为传感器的地址,最后1个字符均为“!”,表示命令结束。而传感器返回的数据最后2个字节总为0x0D、0x0A,即回车和换行。在数据记录器发送命令之前,首先将STC单片机的P3.2引脚配置为准双向口模式,此时单片机控制SDI-12总线,由图4可知,单片机先拉高总线至少12 ms,再拉低总线至少8.33 ms,之后就发送SDI-12命令字符。由于SDI-12协议规定的波特率为1 200 bps,故发送每1位占用的时间为(1÷1200)s,约为833 μs,若单片机给传感器发送字符“1”,即二进制数00110001,则单片机控制P3.2引脚产生的时序如图5所示。注意,SDI-12的时序为负逻辑,最低有效位先发送,EP(even parity)为偶校验位。STC单片机控制P3.2引脚发送1个命令字符的流程如图6所示。

当单片机接收传感器返回的数据时,采用的是中断方式。首先配置P3.2引脚为上升沿和下降沿均可触发中断,若在中断服务子程序中检测到的P3.2为高电平时,说明接收到了起始位(START),为保证单片机在总线上采样时总线处于稳定状态,在中断检测到的每个起始位后,在833 μs延时的基础上再增加一定的延时时间(200~350 μs),这样就能保证在检测后面的数据位时,833 μs的延时一定能处在数据稳定的状态。1个循环接收8个数据位(包括校验位),1个字节接收完成之后需要对各位取反并去掉校验位,当接收到0x0D、0x0A等2个字节后,表明传感器返回的数据结束,置接收完成标志为1,并在主程序中对数据进行存储、显示等处理。STC单片机控制P3.2引脚接收1个数据字符的流程如图7所示。

PC管理软件是使用VC++6.0开发的,使用了串口类编程技术[12]。PC管理软件的主要作用是把采集器存储的数据转换成一定格式并导出到Excel中,以方便对数据进行分析和处理。PC管理软件主要通过串口和采集器进行通信,采用API编程,上位机首先发送提取记录命令,下位机收到命令后,1次读取16条记录(每条记录包括采集时间、测试目标温度、表体温度和采集位置编号),再按照一定的协议进行封装后发给上位机,然后等待上位机返回的握手命令,上位机对接收到的数据校验无误后进行转换处理并显示在列表框中,再次发送握手命令给下位机,下位机接收到命令后重复以上步骤,直到存储的数据提取完毕。上位机管理软件的界面如图8所示。

4 系统测试

为验证采集系统的稳定性和可靠性,使用SI-411温度传感器、 逻辑分析仪配合上位机管理软件对系统进行测试和验证。采集系统发送“?R3!”指令给SI-411时,逻辑分析仪捕捉到的波形如图9所示,可以看出,break信号约为 12.494 ms,marking信号约为9.162 ms,起始位及数据位宽度约为0.835 ms,符合协议要求。SI-411传感器返回的部分数据波形如图10所示,起始位及数据位宽度约为0.849 ms,图中标注①的宽度约为4.28 ms,共包含5个1,其中第1个为起始位;标注②的宽度约为1.7 ms,包含2个0;标注③的宽度约为1.7 ms,包含2个1;标注④的宽度约为0.849 ms,包含1个0,该位为停止位,去掉起始位和停止位,剩余的数据位为11110011,去掉最后1个校验位1,并取反后得到0000110,根据低位在前原则,该数的十进制为48,即为字符“0”的ASCⅡ码,按照同样的分析方法,可以得到SI-411传感器返回的数据为0 +29.88385+27.56718,其中“0”为传感器地址,“+”后面依次为采集的目标温度和外壳温度。液晶显示采集到的温度如图11所示。

5 结论

以STC15F2K32S2单片机为核心,并扩展SDI-12传感器接口、W25Q64存储器模块、128×64液晶模块、USB转串口接口、4×5键盘、DS1302时钟等外围模块设计的棉花叶面温度采集系统可以对棉花叶面温度和时间进行采集并存储,支持手动采集、定时自动采集、数据导出等功能,同时该系统又具有一定的通用性,可以用在其他农作物、水文和气象环境温度监测等领域中。经过多次测试、改进后,已在中国农业科学院棉花研究所小批量投入使用,经使用证明,该采集系统稳定可靠、操作简单、管理方便,取得了较好的使用效果。

[1]胡轶群,邱文博,李冠宇,等. 基于SDI-12总线的海洋环境监测数据采集技术的初探[J]. 海洋信息,2016(4):19-23.

[2]徐先峰,魏 文,李常磊,等. 基于STC系列单片机的智能工业现场显示仪设计[J]. 电子器件,2013,36(5):728-730.

[3]Apogee Instruments Inc. Infrared radiometers SI-400 series manual[DB/OL]. (2016-05-20)[2017-03-18].http://www. apogeeinstruments.com.

[4]宏晶科技有限公司. STC15全系列中文资料[DB/OL]. (2015-06-29)[2017-03-18].http://www.stcmcu.com/.

[5]Winbond Electronics Corporation. W25Q64 64M-bit serial flash memory with dual and duad SPI[DB/OL]. (2015-07-18)[2017-03-18].http://www.winbond.com.

[6]江苏沁恒股份有限公司. CH340手册[DB/OL]. (2016-09-12)[2017-03-18].http://www.wch.cn.

[7]朱嵘涛,徐爱钧,叶传涛. STC15单片机和nRF2401的无线门禁系统设计[J]. 单片机与嵌入式系统应用,2014(6):57-60.

[8]顾 滨. Protel99SE实用教程[M]. 4版. 北京:人民邮电出版社,2015:55-60.

[9]董存辉. 基于SDI-12总线的生态水文数据采集系统的设计与实现[D]. 兰州:西北师范大学,2013.

[10]刘 图,冯能操,朱儒石. 基于SDI-12接口水位计的短消息水位查询系统[J]. 黑龙江水专学报,2010,37(1):84-86.

[11]SDI-12 Support Group. SDI-12 a serial-digital interface standard for microprocessor-based sensors(Version 1.3)[DB/OL]. (2016-01-28)[2017-03-18].http://www.sdi-12.org/.

[12]孙 鑫,余安萍. VC++深入详解[M]. 北京:电子工业出版社,2012:219-225.

猜你喜欢
下位命令上位
只听主人的命令
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
移防命令下达后
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
这是人民的命令
以新思路促推现代农业上位
CAN总线并发通信时下位机应用软件设计