无线流速监测系统的研究与实现

2014-04-01 06:21王斌儒司海瑞张乐年
机械制造与自动化 2014年5期
关键词:扇区流速单片机

王斌儒,司海瑞,张乐年

(南京航空航天大学 机电学院,江苏 南京 210016)

0 引言

传统水流速度监测系统因传输线路的限制,在实际监测应用中有着诸多约束。例如,监测系统成本高、系统电路复杂、数据传输距离短、传输速度慢,以及系统的实时性和稳定性差等。本课题通过对STC12LE5608AD低功耗单片机和TI(Texas Instruments,美国德州仪器公司)的CC1101 高性能射频收发器的研究,实现无线流速监测系统。相对于传统系统,该系统的性价比有重大提升。

该系统主要分为两部分:主控部分和测试部分(图1(a)所示)。主控部分由上位机(PC 机)、STC12LE5608AD增强型低功耗单片机和CC1101 无线数据收发模块组成(图1(b)所示);测试部分由STC12LE5608AD、CC1101 无线模块和水流速度传感器组成(图1(c)所示)。其中上位机监控软件是基于VC6.0 MFC 与SQL 数据库开发而得。STC12LE5608AD 是宏晶科技推出的增强型8051 内核的单周期MCU,其低功耗工作模式和内部集成的8 路高速10 位ADC 在由电池供电时更具优越性。CC1101 是TI 推出的一款低于1GHz 高性能射频收发器,其极低功耗和高稳定性使其成为本监测系统无线数据收发芯片的首选。流速传感器为南京水利科学研究院研发的光电式旋桨流速传感器,其旋桨叶轮直径分为12 mm 和15 mm 两种,旋桨反光面采用先进电镀工艺,耐磨损,信号强,线性度好,测速范围广。

图1 系统组织结构框图

1 系统关键技术

1.1 流速计算

光电式旋桨流速传感器的工作原理是,将旋桨传感器放入水流测试点,在水流的作用下旋桨转动,其转速正比于水流速度。旋桨的旋转运动转换为电脉冲后,经放大整形,由STC12LE5608AD 的计数器计数。通过计数器记录单位时间转动次数,换算成流速值,流速计算公式为:

式中:V——流速,cm/s;

K——传感器率定系数;

T——设定的采样时间,s;

N——采样时间内的传感器旋桨转数(对单反光面旋桨而言。若对双反光面旋桨,N 应除以2 才为采样时间内的传感器旋桨转数)。

1.2 STC12LE5608AD 多任务并行定时

在主控单片机和测试单片机中均要求STC 实现多任务并行定时。多任务并行定时是指MCU 内部定时器个数极为有限时,多个任务(任务数﹥定时器个数)均需要定时功能,而定时时间可能不同,且可能为异步定时。例如,任务A 需要50 ms 定时,任务B 需要1 s 定时,任务C 需要1 min 定时。算法流程图如图2 所示。

图2 多任务并行定时程序流程图

1.3 总线设计

1)主控部分与上位机之间的RS-232 串行总线

本系统中,STC 与上位机通过串行总线RS-232 相连。RS-232 电平转换采用MAX232 芯片把TTL 电平转换成RS-232 电平格式,可以用于单片机与PC 机通信,以及单片机与单片机之间的通信,在该系统中的电路原理图如图3 所示。

图3 串行总线RS-232 驱动电路

2)CC1101 无线模块与STC 之间的SPI 总线

CC1101 采用兼容性SPI 接口与STC 单片机相连接,工作时CC1101 为从机,STC 单片机为主机。单片机与CC1101 的CSN 引脚、MOSI 引脚、SCK 引脚、MISO 引脚相连的I/O 口设置为输出,用来完成片选、主机数据输入、SPI 时钟信号与收发控制,如图4 所示。SPI 接口上所有数据传送都是始于MSB[2],数据传送均以一个头字节(Header byte)开始,包含一个读写位(R/W bit),一个突发(Burst access)访问位和6 位地址位(A5~A0),整个接口为环形总线结构,工作方式如图5 所示。

