臧申俊
随着科学技术的高度发展,机器人已经逐步在各行各业得到广泛的应用,比如在未知或危险环境下,多机器人协同完成任务是最好的选择。因此,基于移动机器人的研究逐渐成为当前的一大热点。结合群体智能这个研究方向,设计该自主式机器人,主要目的是设计一群个体功能简单的机器人,为群体智能方向的研究提供硬件平台。本文描述的机器人采用的是luminary 的LM3S1968处理器,机器人之间通过Xbee通信模块进行通信,利用红外传感器感来进行蔽障,达到群体协作共同完成相应的任务。
从功能模块划分,系统由主控板,功能板和电机电源组成。
主控板主要由CPU及其外围电路,以及一些调试用LED灯和按键组成。其电源输入是由功能板上提供的5V电源,稳压芯片用的是LM1117-3.3V。经过电源转换后,电源DP3V3稳定在3.3V,为整个主控板供电[1]。如图1所示。
1.1.1 CPU
主控板所选用的CPU是luminary 的LM3S1968。该CPU使用到的功能模块有:GPIO端口,JTAG接口,定时器模块,通用异步收发器等。其他模块考虑到扩展应用的需要,在主控板上引出了接口,将来的使用者可根据需要进行调整。
图1 主控板
1.1.2 时钟晶振
图2 CPU外部时钟
CPU内部本身有一个12MHz的内部振荡器,但频差较大。因此机器人用的是一个外部的8MHz晶振作时钟源,电路如图2。而图中另一个4.194M的晶振是供休眠模式使用的,在休眠模式中,CPU通过切换成较低频率的时钟来达到节能的目的。
1.1.3 复位电路
CPU的Reset是低电平有效,引脚外接到Reset按键,当按键按下时引脚输入低电平,使CPU复位。初始状态下复位后的CPU内程序被清空。
1.1.4 LED与按键
主控板上的LED灯和按键主要是用来作程序调试用的,如图3和图4所示。LED在相对应的GPIO输出为低电平时点亮,灯D1是电源指示灯,D2是休眠模式指示灯,D3~D6是调试用灯;而按键电路中,按下按键则输出一个低电平,其中Reset是复位键,Wake是休眠模块用到的,KEY1和KEY2是调试用按键。
图3 LED电路
图4 按键电路
1.1.5 接口
在主控板上一共有一个电源接口、三个双排插口和四组排针口。如图1所示。
功能板是主控板的控制信号的执行者,主要包括电源模块、红外测距、电机及驱动、串口等功能块[2]。如图5。
图5 功能板
1.2.1 电源
在功能板上存在着两种供电电压,分别为从电源的稳压输入5V和3.3V,其中3.3V为红外接收管和串行红外接口供电,5V为板上的其他设备供电。
1.2.2 红外测距
图6 红外测距模块电路
如图6所示,在机器人上一共放置了五对测距红外,上图仅代表一对测距红外和4066模拟开关芯片的联接。当前方无障碍物时接收管断开,输出一个高电平,当前方有障碍物时发射管发射的红外光反射回来,接收管导通,输出一个低电平。为了调节发射强度,机器人在每个发射管上都连有一个电位器,可以通过调节电阻值大小来改变发射管的发射强度。
1.2.3 电机
采用四相步进电机,电机的转速可以通过改变控制引脚状态转变的速度来控制。由于驱动电流过小,电机的四个引脚无法用GPIO口直接驱动,选用BA6845FS芯片驱动[3] ,如图7所示。
图7 步进电机驱动电路
1.2.4 串口
图8 UART与MAX232电路图
串口部分留出了两对UART口和一个串行红外通信模块。CPU上的UART引脚需要经过232芯片,从TTL信号转换为RS232信号。串行红外的通信不需要经过232芯片的转换,但需要一个集成的串行红外模块,电子鼠使用的是类似的HSDL-3600串行红外通信芯片,芯片连接与3602相同[4]。在使用时,将两个机器人的红外通信口相对,即可进行串口的通信。
1.2.5 接口
在功能板上有两个插口是与主控板相连接的,JP1对应的是主控板上的插口CONNECTOR, JP2对应的是插口UART1&IRC,以及功能板上还有一类接口是连接外部器件。如图5所示。
在这个部分中,将对这机器人的驱动程序进行说明,包括接口、模块定义和实现等。
我们在驱动文件中,定义了一些常量和结构体控制机器人的运动,为上层功能提供数据接口,还定义了GPIO口的控制信号映射关系,以避免每次需要查找电路图GPIO口连线。
在开始使用驱动程序之前,对CPU的时钟、GPIO、LED灯、红外测距、电机、定时器等各个模块进行了初始化。用来记录电机当前行止状态、转向、总步数,电子鼠X、Y坐标、朝向、行止状态、速度以及五个测距红外的读数值。
通过电机相位控制对电机的相位作记录,根据当前电机转向把相位向前或者向后推进一格。定时器中断服务程序使用了CPU的两个32位定时器Timer0和Timer1,分别对左轮和右轮进行定时驱动。电机转速设置是通过改变相应定时器的置数值,改变定时器触发中断的周期,从而改变电机的转速。
为了实现驱动的透明度,在电机控制之上加一层对机器人运动状态的控制。主要运动状态有左转90度,左转180度,右转90度,右转180度,熄火,前进等。
定时扫描红外测距模块。在系统定时器SysTick的中断服务程序中,驱动打开红外测距模块,对5个红外测距进行逐一扫描读数,将读到的结果保存在结构体变量Telemeter中。
驱动的一个应用例子,通过状态机模型实现机器人从初始点跑到终点,其间避开所遇到的障碍的功能。机器人根据当前位置和目标点位置贪婪地做出决策。如图7所示:
图7 状态转化流程模型图
本文描述了机器人的结构设计,利用其基本功能实现了拼字母这一应用场景,并验证了其性能。目前该设计中还有许多需要改进的地方,如布线、需要对功能板进行升级,将通信模块集成到功能板上,给机器人控制加上反馈模块,该模块可以是指南针模块或车轮转数计数模块,等等。
[1] 刘霞等.电子设计与实践[M] .电子工业出版社,2009.
[2] (美)卡特索利斯著,徐君明,等译.嵌入式硬件设计[M] ..中国电力版社,2004.
[3] 王水平,周培志,张耀进等.PWM 控制与驱动器使用指南及应用电路[M] ..西安电子科技大学出版社,2005.
[4] 海涛,龙军主编.计算机通信技术[M] ..重庆大学出版社,2005.