手动机器人控制系统设计
2012-11-07孔庆马凤伟周文婷
孔庆 马凤伟 周文婷
济宁职业技术学院机电工程系,山东 济宁 272037
手动机器人控制系统设计
孔庆 马凤伟 周文婷
济宁职业技术学院机电工程系,山东 济宁 272037
手动机器人对于机器人比赛的制胜起着举足轻重的作用,首先提出了手动机器人控制系统设计方案,然后根据控制方案分别进行了硬件、软件的设计,最后总结了设计调试过程中的心得体会。
机器人比赛;手动机器人;控制系统
引言
自2002年开始,中央电视台每年举行一次全国大学生机器人电视大赛(CCTVROBOCON),迄今为止,CCTVROBOCON已经成功举办了十届。每届都有不同的主题,根据比赛要求,每个参赛队要设计1台或多台自动机器人,1台手动机器人。手动机器人将最重要的智能化传感器和决策系统交给了人,在机器人还不能真正眼观六路、耳听八方、反应迅速、身手敏捷的时候,手动机器人不但不能放弃,还应当用于竞赛中急难险重的关键环节,是自动机器人最重要的合作伙伴[1]。
1 手动机器人控制方案
手动机器人的基本组成模块有运动机构、机械手、推进机构以及提升机构。运动机构实现手动机器人前进、后退、左右转向等动作;机械手用来抓取和放置物品;推进机构可使机械手向前或向后运动,用来调节机械手的水平位置;提升机构用来提升机械手或使机械手下降,便于调整机械手的垂直位置。手动机器人控制系统结构如图1所示。
控制器是整个手动机器人的控制核心,它负责所有指令动作的控制和各模块之间的协调。由于手动机器人控制对象较为固定和简单,动作不是很复杂,不需要处理过多的指令,因此可以选用已经非常成熟的工业单片机AT89S52。该单片机存储形式采用冯!诺依曼结构(Von Neumann),程序存储区与数据存储区统一编址,存储结构简单,程序编写量较小,比较容易控制,而且技术相当成熟,可靠性好。
控制键盘用于实现对机器人的行进及动作控制,可以采用游戏手柄改装而成。它的主要功能是产生相应的动作指令,由指令编码器编码之后发送到机器人的控制器,控制器对指令解码后,控制电机完成相应的动作。
图1 手动机器人控制系统结构框图
手柄与手动机器人本体不会距离太远,一般在一两米以内,可以选择比较简单的串行通讯方式。串行通讯操作简单易控并且比较稳定,接口采用航空接插件的形式,连接可靠。也可以采用USB通讯方式,但这种通讯方式需要另加转接口。
手动机器人的动作由电机驱动完成,可以选用直流伺服电机作为动力源。直流伺服电机将控制信号转换成机械轴的转动,对控制信号的变化反应比较快[2]。
2 控制系统硬件设计
2.1 控制器及其监控模块
如前所述,控制器采用AT89S52工业单片机,AT89S52包括P0-P3四个端口,共32位输入输出(I/O)接口。由于手动机器人动作比较简单,单片机本身的I/O口足够用,因此只需要单片机最小系统[3]即可完成控制。为防止在比赛过程中,由于干扰等各种因素出现单片机死机而导致机器人无法正常动作的现象,需外加看门狗电路。复位及电源监控由MAX813芯片来完成如图2所示。
图2 Max813应用电路图
2.2 电源稳压模块
锂电池具有重量轻、放电电压稳定、工作温度范围宽、自放电率低、储存寿命长、无记忆效应及无公害等优点[4],因此适宜用作手动机器人的电源。考虑到比赛中可能会出现电池输出电压波动以及机器人负载变化的现象,为使机器人能稳定地工作,必须保证控制器供电电压的稳定性,可以采用稳压芯片来实现,如图3所示。
图3 电源稳压电路图
2.3 手柄控制电路
手柄与控制器之间通过串行方式通讯,硬件连接如图4所示[5]。图中,ATT用于提供手柄触发信号;CLOCK是时钟信号,用于保持数据同步;COMD表示信号流方向;从主机到手柄,用于传输控制器对手柄的命令;DATA表示信号流方向:从手柄到主机,用于手柄向控制器传送动作指令。
2.4 电机驱动模块
电机的控制主要包括正反转控制以及PWM调速控制,其硬件驱动如图5所示。
直流电机的正反转由M1、M2两个I/O口控制K1和K2两个继电器来实现[6]。当K1公共端接+12V,K2公共端接地时,电机承受正向12V电压,电机正转;当K1公共端接地,K2公共端接+12V时,电机承受反向12V电压,电机反转。行进中的软启动和软停止采用PWM调速实现,即通过给电机发送一个占空比可调的电压,改变电机上的平均电压,即可改变电机的转速。
考虑到电机工作时的反电动势会导致单片机死机,可以在电机两端加瞬态电压抑制器(TVS)吸收反电动势[7]。
图4 手柄与控制器连接图
图5 电机驱动电路图
3 控制系统软件设计
3.1 程序语言选择
常用的51单片机编程语言有两种,一种是汇编语言,一种是C语言。汇编语言是最接近机器码的一种语言,其主要优点是占用资源少、程序执行效率高[8]。但是汇编语言不易移植,它的可读性和可维护性不强。而C语言是一种结构化程序设计语言,具有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制[9]。C51是C语言在51系列单片机上的实现,使用特定的编译器Keil C,C51综合了C语言和汇编语言的优点,因此,采用C51来编写控制程序是一个很好的选择。
3.2 程序设计
为加强程序的可读性及易维护性,采用模块化程序设计,即将手动机器人的各个动作分别编写成子程序供主程序调用。主程序由一个大的循环程序组成,包括手柄与单片机的通讯、判断按键、指令解码及相应的动作输出,程序流程图如图6所示。
图6 主程序流程图
4 结语
通过不断地尝试、不断地改进解决了系统实际调试过程中出现的一些问题,现将软硬件调试过程中的经验总结如下:
(1)在设计电路时,要多查资料,准确把握相关元器件的特性及用法,这样才能正确地选用器件,在检查时也容易找出错误所在。
(2)安装时不同作用的导线用不同的颜色、线号加以区别,导线要整齐,以便于修改。当出现问题时,要充分的利用万用表和示波器来查错。
(3)程序模块化,每个模块编成一个子程序,调试时根据出现的问题锁定到某一个模块,只要修改这个模块就可以了。
[1](日本)森政弘,铃木泰博.机器人竞赛指南[M].北京:科学出版社,2002.
[2]王晓明.电动机的单片机控制[M]. 北京:北京航空航天大学出版社, 2011.
[3]张克明.MCS-51单片机实用教程[M]. 北京:科学出版社,2010.
[4]王民忠. 缔造传奇—机器人大赛揭秘[M].北京:科学出版社,2004年.
[5]刘颖,李晓龙.单片机与PC手柄的通讯[J].电子世界,2003,(1):38~39.
[6]姚四改.Protel 99 SE电子线路设计教程[M].上海:上海交通大学出版社,2003.
[7]刘南平.现代电子设计与制作技术[M]. 北京:电子工业出版社,2003.
[8]李华等.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,2002.
[9]谭浩强.C程序设计[M].北京:清华大学出版社,2000.
A
TP273
10.3969/j.issn.1001-8972.2012.14.055