总之在“庙堂”建筑这一原型导向下,美术馆的展品和建筑是国家文化的表征和“对象化”,是对邓肯的“文明化仪式”的体现——“将国家的权威性与文明的观念等同起来”[9]。

图4 STC 与CC1101 的SPI 总线连接电路

图5 总线工作方式

CC1101 无线收发模块在保证高通信性能的前提下,以低功耗和体积小为原则进行设计。当选定模块工作频率为433 MHz 时设计电路原理图如图6 所示[3]。

图6 CC1101 无线收发模块电路原理图

在通过SPI 总线对CC1101 进行读写操作时,除了需要严格按照上述SPI 的传输协议来设置I/O 口的时序外,还需要注意SPI 时序图中特定的时间要求。CC1101 的接口时序如图7 所示,其中SCK 高电平时间Tch、SCK 低电平时间Tcl、SCK 上升时间Tr、SCK 下降时间Tf为硬件的要求,经实际测试单片机的I/O 口可以达到此标准。而CSN下降沿到建立有效数据的最长间隔Tcsd和SCK 下降沿到建立有效数据的最长间隔Tcd则为时序响应要求,编程时注意不能在这些点插入延时程序。需要注意的是有效数据至SCK 上升沿最短间隔Tdc、SCK 上升沿后数据需保持最短时间Tdh和CSN 下降沿后SCK 时钟建立的最短时间Tcc,这三个时序点都需要保持最少2ns 的延时。

图7 CC1101 的SPI 接口时序图

本系统中的点对点通信(主控系统与测试系统分时通信),RF 函数的正确配置尤为关键[4],以得到最优寄存器设定和评测性能及功能。RF 配置函数配置CC1101 的高频部分,该配置影响的是无线收发器的收发频率、发送功率、数据传输速率、无线收发模式、调制方式以及数据长度等。由于寄存器较多,在此不予以详细介绍,可以参见文献[3]。

1.4 EEPROM 循环写入法

STC12LE5608AD 单片机内部集成的8K EEPROM 与程序存储空间是分开的,利用IAP/ISP 技术可将内部Data Flash 当作EEPROM,擦写次数在10 万次以上[5],用于保存一些需要在应用过程中修改并且断电不丢失的参数数据。EEPROM 可分为8 个扇区,每个扇区包含512 Byte,区间具体划分的地址表如表1 所示。可对EEPROM 进行字节读/字节写/扇区擦除。

表1 STC12LE5608AD 单片机内部EEPROM 地址表

考虑到空间冗余,本系统所用的EEPROM 区间为0010h~0FF5h(#define START_ADDR 0x0010,#define STOP_ADDR 0x0FF5),并将此区间定义为EEPROM Zone。

STC 中的EEPROM 有两个突出优点,1)断电后所存储的内容不会丢失,2)可用电信号方便地对其进行擦除和读写。但是由于结构上的原因,EEPROM 擦写次数有限,使用寿命通常较短。以本系统为例,因为测试部分的子机在工作时每1min 需要进行一次电压检测,并将ADC转换后的8 位电压值写入EEPROM 中的某个地址单元。现假设系统每天工作8 h,EEPROM 可擦写10 万次,则EEPROM 的使用寿命为:

显然,EEPROM 的寿命不能满足测试系统需要长时间工作的需要,成为整个系统的严重缺陷。为此,笔者采用下面介绍的循环写入法,显著延长EEPROM 的使用寿命。

循环写入法是指:在EEPROM 中开辟一段空间EEPROM Zone,每次向EEPROM Zone 写入两个字节的数据,其中低地址字节数据为当前ADC 转换的电压值,高地址字节数据为本次写入数据的结束标志Stop_Flag(#define Stop_Flag 0x11),下一次向EEPROM 写数据时,首先查找EEPROM 中Stop_Flag 所在的单元地址Stop_Flag_Addr,然后从Stop_Flag_Addr +1 和Stop_Flag_Addr +2 开始写数据,并擦除Stop_Flag_Addr 单元和Stop_Flag_Addr-1 单元的内容。若Stop_Flag_Addr==STOP_ADDR,则从START_ADDR 重新开始写。读EEPROM 中的数据的过程与此类似。具体程序流程图如8 所示。

图8 写/读EEPROM 程序流程图

关于循环写入法的几点说明:

EEPROM Zone 写数据时的示意图如下:

第1 次写入数据:

第i 次写入数据:

最后一次写数据:

1)0x##、0x&&、0x@ @ 为ADC 转换的电压值,0x11为Stop_Flag;

