引言
近年来,随着微机电系统(MEMS)技术的发展和微小型移动机器人应用领域的不断拓展,出现了这样一种需求,即用微型爬壁机器人代替人工进行各种极限作业,如公安消防中使用微型爬壁机器人进行纵横交织;上下连通的大楼通风管道进行灾情现场考察;敌情侦察;或进入空间狭窄的核工业管道群之间进行外管壁的检测和维修等。微型摒弃壁机器人具有广泛的应用前景,在国家自动科学基金和上海市启明星的联合资助下,笔者开发了基于并联腿机构的四足微型爬壁机器人。
1机构简介
本文所设计的微型爬壁机器人(长10cm,宽4cm,高4cm)采用四足对称结构,随机构采用并联机构(也称并行三连杆机构),吸附装置采用仿生高分子粘性材料经切削加工制成的贴性吸盘。每一条腿有三个自由度,分别通过三个微型直流电机配合微型线杠螺母机构直接驱动。图1中,电机1驱动腿机构,使其实现左、右转动;电机2驱动机器人小腿,实现向前、向后迈步;电机3驱动机器人大腿,实现大腿的抬起、放下运动。协调控制四条腿上的12个直流电机,就可以使微型爬壁机器人实现前进、倒退和转弯等各种运动。
2控制系统硬件设计
该微型爬壁机器人采用12个微型电机驱动,4个接触传感器,4个压力传感器,以后还要增加用于壁障的红外传感器和用于采集现场信号的微型摄像头,所以对主控制器的要求较高。设计中,最终选定Philips公司最新开发的基于32位ARM7TDMI-S内核的低轼耗ARM处理器LPC2104作为控制系统主控制器。LPC2104具有以下特性:
*128KB片内Flash程序存储器,带ISP和IAP功能;
*16KB静态RAM;
*向量中断控制器;
*仿真跟踪模块支持实时跟踪;
*标准ARM测试/调试接口,兼容现有工具;
*双UART,其中一带有调制解调器接口;
*高速I2C串行接口,400kb/s;
*SPI串行接口;
*2个定时器分别具有4路捕获/比较通道;
*多达6路输出的PWM单元;
*实时时钟;
*看门狗定时器;
*通用I/O口;
*CPU操作频率可达60MHz;
*两个低功耗模式,空闲和掉电;
*通过外部中断,将处理器从掉电模式中唤醒;
*外设功能可单独使能/禁止实现功耗最优化;
*片内晶振的操作频率范围10~25MHz;
*处内PLL允许CPU可以在超过整个晶振操作频率范围的情况下使用。
微型爬壁机器人控制系统的原理框图如图2所示,选用LPC2104作为嵌入式控制器。为提高系统效率和降低功耗,功放驱动电路采用基于双极性H-桥型脉宽调整方式PWM的集成电路L293D。L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。为了节省LPC2104的I/O口资源,选用2片74LS138和IN2引脚,控制电机的正反转。为了节省LPC2104的I/O资源,选用2片74LS138译码器对I/O口进行扩展,每片分别选用3路I/O作为输入信号和1路I/O作为片选信号,这样就可以将8路I/O口扩展或16路I/O口。如前所述,因为直注电机采用PWM调速,这样每1个电机至少需要1路PWM,12个电机需要12路PWM,而LPC2104只有6路PWM输出,所以选用2片电平锁存器74LS373使12个电机分成2组共用6路PWM信号。
 
接触传感器由外层管和内部超弹性线构成,内外两层通过硅管隔开。当内线和外层接触时,开关关闭。通过这种方法,接触传感器向LPC2104发送信号,借此来控制吸盘的方向。
从压力传感器来模拟信号经A/D转换器转换成数字信号,LPC2104通过压力传感器来的信号来判断吸盘是否安全的吸附在墙壁上。
LPC2104还可以通过串口RS232和上位机进行通信。
3控制系统软件设计
微型爬壁机器人控制系统软件选用嵌入式实时多任务操作系统μC/OS-II。它是一个源代码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSIC写的,移植方便,且运行稳定可靠。目前,它已经在几十种从8位到64位的微处理器、微控制器上实现了成功的移植。下面首先介绍μC/OS-II在LPC2104上的移植过程,然后介绍微型爬壁机器人控制软件的设计。
3.1μC/OS-II在LPC2104上的移植
移植μC/OS-II,主要包括:设置堆栈的增长方面,声明3个宏(开中断、关中断和任务切换),声明10个与编译器相关的数据类型;用C语言编写6个与操作系统相关的函数(任务堆栈初始化函数和5个钩子函数);用汇编语言编写4个与处理器相关的函数。
用汇编语言编写的4个与处理器相关的函数如下:
①OSStartHighRdy()用于在调度中使最高优先级的任务处于就绪态并开始执行;
②OSCtxSw()完成任务级的上下文切换;
③OSIntCtxSw()完成中断级任务切换,其过程与OSCtxSw()类似,只是在执行中断服务子程序后可能使更高优先级的任务处于就绪态;
④OSTickISR()是系统节拍中断服务子程序。
3.1.1OS_CUP.H的移植
μC/OS-II不使用C语言中的short、int、long等数据类型的定义,因为它们与处理器类型有关,隐含着不可移值性,所以代之以移值性强的整数数据类型,这样,既直观又可移值。
在μC/OS-II中,使用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()开中断和关中断来保护临界段代码。ARM处理器核的用户模式和执行Thumb代码时,不能改变处理器的开中断位I。为了兼容各种模式,使用软中断指令SWI使处理器进入管理模式和ARM指令状态,即使用SWI0x02关中断,使用SWI0x03开中断。
ΜC/OS-II使用结构常量OS_STK_GROWTH指定堆栈的增长方式,0表示堆栈从低地址往高地址增长,1表示堆栈从高地址往低地址增长。虽然ARM处理器核对于两种方式支持,但ADS的C语言编译器仅支持一种方式,即从高地址往低地址增长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。以上内容在文件OS_CPU.h中做如下定义。
TypedefunsignedcharBOOLEAN;/*布尔变量*/
TypedefunsignedcharINT8U;/*无符号8位整型变量*/
TypedefsignedcharINT8S;/*有符号8位整型变量*/
TypedefunsignedshortINT16U;/*无符号16位整型变量*/
TypedefsignedshortINT16S;/*有符号16位整型变量*/
TypedefunsignedintINT32U;/*无符号32位整型变量*/
TypedefsignedintINT32S;/*有符号32位整型变量*/
TypedeffloatFP32;/*单精度浮点数(32位长度)*/
TypedefdoubleFP64;/*双精度浮点数(64位长度)*/
TypedefINT32UOS_STK;/*堆栈是32位宽度*/
_swi(0x02)voidOS_ENTER_CRITICAL(void);/*关中断*/
_swi(0x03)voidOS_EXIT_CRITICAL(void);/*开中断*/
#defineOS_STK_GROWTH1/*堆栈由高地址向低地址增长*/
【想第一时间了解安防行业的重磅新闻吗?请立即关注中安网官方微信(微信号:cpscomcn)——安防行业第一人气微信,万千精彩,千万不要错过!!!
网友评论
共有0条评论 点击查看全部>>24小时阅读排行
本周阅读排行