微型机器人无线群组化控制器设计与实现*

2015-02-23 08:28曾妍
电子器件 2015年4期

曾妍

(四川信息职业技术学院,四川广元628040)



微型机器人无线群组化控制器设计与实现*

曾妍*

(四川信息职业技术学院,四川广元628040)

摘要:针对微型机器人群组控制对无线传输及多路舵机控制的需求,提出了一种基于STC12C5A60S2及CC2530实现对16路舵机无线群组控制的控制器设计方案,利用轮询机制和脉宽递增方法对多路舵机转角和转速独立控制,并基于Z-STACK协议栈实现自组网、无线传输和远程ISP下载。经实验测试,实现了对含多路舵机的多个微型机器人的无线群组控制。

关键词:机器人控制器;轮询算法;群组控制;远程升级

在足球运动机器人、舞蹈表演机器人,以及以机器人为载体的多点传感参数动态采集应用领域,常需用到具备无线数据传输、动态组网、多路舵机控制、传感器参数采集功能的控制器。文献[1]提出了一种时分复用8路舵机控制器,根据舵机PWM信号特点,利用单片机定时器功能实现对多路舵机的间歇控制;文献[2]提出了一种基于DSP的12路舵机控制器,利用DSP的事件处理能力和定时器功能实现舵机控制中的事件处理和分时控制;文献[3]也提出了一种基于时分复用并具有转速调节功能的32路舵机控制器。这些控制器重在分析实现对舵机的高速和精确控制的方法,所设计的电路缺乏必要的功率保护功能,很容易因挂载舵机过多而烧坏控制器,并且不具备动态组网及无线控制等功能,无法实现对多个机器人的远程控制。为此,提出了一种无线群组化控制的多路舵机控制器的设计方案及实现方法。

1 总体方案

1.1舵机PWM控制要求及实现方法

舵机是一种位置伺服驱动器,通常采用周期为20 ms的PWM信号控制,脉宽从0.5 ms~2.5 ms对应舵机位置-90°~+90°的线性变化范围[1]。多路舵机控制器的PWM信号产生方法主要有两种:一是运行CPLD、FPGA、DSP等的高速运算能力提供基于硬件的PWM支持;二是利用微处理器的定时器功能,提供基于软件的PWM支持[2]。由于CPLD等不具备事件处理能力,因此本设计采用了基于STC12C5A60S2单片机的软件PWM方案。STC12C5A60S2是运行速度比普通51系列单片机快8倍~12倍的增强型51系列单片机,拥有2路PWM、1280 byte RAM、60 kbyte Flash、4个16 bit定时器、独立串行通讯波特率发生器,以及单个驱动能力可达20 mA的32个I/O口,因此非常适合用作多路舵机控制器[4]。

1.2无线群组控制方式选择

多机器人无线群组控制方式需满足3个要求:能对网络中的各通信节点进行管理,包括网络建立、入网发现、路由管理及动态组网;数据传输有效性高,无线数据的传输速率应满足舵机控制实时性要求;传输应与控制分离,即定制的传输协议应做到透明传输。为此,本设计选用ZigBee传输方式,通过在CC2530上移植Z-STACK协议栈及应用开发,实现对多个控制器的自组网管理及指令、数据的无线传输。

1.3控制器的硬件组成

据上述分析而制定的硬件设计方案如图1所示,主要由直流电源电路、CC2530无线传输模块(终端节点)、STC12C5A60S2单片机最小系统、光耦隔离电路、USB转串口电路组成。

图1 控制器的硬件组成

电源电路用于为整个系统提供6 V和3.3 V直流电,供舵机及控制器工作使用。光耦隔离电路的作用主要有两点:一是隔离单片机I/O口和舵机控制端。虽然STC12C5A60S2单片机每个I/O口驱动能力高达20 mA,但STC公司建议整个芯片I/O的工作电流不超过120 mA[4],所以直接用I/O口控制16路舵机时很容易因芯片驱动电流过大烧坏芯片,加入光耦隔离电路可有效解决该类问题。二是隔离舵机供电和控制器供电,避免舵机对控制器的干扰。在单电源供电系统中,舵机工作会对单片机产生干扰,因此舵机与舵机控制器应采用相互隔离不共地的双电源供电[5],光耦隔离电路可实现双电源的隔离。

