二轮自平衡车,顾名思义就是仅有两个车轮,需要时刻主动去保持平衡的车,不同于自行车摩托车等车轮前后排列的二轮平衡车,本文讨论的是两轮共轴的平衡车,如图l所示。
图1二轮平衡车示意图
这样的两轮车可想而知如果不加控制,必然会向前或后倾斜并加速倒下,但是车轮的合理旋转对车轴——即车身底部产生的扭矩与推力又可以阻止车身倒下的趋势并纠正车身相对于平衡位置的角度偏差。这也就是自平衡的过程,而且由于平衡位置的脆弱性与扰动的必然性,控制器必须时时担负起检测与纠偏作用。
目前二轮平衡车研究领域国内外不仅已经有了许多成功的理论研究及实践成果,而且还出现了成功的商业化产品--Segway。而本文中讨论的应用于二轮平衡车开发平台的ZigBee模块无线通信网络,可以很好地为控制算法的开发与调试提供方便。
为开发平台增加人机界面十分重要,而显示屏显然不可能安装在运行中的小车上,这就必须有一台固定的上位计算机,上位机与小车MCU之间的数据交流由无线通信完成。本文选择ZigBee无线模块为通信基础,硬件核心为支持ZigBee协议的CC2530芯片,而具体选择原因见下节。
一 ZigBee模块及CC2530微控制器
无线通信技术在工业控制上发展极其迅速,已形成多个技术标准。ZigBee,GPRS数据网络,WLAN以及一些专用无线网络技术。相较于传统的有线通信技术,无线通信技术无需布线,系统的架设更为简单,当然在电磁环境复杂的一些工作环境下可靠性还是不如有线通信。
本文采用的ZigBee数传模块通信基于IEEE 802.1 5.4协议,占用免费的2.4GHz频道,具有低功耗、短距离、数据可靠性高、容量大、时延小、安全和成本低等技术特点。同时其通信节点的硬件高度集成化,非常适合本文中的小规模嵌入式系统。
本文ZigBee无线模块通信具体实现对象的硬件基础是德州仪器TI(Texas Instrument)生产的CC2530芯片及其配套天线模块。CC2530芯片实质上就是一块集成了无线控制功能的8位单片机,它不仅有通信控制功能,也可以控制外围设备完成一些控制任务,这样一些嵌人式系统可以直接采用CC2530这样的SoC(片上系统)作为控制核心而无需添加专门的通信控制器,也就大大减化了系统设计。
CC2530仅仅是一个通信控制硬件,它的正常工作离不开同样由德州仪器提供的Z-Stack,ZigBee协议栈,ZigBee协议栈相当于一套操作系统接管了底层硬件的控制,其内含的一套源代码可以实现ZigBee数传模块通信的各种功能,它们被封装于一些函数中,开发者只需调用这些函数即可实现相应功能。
二、通信系统系统具体实现
2.1通信数据包格式。
构建通信系统,确定通信的具体内容是必不可少的,二轮平衡车控制器想要直立,必须实时获知车体倾角,同时输出相应的PWM信号控制电机旋转以纠正倾角偏差。而这些信息也是开发者想要实时获取的,所以本文中的通信网络需要实时将这些信息上传至上位机。
需要注意的是由于本系统中车体倾角是由加速度传感器检测的重力加速度在车体竖直方向的投影大小推算出来的,角加速度信号也是需要传感器进行检测的,而本文所用三轴加速度传感器不论哪个方向都会受到的干扰——与被检测信号叠加的机械振动,小车行驶的加速度等等,所以单纯的加速度传感器检测值是无法使用的,而同类问题的一般解决方案是外加一个不会被加速度干扰信号影响的较为准确的陀螺仪传感器来检测角速度口]:陀螺仪的角速度是比较可信的,将其与被严重干扰的加速度传感器信号进行融合,并将融合后的信号作为滤波的参考,可以得出较为准确的小车运动加速度信号。
所以最终确定的上传系统状态数据包内容如表l所示。
表1上位机与小车通信数据格式
同时上位机下行数据包格式暂定为PID控制器的三个参数。
2.2通信系统工作流程
本文中上位机与小车之间的通信系统总体工作流程如图2所示:
图2通信系统总体工作框图
需要注意的是在小车上嵌入式ZigBee模块中上传小车工作状态进行ZigBee数据采集的任务优先级高于接收上位机下行的PID参数的任务优先级。
通信系统有许多形式,协议也不尽相同,但都至少必须有协调器(Coordinator)和终端(Endpoint),协调器就是通信的发起者,也就是通信网络的建立者,当网络建立好之后,协调器就由网络的建立者变为网络的管理者,也就是类似于路由器(router)的功能:网络终端(Endpoint)在网络中不需要承担太多任务,只需要加入网络即在网络上注册并被分配地址。
虽然本系统的通信节点只有两个,但也必须包含协调器(Coordinator)与终端(Endpoint):那么剩下的问题就是哪个ZigBee无线模块作为协调器发起通信:由上文可以看出,网络中协调器需要发起通信,构建网络,之后要转为网络的管理者,它的系统开销必然大于只是作为参与者加入网络的终端。本文中的两块CC2530芯片中显然嵌入于小车上的那块承担了ZigBee数据采集滤波与系统控制的任务,可见其本来承担任务就相对比较繁重。而仅仅是作为上位计算机通信终端的ZigBee无线模块,由于除了实现无线通信功能外只需与计算机定期进行USB通信,所以可以说是相对清闲的,所以本文中就由与计算机相连的ZigBee无线模块担任协调器承担构建网络的任务,参见图3。
图3上位机通信模块流
本文中ZigBee数传模块具体实现对象的硬件基础是德州仪器TI(Texas Instrument)生产的CC2530芯片及其配套天线模块:CC2530芯片实质上就是一块集成了无线控制功能的8位单片机,它不仅有通信控制功能,也可以控制外围设备完成一些控制任务,这样一些嵌入式系统可以直接采用CC2530这样的SoC(片上系统)作为控制核心而无需添加专门的通信控制器,也就大大减化了系统设计。
而作为控制器的ZigBee无线模块只需要作为终端加入网络并定时发送系统状态数据并接收上位机修改的控制器参数。参见图4:
图4 网络终端通信模块流程
三、结语
本文中的ZigBee数传模块通信系统成功实现了上位机与二轮平衡车之间的ZigBee数据采集交流,与上位机一起为二轮平衡车的开发提供了合适的人机界面,大大方便了小车控制器结构与参数的调试:上传的数据也可以让开发者更直观地了解小车的工作状态。