关键词:运动导航;监控软件;单片机;串行通信
林小宁(1962—) 男,广东蕉岭人,讲师,主要从事机电一体化及数控方面的教学及研究。
1 引言
随着电子导航技术的不断进步,如何准确而快速地获取运动物体的行驶信息就成为导航产品设计和开发所关注的焦点问题。目前实现导航定位技术的主要途径有全球定位系统[1](Global Positioning System,GPS)、航位推算技术[2](Dead Reckoning,DR)以及地图匹配[3](Map Matching,MM)三大技术。
航位推算技术是一种传统的跟踪导航算法,它采用里程传感器和航向传感器来推算运动目标轨迹,误差较大。地图匹配算法复杂,耗费软硬件资源且实时性难以保证。而GPS技术在智能交通运输领域的应用日趋广泛,且十分成熟。
笔者在工作中做了如下尝试:以低成本、低功耗、高可靠性和较好的交互性为基本原则,用C8051F020作为核心处理器,设计了运动平台控制器;开发符合Windows规范的监控软件,提供友好的人机界面;利用微功率无线数传模块完成上位机软件与单片机之间的通信。自定义了通信协议,提高数据通信的准确性和稳定性。
2 系统硬件结构
本系统硬件总体结构如图1所示。系统采用两级微机控制结构,即上位机是PC机,下位机是C8051F020单片机。单片机负责数据采集、转换、处理和电机控制,同时把采集到的信息打包发送给PC机变换、处理和显示。上位机与单片机之间的通信通过微功率数传电台模块实现。

图1 系统组成框图
C8051FXXX系列单片机是Cygnal公司推出的高性能的完全混合信号系统MCU芯片,其指令集与MCS-51系列单片机完全兼容[4]。本文使用C8051F020设计运动平台控制器,该处理器采用基于流水线的CIP-51内核,片内集成VDD监视器、看门狗定时器和时钟振荡器,支持在线编程和JTAG调试接口,具有体积小、功耗低、便于调试开发等优点。
C8051F020的两个串口分别用来连接GPS和数传电台。定时器/计数器T2配合UART0产生9600bps波特率与数传模块连接,完成与PC机的通信;定时器/计数器T4配合UART1产生4800bps波特率接收GPS信号。用两路可编程定时/计数器(PCA)产生16位的PWM分别驱动电机和舵机。
运动平台的初始坐标和方位角由GPS获得。iTrax 02[5]型接收机是一款超小体积、低功耗的GPS OEM板,其尺寸仅为26mm×26mm×4.7mm,休眠功耗仅为80uW,连续导航时也不超过110uW,并且从休眠到导航定位仅为8s,具有极快的信号获取引擎。iTrax 02带有2个UART接口,可接收NMEA0183格式的数据和二进制的iTack格式数据。其端口2用来输入差分修正信息和输出卫星的原始测量信息,而端口1用来输入设定语句和输出定位语句。C8051F020单片机具有全双工串行通信能力。两者采用最简单的零调制的三线制进行串行通信,这是进行全双工所需要的最少数目的线路。因而只需将C8051F020的串行口经TTL电平与EIA电平转换后,再与iTrax 02板串行口1对应连接。系统采用11.059 MHz晶振。
无线通信模块选择ZT-TR43C型微功率无线电台,该模块适用于低成本、小型化场合的无线数据收发。
3 系统软件设计
3.1 自定义通信协议
对于监控软件与单片机之间的通信,能够实现收发真实再现的关键在于PC机与单片机之间的通信协议是否满足要求。经过需求分析,制定了如图2所示的单片机向PC机发送的通信协议。

图2 单片机向PC机发送的数据格式
单片机向PC发送的数据包由15个字节组成。数据包开头的两个字节,我们设定第0和第1字节分别为0xEB和0x90,定义为数据头。当有数据向PC机发送的时候,检测数据头是否与设定值一致,一致就继续接收剩余的数据,否则舍弃该数据包。第2~5字节留给加速度传感器信息。第6~9字节为采集的GPS纬度数据;第10~13字节表示采集来的GPS精度数据;第14个字节为校验字节,该字节等于前14个字节的和,用来检验接收的数据包是否完整。图3所示为PC机向单片机发送的数据包格式。

图3 PC机向单片机发送的数据格式
PC机向单片机发送的命令占用一个字节,低四位表示对电机控制的命令和数据,高四位表示对舵机提供的命令和数据。第3位表示电机进退位,“0”表示前进,“1”表示后退,第0~2位表示控制量;同理,第7位表示舵机转向控制位,“0”表示右转,“1”表示左转,第4~6位表示控制量。控制命令如表1所示。
表1 控制命令表

3.2 软件实现
本系统软件分为两个部分,一部分是单片机控制软件,在Keil C51环境下开发,采用模块式结构设计,包括控制模块、采集模块等,主要模块流程图如图4所示。

图4 单片机主要模块程序流程图
另一部分是PC机操作软件,使用Microsoft Visual C++环境开发,采用面向对象技术设计,基于对话框结构,其软件结构框图如图5所示。微软提供的MScomm控件封装了Windows提供的与串口操作相关的大多数API函数,便于实现串口数据的收发,且符合面向对象的编程规范。MScomm控件支持两种访问串口的方式:查询方式和事件驱动方式。事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,如在串口接收缓冲区中有字符,或者Carrier Detect(CD)或Request To Send(RTS)线上一个字符到达或一个变化发生时。在这些情况下,可以利用MScomm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法非常有效。本文选择两者结合的方式完成串行通信程序设计。

图5 系统软件流程图
4 结束语
采用C8051F020单片机作为核心处理器,具有体积小、功耗低、便于维护的特点。开发符合Windows风格的监控软件具有人机界面友好,便于操作的优点。由于选用无线数传电台作为通信手段,因此使用的场合较为广泛。该系统还可用于其它串行通信或远程监控场合。
参考文献:
[1] 魏 宏,城市轨道车辆组合定位导航系统的研究与开发[D]. 吉林:吉林大学, 2003.
[2] 李本亮,GPS车载导航系统中的航位推算技术[Z]. 北京:菱科电子技术(中国)有限公司研发中心, 2005.
[3] 王仁礼,陈天泽, 王冬红. 智能型地图匹配综合算法的研究[J]. 计算机辅助设计与图形学学报,2003.
[4] 张迎新,雷文, 姚静波等. C8051F系SOC单片机原理及应用[M]. 北京:国防工业出版, 2005.
[5] 闻新,刘宝忠,林闻晓,MCS-51与GPS-OEM板串行通信技术及实现[J]. 无线电电子学与电信技术,2006. |