控制器运行中,PC控制端既可以通过USB转串口电路直接向单片机下发控制指令控制舵机运行,也可以通过CC2530协调器以无线方式向CC2530终端节点下发指令,并经终端节点以串口通讯方式将指令下发单片机控制舵机运行。同时,系统还可利用STC12C5A60S2的ISP(In System Programable)技术,实现STC12C5A60S2的在线编程,便于对舵机控制程序的远程更新。

2 关键电路设计

2.1电源电路选型与设计

多路舵机控制系统中,舵机的工作总电流是影响电源电路选型与设计的关键因素。以16路辉盛996R舵机为例,同时运转的总电流可达20 A,因此最好采用大电流开关电源或直接用电池供电。为便于机器人的移动和满足隔离需要,本系统采用图2所示双7.4 V锂电池供电方案,锂电池1经D25SB60降压后输出约6 V电压供给舵机,锂电池2经三端稳压器后,输出3.3 V电压供给控制器。由于多路舵机工作电流大,无法通过线性稳压器降压,因此大电流整流桥堆D25SB60作降压芯片,利用桥堆中的二极管将7.4 V电压降为6 V。锂电池1和锂电池2采用不共地连接,其隔离方法在图3中展示。

图2 电源电路

2.2STC12C5A60S2对舵机的控制电路设计

STC12C5A60S2的I/O口需经光耦隔离后方控制舵机。由于舵机控制采用周期仅为20 ms的PWM信号,因此需选用具有较短tPHL和tPLH的高速光耦,否则易因PWM波形畸变影响舵机工作稳定性,本系统选用高达10 Mbit/s的高速光耦6N137实现隔离[6]。以P1.2口控制舵机为例,其应用电路如图3所示,单片机输出的PWM信号从6N137的3号引脚输入,经光耦隔离后从6号引脚输出控制舵机。多路舵机控制系统中,需为每个控制I/O口各设计一路光耦隔离电路。图3中,加入光耦电路后还实现了控制器供电Vcc1和舵机供电Vcc2的不共地隔离。

图3 单片机控制舵机电路

2.3CC2530与STC12C5A60S2的串口通讯电路设计

CC2530与STC12C5A60S2的串口通讯需满足数据传送和对STC12C5A60S2的ISP编程两个需求,其电路如图4所示。由于STC12C5A60S2的串口通讯和ISP编程均由6号、7号引脚(RXD和TXD)完成,而且所选用CC2530与STC12C5A60S2均工作在3.3 V电平,所以可将二者串口的RXD和TXD交叉连接实现串口通讯。加入K1、K2可用于选择与STC12C5A60S2通讯的对象(CC2530或PC)。由于STC12C5A60S2 ISP编程需冷启动[4],因此设计了Q1、C6、C7、R4等构成的开关电路,在ISP下载时由CC2530的P1.5控制晶体管Q1先截止后导通,从而冷启动STC12C5A60S2。

图4 CC2530与STC12C5A60S2的串口通讯电路

3 软件设计与实现

3.1传输控制协议设计

从图1可知,上位机(PC)可以通过无线及USB两种方式控制舵机运行。以无线控制方式为例,指令传输需经过PC-CC2530协调器间的串口、CC2530协调器-CC2530终端的空中接口、CC2530终端-STC12C5A60S2间的串口等3个接口,为了确保可靠传输及满足控制、远程ISP下载需要,需约定3个接口间的通讯协议,才能确保正确收发数据。

PC-CC2530协调器间的串口需传输无线网络管理、传感参数、舵机控制、ISP下载4类数据流,帧结构如表1所示。其中,目标地址表示协调器下发数据的目标对象,可以告知CC2530协调器是以广播、组播,还是点对点等方式与下级节点通信。消息簇用于区分不同的数据流,其值将直接封装进ZSTACK协议栈的无线发射函数中。帧类型用于区分相同消息簇下不同功能的数据帧。总帧数、本帧序号、本帧长度等字段来满足不同数据量的传输需求。ZigBee无线网络管理主要用于路由发现、拓扑管理、功率控制,它与传感参数、舵机控制等所需传输的数据量均比较小(一般为几十byte),用单帧结构即可完成传输,而ISP下载数据流可达数十kbyte,必须采用多帧结构传输。

表1 PC-CC2530协调器串口通讯帧结构 单位:byte

