摘 要: 通过对pic16c77单片机特点的分析,给出了机器人灵巧手控制系统的硬件框图,针对几个重要的模块做了详细的介绍,特别是电机驱动模块和pwm信号的产生原理。给出了一个控制算法,经过实验说明了该设计的可靠性。
关键词:多指灵巧手;pic;pwm;单片机
当代机器人研究的领域已经从结构环境下的定点作业中走出来,向非结构环境下的自主 作 业方面发展。而机器人灵巧手相当于安装在机器人臂上的可独立实现精细操作运动的一组机器人,是真正拟人化并能实现灵活操作的机器人手。他对于提高空间机器人的工作能力具有重要意义,并且将来还可以尝试将机器人灵巧手用于战场探雷和排雷、核工业设备的检测和修理等危险作业[1]。在机器人灵巧手控制方面的研究在国内只有少数的科研机构 进行,而且成本较高。在本文寻求采用一种较为合适的单片机来作为实现控制的核心,基于pic单片机的强大功能所以采用pic系列单片机。
1 pic单片机特点
pic系列单片机是美国microchip公司出品的8 b微处理器,但是他的速度与功能却比现在 一些普通8 b的51单片机强很多,因为他采用了risc结构,有别于过去的一般cisc结构,risc结构采用harward双总线结构,将地址总线与数据总线分开,因此数据与地址可以同时传输,提高了运算速度[2]。pic单片机的体积小,功耗低,而且内部集成了多种外围电路,使设计更加方便,无需在单片机的设计中再添加一些外围电路,在控制系统中这一点很重要。本文中采用的pic16c77单片机,他有8 k的程序存贮器;368 b ram;2个pwm口;内部集成了一个5通道的8 b a/d,具有掉电复位功能,这些特点使得硬件的设计非常方便。在机器人灵巧手的控制中对于微小电机的驱动需要pwm信号来驱动,在传统的设计中是利用晶 体管组成的电路来实现的,普通的51系列单片机中必须利用定时器来产生,而在pic单片机中内部包含了2个pwm信号输出端为设计提供了方便。
2 控制系统的整体硬件设计
灵巧手在抓取和操作前,要进行被抓物接触点位置确定、抓取构形分析判断、三指手正逆 解求解、轨迹规划等复杂运算。这需要很长时间。在抓取和操作过程中,要进行电机转速控制、关节位置检测控制、指端力觉检测等,其中有的控制必须同时进行,因此,本文所设计的灵巧手采用图1所示的按层次划分的分级式控制系统。上位机为pc机主要从事主控制作用, 进行抓取轨迹规划,还有对下位机发出操作指令。下位机为3个控制单元与上位机进行多机通讯, 接收指令并对反馈信号进行pid调节, 控制电机转动。每个单片机控制一个手指的运动 。采用该控制体系的优点是控制方案整体思路比较清晰, 控制灵活,达到了设计的要求。
2.1 下位机软件设计
对于单片机在这个系统中的主要作用是接收上位机的指令,控制电机的运转和手指关节的运动以及对反馈的信号进行pid调节将结果送往上位机,并将采集来的信号送往上位机准备下一次指令的接收。主要流程如图2所示。
2.2 串口通信模块
对于串口通信主要是采用异步串行传输模式,数据的传输格式是rs232协议。对于pic单片机来说对于串口的操作主要是对下面几个寄存器的操作:txsta发送状态与控制、rcsta接收状态与控制寄存器、txregusart发送寄存器、rcregusart接收寄存器和spbrg波特率产生寄存器。
2.3 电机驱动模块
灵巧手的运动主要通过关节处的电机的运动来控制。三指灵巧手的每个手指有3个自由度也就说一个手指的运动需要3个电机来驱动。驱动方式采用绳索与滑轮的方式传动,电机选用了瑞士maxon公司生产的remax21直流伺服电机以及与其配套的减速器和编码盘。
电机的驱动需要pwm信号来驱动,利用pic单片机本身带有的pwm信号口,配以功率放大器便 可进行电机的驱动。pwm信号主要是对其内部time2和2个寄存器的设定:一个是存贮pwm 周期的pr2寄存器,一个是存贮工作周期的寄存器ccprxl[3]。pwm信号输出示意图如图3所示。
当time2刚开始工作时,pwm输出端为高电平,此后time2会和pr2,ccprxl两个寄存器比较 ,当time2等于ccprxl中的设定值时引脚输出变为低电平,当time2计数到与pr2中的数相等 时,此时引脚输出变为高电平,time2便会归零重新计数,这就是pwm信号的输出过程。在pwm信号的输出端连接功放电路,采用l298芯片实现单极性可逆驱动,单片机生成的pwm脉宽调制信号直接由l298双h桥pwm驱动器驱动,l298是一种高电压大电流功率放大芯片。驱动电压可达46v,直流电流总和可达4 a,直接采用ttl逻辑电平控制。
2.4 a/d模块
对于信号的采集部分,由于pic单片机内部集成了一个5通道的8 b a/d,因此无需外接a/d ,直接应用即可。内部a/d的使用主要是对adcon0,adcon1,adres三个寄存器的设定。
3 控制算法 <