2)测试部分的子机在使用前已用标准3.7 V 稳压直流电源标定出参考电压,且测试部分电源电压范围要求为3.5 V~5.0 V,故有:

所以取Stop_Flag 为0x11 不会与系统中ADC 转换的电压值冲突;

3)由上述写数据示意图可以看出,ADC 电压值始终写入偶数地址单元中,Stop_Flag 始终写入奇数地址单元中。这样安排有两点作用:1)每次写入的两个字节数据不会跨扇区,因为STC12LE5608AD 中EEPROM 的擦除操作是按扇区进行的,由表1 可知这样安排可以优化扇区擦除操作,即一次擦除操作即可完全擦除上一次写入的数据,2)最后一次写入数据时不会出现将ADC 电压值写入0FF5 h 中,而Stop_Flag(0x11)写入0010h 中,极大地方便了数据的处理。

按照循环写入法擦写EEPROM 使得EEPROM 中的所有存储单元都得到了均匀的使用。长期使用时不会产生低地址区擦写频率远高于高地址区擦写频率的现象,不会使EEPROM 中高、低地址区的写入次数出现极大的不平衡。同样的条件下,采用循环写入法对EEPROM 进行擦写,EEPROM 的使用寿命为:

可见,EEPROM 循环写入法大幅度延长了EEPROM的使用寿命以及提高EEPROM 的利用率。使EEPROM 的开发使用更加充分、合理。

1.5 通信协议

本系统中主控部分与测试部分的无线通信、主控单片机与上位机的串行通信建立之前,首要任务即是定义各组通信的通信协议。其中,主控部分与测试部分的无线通信协议见表2,主控单片机与上位机的串行通信协议见表3。

表2 主控部分(主机)与测试部分(子机)的无线通信协议

表3 主控单片机(主机)与上位机(PC 机)的串行通信协议

续表3

2 结语

在无线流速监测系统中,为防止因某个测试部分出现通信异常而使主控部分陷入永久等待状态,主控部分软件设计为可编程的等待超时限制,即若在规定的时间内无法得到当前测试部分数据,则主控部分默认该测试部分通信异常,不再继续等待该测试部分发送数据,并将通信异常的测试部分的数量和编号发至上位机系统。经南京水利科学研究院测试,当测试部分数量为100 台,所有测试部分与主控部分通信正常时,主控部分分时提取各个测试部分数据,并将数据上传至PC 机的总用时时间≤1 s,即主控部分完成对一台测试部分数据的提取和上传用时时间≤10 ms。综上所述,本课题中的基于STC 与CC1101 的无线流速监测系统能够满足实际应用中高速、实时的要求。

[1]蔡守允,刘兆衡,张晓红,等.水利工程模型试验量测技术[M].北京:海洋出版社,2008:17-18.

[2]李晶.基于CC1101 的短距离无线通信网络的设计[D].北京:电子科技大学,2011:30-31.

[3]Texas Instrument.CC1101 Datasheet,2005.

[4]RUAN Yaocan,HE Minghao,SONG Shuran,et al.Multipoint wireless pressure detecting system[C].Artificial Intelligence,Management Science and Electronic Commerce (AIMSEC),2011 2nd International Conference on,2011:4092 .

[5]宏晶科技.STC12 系列单片机产品说明书[Z].

[6]李现勇.Visual C++/Turbo C++串口通信编程实践[M].北京:电子工业出版社,2004.

猜你喜欢
扇区流速单片机
分阶段调整增加扇区通行能力策略
『流体压强与流速的关系』知识巩固
山雨欲来风满楼之流体压强与流速
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
爱虚张声势的水
U盘故障排除经验谈
基于贝叶斯估计的短时空域扇区交通流量预测
重建分区表与FAT32_DBR研究与实现