表2所示为CC2530协调器-CC2530终端的空中接口传输控制帧结构。对于舵机控制及ISP下载数据流,该接口基于透明原则进行传输。无线网络管理及传感参数采集数据流将由CC2530处理并返回响应数据,不再转发。

表2 CC2530协调器-CC2530终端的空中接口通讯帧结构单位:byte

CC2530终端-STC12C5A60S2串口主要用于透明原则传输舵机控制指令、ISP下载数据,以及STC12C5A60S2的有关响应数据,传输帧结构如表3所示。其中,数据字段需经特殊设计,在此用“#舵机号P脉冲宽度T移动时间 ”数据实现对单只舵机的控制[3],将多个该类控制数据依次组合即可控制多个舵机,这样可满足对不同数量舵机的控制,其灵活性较之于采用固定帧长结构的设计更为优化。

表3 CC2530终端-STC12C5A60S2串口通讯帧结构

3.2主要软件实现方法

3.2.1数据传输可靠性控制方法

各接口均需按协议约定的帧结构对所接收数据进行解析,才能确保数据的可靠传输,因此接收数据时的状态控制就是影响传输可靠性的关键。执行状态控制的基本思路是设置状态机,根据当前状态决定是否接收数据及下一步应转移到的状态。以表2所示帧结构为例,利用状态机解析各字段数据的过程如图5所示,首先将状态机置于接收帧头状态,然后将接收的数据与所定义的帧头对比,若是帧头则将接收状态转移到接收帧类型状态,若不是帧头或超时,则继续接收帧头。后续状态的转移及数据接收过程依次类推,待接收完一帧数据后,将接收状态转移到开始,等待接收新的数据帧。

图5 接收状态机转换示意图

3.2.2多路舵机转角与转速控制方法

多路舵机角度控制常用方法是分时控制[1],即根据舵机转角范围将20 ms PWM脉冲周期划分为N个时隙,每个时隙控制1路舵机,这样在20 ms内就可控制20/N(仅取整数部分)路舵机。

分时控制实现简单,但无法真正做到同时控制多路舵机,为此提出一种基于轮询机制的实现方法,其执行流程如图6所示。上位机程序首先将每个舵机运转的角度αi(i = 0~16,αi=-90°~+90°,)按照公式(αi/180×250)转化为脉冲宽度计数值βi;在STC12C5A60S2中,定时器按照可变周期T1进行计数,并将计数值逐一与βi进行比较,根据比较结果控制I/O口输出不同电平,从而输出PWM信号调节转角。基于轮询算法的优势在于既可以通过分时控制方式灵活设置各路舵机的启动时间,又能充分发挥同时隙对多个舵机的控制能力,实现真正意义上的多路舵机转角控制。

舵机的转速受当前位置与目标位置的角度差影响,角度差越大舵机转速越快,反之转速越慢。因此,若将舵机所需转动角度划分为多个小角度递进控制,即将控制舵机所需PWM信号每个周期的脉冲宽度(或占空比)以不同的微量ΔP递增或递减,就可调节舵机的转速[7]。ΔP的取值会影响舵机的工作稳定性和输出力矩,ΔP小时舵机工作稳定但输出力矩趋小,反之输出力矩大但稳定性弱。ΔP的具体取值受表3所示协议的移动时间T、STC12C5A60S2内定时器的定时周期T1、PWM信号周期T2、转角总变化范围Δα影响,建议的计算方法为ΔP =[(2.5-0.5)/180]× [Δα×(T/T2)](其中,ΔP的单位是ms)。编程时可分别为每个舵机绑定当前位置脉宽计数值(φi)、目标位置脉宽计数值(即βi)、脉宽微增量ΔP对应计数值(Δi)等3个变量,并在定时器中断服务程序中按图7所示流程执行。

图6 基于轮询机制的多路PWM信号产生示意图

图7 基于微增量的单路PWM信号产生示意图

3.2.3STC12C5A60S2单片机远程ISP下载实现方法

STC12C5A60S2单片机的Flash中内置有ISP引导程序,CC2530终端节点按照指定的ISP协议启动引导程序并将STC12C5A60S2目标代码下发,即可实现对STC12C5A60S2的下载。但由于通过keil等编译器生成器的目标代码一般为hex文件,CC2530无法像PC一样通过专用工具软件直接下载hex文件到STC12C5A60S2,因此需先将hex文件转换为bin文件,再执行下载操作。为降低CC2530处理的复杂度,转换的工作应交由PC端完成。

由于ISP下载速率快,要通过CC2530无线传输方式将目标代码实时下发并写入STC12C5A60S2很难实现,因此需先由CC2530接收并存储,待收到完整的目标代码后,再执行ISP下载操作。CC2530的片内SRAM仅有8 kbyte,无法满足大于8 kbyte的目标代码下载,因此需用Flash来存储目标代码[8]。受CC2530的Flash分页存储机制、Flash在存储自身系统程序后空间有限、写入到STC12C5A60S2的目标代码地址范围不一定连续等因素影响,必须采用高效的存储算法,才能充分利用CC2530的Flash空间[9]。本系统采用图8所示的存储结构,首先将目标代码分段,然后将每段的长度及入口地址建立索引表,在ISP下载时根据索引表提取目标代码并写入STC12C5A60S2中。在Z-STACK协议栈中,对Flash的读写是通过uint8 osal_nv_read(uint16 id,uint16 offset,uint16 len,void * buf)和uint8 osal_nv_write (uint16 id,uint16 offset,uint16 len,void * buf)两个函数实现,其中的id表示应用程序操作Flash的ID号,其值在0x0201~0x0FFF间[10]。图8中,目标代码起始地址被用作id,目标代码长度被用作len。

图8 目标代码存储结构示意图

CC2530对STC12C5A60S2的ISP下载属于脱机编程,因此需在CC2530上模拟PC对STC12C5A60S2下载的协议流程。本系统采用图9所示方案执行下载操作,CC2530首先以指定波特率连续发送字节流0x7F到STC12C5A60S2,同时利用图4所示电路中的P1.5口冷启动STC12C5A60S2,STC12C5A60S2冷启动后会返回响应并与CC2530同步波特率,然后CC2530以128 byte为单位,将目标代码下载到STC12C5A60S2[9]。

图9 STC12C5A60S2 ISP下载流程

3.2.4CC2530无线群组化控制方法

本系统采用Z-STACK协议栈实现无线群组化控制。Z-STACK协议栈采用了轮询机制实现对多任务的调度,灵活的消息簇处理机制可满足舵机控制中多功能需求。对于控制器上的CC2530终端节点而言,主要需提供舵机控制、ISP下载、节点在线检测、传感参数采集等服务,其运行流程如图10所示。

图10 CC2530终端节点事件处理流程

4 实验分析

为了验证方法的可行性,分别从无线传输、舵机转角及转速控制、ISP远程下载3个方面进行了实验验证。

4.1无线传输性能测试

实验中以1个CC2530协调器和3个CC2530终端节点(舵机控制器)构建最长传输距离不超过20 m的星型网络,并利用串口调试助手展示协调器和终端节点的串口数据,从自组网及数据传输两个方面对无线传输性能进行了测试。

实验中分20次先启动协调器、再启动终端节点和50次先启动3个终端节点、再启动协调器两种情况对自组网性能进行实验,并在每次终端节点入网后各进行了50次广播方式(终端节点处于静态条件下,指令下发周期>3 s)获取终端节点网络参数指令测试实验,测试结果如表1所示。由表1可知,在先启动协调器再启动终端情况下节点全部入网,而先启动终端再启动协调器情况下则无法确保入网,但两个测试实验中无线传输的正确率均达到100%。

表1 自组网与无线传输性能测试结果

4.2舵机转角及转速控制性能测试

实验中通过PC直接驱动舵机控制器对舵机的转角和转速控制性能进行测试,在空载情况下,从示波器输出波形如图11所示(仅测试1路),由图可见I/O口PWM信号波形准确、肉眼观察无毛刺。

图11 PWM测试波形

在负载舵机数量从1~16逐个增加的情况下,舵机转速独立可调、转角在-90°~+90°可调但有一定误差,经分析主要原因有两点:一是受舵机间结构差异影响,二是受STC12C5A60S2定时中断耗时及转速调节脉宽微量ΔP精度影响。

在前两个实验基础上,进一步组建了包含1个协调器和3个控制器,每个控制器带16路负载舵机的机器人无线群组化控制测试系统。经测试,协调器能对3个机器人进行独立或群组控制。

4.3ISP远程下载功能测试

为了测试ISP远程下载的可行性,首先基于STC12C5A60S2编写了一个Code大小为69B的最简程序,实现每隔0.5 s翻转P1口电平状态,然后将其bin文件进行ISP远程下载。在20次测试中,通过示波器观察所有入网控制器的STC12C5A60S2单片机的P1口波形均正常,说明程序均得以更新,ISP下载成功。为进一步测试ISP远程下载能力,采用逐步增大bin文件大小的方式执行远程下载,发现bin文件大于21 kbyte后的下载成功率明显降低。通过对比CC2530终端节点存储bin目标代码时串口输出的数据与bin原始数据,发现ISP不成功的主要原因是PC通过串口下发数据到CC2530协调器时数据帧过长,造成协调器因不能有效接收而丢包,从而导致终端节点接收的数据与原始bin数据有偏差。通过降低PC下发数据的帧长和下发的速率,可明显提高下载成功率。

5 结语

根据微型机器人群组控制需求及舵机控制原理,基于STC12C5A60S2及CC2530单片机设计了一种多通道无线群组控制器,利用STC12C5A60S2同时输出16路独立的PWM信号控制16路模拟舵机,并通过CC2530构建的无线网络实现对多个机器人的群组控制,从而形成了一种适用于操作微型机器人的无线群组化控制器。

参考文献:

[1]霍丽霞,罗卫兵,迟晓鹏.多通道舵机控制器设计[J].现代电子技术,2010,33(21):73-75.

[2]张龙,孟偲,刘颖,等.仿壁虎机器人多路舵机控制器设计[J].微特电机,2010,38(9):54-58.

[3]李杨,任文博,冯晓明,等.基于单?片机的六足机器人多路舵机控制系统设计[J].机械工程师,2013(12):90-91.

[4]STC12C5A60S2系列单片机器件手册[EB/OL].[2013-12- 30].http://www.stcmcu.com.

[5]吴华波,钱春来.基于AT89C2051的多路舵机控制器设计[J].单片机与嵌入式系统应用,2006(8):55-58.

[6]6N137:8-Pin DIP 10 Mbit/s Single-Channel High Speed Logic Gate Output Optocoupler[EB/OL].[2008-07-20].https://www.fairchildsemi.com.

[7]丁俐,余瑾,吴垠,等.基于PIC单片机的仿生机器鱼的舵机控制[J].微计算机信息,2010(14):88-90.

[8]A True System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee Applications[EB/OL].[2014-09-24].http://www.ti.com.cn.

[9]王桂喜,胡平平.STC单片机集成下载器的设计与实现[J].北京机械工业学院学报,2011,(5):75-79.

[10]青岛东合信息技术技术有限公司.ZigBee开发技术及实践[M].西安:西安电子科技大学出版社,2014:229.

曾 妍(1982-),女,汉族,四川广元人,硕士研究生、讲师,现工作于四川信息职业技术学院电子工程系,物联网应用技术专业骨干教师,主要从事嵌入式及无线传感器网络应用研究,zengyan628040@163.com。

A Mechanic Arm and Hand Control System Design Based on Infrared and Color Image Sensors

ZHU Rui1,WU Minjun2,JIN Hongsheng2,TANG Yongming2*
(1.School of Information Science and Engineering,Southeast University,Nanjing 210096,China;
2.School of Electronic Science and Engineering,Southeast University,Nanjing 210096,China)

Abstract:A design of mechanic arm and hand control system is proposed.The hardware system is mainly composed of a Kinect device with infrared and color image sensors,an upper computer on Atom Platform,a steering engine controller,and a set of mechanic arm and hand.Multiple algorisms including image segmentation and recognition,Support Vector Machine(SVM),linear smoothing and joint mapping are applied to enable several instant tracking and simulating modes.The combination of a graphical user interface(GUI)based on C# GUI and a 3D simulating platform based on Java3D are introduced to enhance user experience.The system is featured in its high degree of accuracy,low latency and strong robustness to the environment.It is valuable in practical as well as prospective application.

Key words:sensor; control system; modeling; infrared sensor; mechanic arm and hand; recognition; GUI

doi:EEACC:7210B; 7230G10.3969/j.issn.1005-9490.2015.04.018

收稿日期:2014-11-26修改日期:2014-12-19

中图分类号:TP368.2; TP242.6

文献标识码:A

文章编号:1005-9490(2015)04-0798-07

项目来源:四川省经济和信息化委员会2012年“两化融合”项目(2012XM037)