擂台机器人运动控制系统的设计

擂台机器人运动控制系统的设计

摘要

本文论述了一个以凌阳SPCE061A单片机和国家半导体LMD18200电机驱动芯片为控制核心的擂台机器人运动控制系统的硬件设计及软件开发的过程。首先介绍了擂台机器人在我国的发展现状以及未来的发展趋势,并对南京工业大学机器人武术擂台赛项目竞赛规则加以说明。接着阐述了系统的设计思路并通过介绍所使用的各元件的规格、参数、性能等对选型条件和理由加以说明。之后分别介绍了硬件电路和基于该电路的软件的工作流程和设计思想,主要包括电机的基本控制原理、PWM信号的产生和处理、系统电源的分配设计等。并在附录中附有使用CAD软件(Protel99 SE)绘制的系统原理图和印刷电路板,以及以C语言和汇编语言编写的基本驱动控制程序。

关键词:擂台机器人SPCE061A单片机LMD18200电机驱动芯片PWM控制

The design of a tournament robot’s motion control system

Abstract

This thesis introduces the hardware and software design process of a tournament robot’s motion control system which based on SPCE061A(Sunplus) and LMD18200(National Semiconductor). It introduces the current situation and prospects in future of tournament robot’s development in China, and the rules of robot combat tournament in Nanjing University of Technology. Moreover, it elaborates the system’s design philosophy and introduces the properties of components which are in use to illustrate the reason of choice. In addition it describes the circuit and the software which based on it. Mainly about the basic motor control theory, PWM signal generation and processing, power distribution system design. And in the appendix attached to schematic drawing and PCB drawing of the system as well as the basic motor driving programs in C and assembly language.

Keywords: Tournament robot; MCU SPCE061A; Motor driving chip LMD18200; PWM control;

目录

摘要 ........................................................................................................................ I Abstract ................................................................................................................... II 第一章绪论. (1)

1.1概述 (1)

1.2南京工业大学机器人武术擂台赛项目竞赛规则简介 (1)

1.3主要的任务和目标......................................................................... 错误!未定义书签。第二章擂台机器人运动控制系统的硬件设计 (2)

2.1实现功能 (2)

2.2基本设计思路 (2)

2.2.1擂台机器人的运动方式 (2)

2.2.2对电机的PWM控制 (3)

2.3主板电路设计 (3)

2.3.1适用集成电路的介绍及选型 (3)

2.3.2由LMD18200构成的驱动控制电路设计 (4)

2.3.3基于SPCE061A单片机的配套电路设计 ......................... 错误!未定义书签。

2.4 PCB板设计 .................................................................................... 错误!未定义书签。第三章擂台机器人运动控制系统的软件设计 (6)

3.1 SPCE061A单片机的编程特点 (6)

3.2初始化程序的编写 (6)

3.3电机控制程序的编写..................................................................... 错误!未定义书签。结语 (6)

参考文献 (7)

附录1:主板的电路原理图和PCB图 (8)

附录2:电机的基本驱动程序 (9)

第一章绪论

1.1概述

机器人是一种集从机械、电气和电子工程到计算机、认知和社会科学等各种工程和科学学科于一身的产物,广泛应用于各种工业生产和研究探索等领域。为了提高人们对机器人技术的兴趣并带动相关产业和技术的发展,目前,国际的机器人比赛已经举办多届,并且种类繁多,国内机器人比赛经过起步阶段,发展迅速,规模逐渐开始壮大,各项技术更新很快,运动控制系统、视觉处理系统、智能决策系统都有了较大的飞跃,而擂台机器人比赛综合了传感器检测技术、多信息融合技术、先进运动控制技术,具有极高的应用价值。在规则范围内以各自组装或者自制的自主机器人互相搏击并争取在比赛中获胜的对抗性竞技形式极大的引起了以大学生为主体的青少年的研究热情。比赛的基本规则可以是多种多样的,例如:在指定的擂台上,以模拟人类自由搏击赛的形式,双方机器人互相击打或者推挤,如果一方机器人整体离开擂台区域,则另一方获胜。如果双方均未离开擂台,则在比赛时间结束后,距离擂台中央的擂主区域近的一方获胜。场地也依据不同的比赛类型而有所差别,通常都会有灰度和颜色特征以供机器人定位和决策。要完整文章毕业论文的+扣扣:(149-908-83-24)去掉中间的横线

随着各门学科和技术的继续发展以及人们对于擂台机器人竞赛兴趣的持续上升,可以预见,将有越来越多的爱好者投入到擂台机器人的研究和设计中来,该类竞赛的技术水平将日渐提高,对相关产业以及各学科的发展起到大力推动的作用。

1.2南京工业大学机器人武术擂台赛项目竞赛规则简介

比赛场地(即擂台)大小为长3600mm,宽2400mm,高200mm,外侧为白色赛道用于机器人沿赛道展示,赛道左右两边各有一个白色的十字交叉线作为展示的出发点,赛道上还有。中心区域为擂主区域,一半为正红色,一半为正蓝色;场地周围0.5米处有高400mm、厚10mm的方形白色围栏。比赛开始后,白色围栏内不得有人活动。要完整文章毕业论文的+扣扣:(149-908-83-24)去掉中间的横线

第二章擂台机器人运动控制系统的硬件设计

2.1实现功能

在场外调试和实际比赛中,擂台机器人能够配合传感器传入的信号,在预设程序策略的指引下迅速而流畅的完成前进、后退和转弯等基本动作,启动平滑,刹车灵敏,可以根据实际情况和需要对移动速度进行控制,并且在电源供给充足的情况下能够长时间稳定运作,不出现不受控制的抖动或者行为紊乱现象。

2.2基本设计思路

2.2.1擂台机器人的运动方式

运动机构对于一台能够实现自主移动的机器人是必不可少的,以便使其在所处的环境中为达到其工作目的而自由运动。但是运动有众多不同的可能途径,常见的应用于在地面上工作的机器人的运动方式包括使用各种各样的轮式机构或者带有关节的腿。但其复杂的运动方式给控制系统带来了十分高的要求,而以目前的技术水平要想达到腿式机构要求的足够的平衡度和协调度比较困难,加之擂台机器人运行在平坦的场地内,而轮式运动在平地上运动效率大大高于腿式运动,因此本擂台机器人的运动方式选择轮式运动机构。

擂台机器人运动控制系统的设计

图2-1运动结构的两种方案示意图

方式,需要2个为驱动轮提供动力的电机,以及1个用于控制舵轮角度的舵机。驱动轮用于控制机器人运动的前后方向和运动速度,舵机则控制机器人的运动角度。该方案的关键在于对舵机的精确控制,因此最好能使用直流步进电机作为舵机,控制的复杂程度相对较高,但可以达到量化的更加精确的控制效果。相比较之下,方案2的复杂程度大大降低,

成本也相对更低。仅靠2个驱动电机即可完成各种运动姿态,后部的万向轮仅用于承重和机体平衡,虽然该方案在转弯时的控制精度较为粗糙,需要通过反复的实验以确定各种情况下电机的对应转动方式,但擂台机器人在实际比赛中可供移动的范围相对较大,这意味着其动作拥有很大的裕度,并且考虑到比赛过程的连续性,过分追求对单一动作的精确控制意义并不大。因此综合考虑各种因素后,决定选择方案2作为运动的基本方案。要完整文章毕业论文的+扣扣:(149-908-83-24)去掉中间的横线

2.2.2对电机的PWM控制

脉冲宽度调制(PWM)是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。脉冲宽度调制是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。[1]

2.3主板电路设计

2.3.1适用集成电路的介绍及选型

1.单片机的介绍及选型

擂台机器人的整个硬件系统并不仅仅只包含运动控制部分,还包含负责感知外部情况并将其转化为电信号送给处理单元的传感器部分以及负责和上位机等外部系统进行数据交换的无线通信部分,因此需要使用单片机综合处理各种数据。常用的51系列八位单片机虽然具有外围电路简单、编程难度小、价格低廉等优点,但本身具备的通过内部硬件实现的扩展功能较少,需要编写复杂的程序来实现各项拓展工作,其能力在应付擂台机器人的各种需要时略显紧张。因此本系统选择使用凌阳的SPCE061A十六位单片机作为运算核心,其内核采用凌阳最新推出的μ’nsp十六位微处理器,即μ’nSP TM,具有以下特点:(1)体积小、集成度高、可靠性好且易于扩展:μ’nSP TM 家族把各功能部件模块化的集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可

靠性和抗干扰能力。另外,模块化的结构易于系统扩展,以适应不同用户的需求。

(2)具有较强的中断处理能力:μ’nSP TM家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。

(3)高性能价格比:μ’nSP TM家族片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。另外,μ’nSP TM还提供了能加速数字信号处理的指令:高速的16位×16位乘法运算指令,以及内积(乘加)运算指令,使得μ’nSP TM家庭应用在复杂的数字信号处理时,更加便利,又比专用的DSP芯片廉价。

(4)功能强、效率高的指令集:μ’nSP TM指令集的格式紧凑,执行迅速,并且其指令集提供了对高级语言的支持,这可以大大缩短产品的开发时间。

(5)低功耗、低电压:μ’nSP TM家族采用CMOS制造工艺,并提供了可由软件控制的3种省电模式,大大的降低了其耗电量。另外,μ’nSP TM家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电,这对于其在便携式领域中的应用具有特殊意义[2]。

在一般的实际应用中常用BJT管和MOS管作为开关元件,通过对基极(或栅极)进行数字逻辑控制来得到需要的通断状态。H桥控制电机的正常工作方式有两种,如图2-4所示,当Q1和Q4导通时,电机以某种方向旋转,而当Q3和Q2导通时,电机则向相反的方向旋转。这样可以在单电源的情况下使负载的极性根据需要来回翻转,从而达到对电机转向的控制目的。H桥除了正常工作的两种导通方式以外还存在其它的导通方式,其中同一侧臂的两个开关元件是绝对禁止同时导通的,否则会近似于将电源和地短路,导致开关元件烧坏或击穿报废。而当Q1和Q3(或Q2和Q4)同时导通时,电机两端瞬间的极性变化会产生短暂的与原先极性相反的电势,这将导致电机的转速急剧下降,接着由于失去动力而停止转动,从而达到“刹车”的效果。

经过参阅和对比相关集成电路的技术手册,意法半导体的L298、飞思卡尔半导体的MC33886以及国家半导体的LMD18200从其技术规格和参数上看较为适合用于擂台机器人的运动控制系统。

2.3.2由LMD18200构成的驱动控制电路设计

整个擂台机器人运动控制系统中的动力环节共包括2个驱动电机和1个为“击鼓”和“攻击”等动作提供动力的电机。因此共需要3块电机驱动芯片,LMD18200(T型)的实际外形和引脚如图2-8所示,其1号和11号引脚与10nF的自举电容相连,自举电容常

擂台机器人运动控制系统的设计

图2-8 LMD18200的外形和实际引脚分布

用于提升电路中某部分的电压,用以驱动电压需求高于电源值的元件。单独搭建自举电路的时候通常还要配合一个二极管以防止电流倒灌,自举电路提供的电压就是电路输入的电压加上电容上的电压。由于电机在遭遇外部阻力时所消耗的功率会突然上升,为了保证其工作平稳正常,故需要设置自举电容以提高驱动能力。2号和10号引脚与各自对应电机插针的两端相连,插针再分别与各电机的两个引出端相连,用以根据收到的PWM波形信号来控制电机电源供给的有无。3号引脚和外部的方向信号输入端相连,在本设计中方向信号输入端为SPCE061A的IOA_14、IOA_12和IOA_10,分别控制两个驱动轮以及动作电机的转动方向。4号引脚与外部的刹车控制信号输入端相连,在本设计中刹车控制信号输入端为SPCE061A的IOA_15、IOA_13和IOA_11。5号引脚与外部的PWM波形控制信号输入端相连,在本设计中由于动作电机只有转动和停止两种状态,不需要进行调速,因此对应LMD18200的PWM引脚只需接一个普通的I/O引脚(本设计中的IOA_9),而两个驱动轮所有可能的状态组合中并不存在两边的转动速度不同的状态,所以两边各自对应的LMD18200的PWM引脚可以接在一起接收同样的PWM波形信号,在本设计中均和SPCE061A中能够自动循环产生PWM波形信号的IOB_8相连。6号引脚与电机使用的电源相连,在本设计中由于使用了12V的直流电机,因此需和调压前的由电池提供的12V电压源相连。7号引脚是接地引脚。8号引脚用于外部系统监测LMD18200的内部电流情况,在本设计中并未用到,故悬空。9号引脚用于外部系统监测LMD18200的温度情况,在片内温度超过145?C时输出一个低电平,因为3台电机中的任何一台发生过热时整个系统便无法工作,所以3片LMD18200的9号引脚连接在一起后和SPCE061A的IOB_2号引脚相连。

1.具有电隔离的功能

它的输入、输出信号间完全没有电路的联系,所以输入和输出回路的电子零位可以任意选择。绝缘电阻高达10G~1000G?,击穿电压高达100~25KV,耦合电容小于1pF。

2.信号传输方式

信号传输是单向性的,脉冲、直流信号都可以传输。要完整文章毕业论文的+扣扣:(149-908-83-24)去掉中间的横线

第三章擂台机器人运动控制系统的软件设计

3.1 SPCE061A单片机的编程特点

I/O端口作为将单片机与外部环境联系起来的重要环节,其读写方式对于编写程序来讲是十分重要的。SPCE061A提供了位控制结构的I/O 端口,每一位都可以被单独定义用于输入或输出数据,通常,对某一位的设定包括以下 3 个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。3个端口内每个对应的位组合在一起,形成一个控制字,用来定义相应I/O 口位的输入输出状态和方式。A口和B口的Data、Attribution 和Direction 的设定值均在不同的寄存器里,其组合控制设置表如表3-1所示。但其I/O端3.2初始化程序的编写

根据PCB板上安排的实际连接情况,IOA_0~IOA_3供4个超声波传感器输入数据,IOA_4和IOA_5供2个灰度传感器输入数据,IOA_6闲置(亦当作输入用),IOA_7和IOA_8供2个光敏传感器输入数据,以上9个引脚皆设为“不带唤醒功能的悬浮式输入管脚”,3个参数依次设置为“011”。IOA_15、IOA_13、IOA_11分别用于输出3块LMD18200所需的刹车信号,IOA_14、IOA_12、IOA_10分别用于输出3块LMD18200所需的方向信号,IOA_9用于输出动作电机对应的LMD18200的一分位PWM波形信号,以上7个引脚皆设为“带数据缓存器的输出”,具体输出电平可依实际情况再进行修改,初始化时先设为高电平,3个参数依次设置为“111”。综上所述,控制单元P_IOA_Data(0x7000)应初始化为“0xFFFF”,P_IOA_Dir(0x7002)应初始化为“0x00FF”,P_IOA_Attrib (0x7003)应初始化为“0xFFFF”。

结语

本文详细描述了擂台机器人运动控制系统的一种软硬件设计方案。擂台机器人作为一个集各种工程技术于一身的产物,对其进行研究和设计具有十分重大的科研意义。根据任

务书的要求,在整个毕业设计中,我主要完成了电机驱动电路的选型和搭建,整个擂台机器人系统主电路板的设计和制作,以及配套的供策略程序调用的电机驱动子程序的编写。要完整文章毕业论文的+扣扣:(149-908-83-24)去掉中间的横线

参考文献

[1]百度百科[OL].http://m.wendangku.net/doc/02f5ab0eba0d4a7303763a11.html/view/168039.htm,2008年10月29日.

[2]罗亚非.凌阳16位单片机应用基础[M]. 北京:北京航空航天大学出版社,2005.

[3]孙刚,李永新,李尚荣,陈盛,朱璐,陈浩耀.Robocup小型足球机器人的控制系统研究——Robocup系列研究之一[J].自动化与仪表,2003,(3):33~36.

[4]王为.基于LM629 对足球机器人运动控制的设计[J].武汉工程大学学报,2008,30(1):104~107.

[5]张洪宇,张鹏程,刘春明,宋金泽.基于动力学模型的轮式移动机器人运动控制[J]。兵工自动化,2008,27(11):79~82.

[6]任华,刘国栋.基于模糊PID的RoboCup小型组运动机器人的研究[A].2007中国控制与决策学术年会论文集[C].499~502.

[7]蔡继祖,陈健,黎勉.基于运动控制器的伺服电机同步控制插补算法改进[J].广东工业大学学报,2008,25(3):70~72.

[8]宋立博,李劲松,费燕琼.四轮差动驱动型AGV嵌入式运动控制器设计与研究[J].中国机械工程,2008,19(24):2903~2907.

[9]程智远, 谭宝成.移动机器人运动控制的模糊逻辑系统设计[J].电子元器件应用,2008,10(1):54~59.

[10]曾孟雄,方春娇.运动控制系统的PID参数模糊自整定[J].三峡大学学报(自然科学版).2008,30(4):52~54.

[11]余群明,王会方,张骏,周兵,朱德康.足球机器人运动控制算法研究[J].湖南大学学报(自然科学版),2006,33(6):42~45.

[12]吴洪兵.足球机器人运动控制研究[J].机床与液压,2009,37(1):128~130.

[13]Johann Borenstein and Yoram Koren.MOTION CONTROL ANALYSIS OF A MOBILE ROBOT[J].Transactions of ASME, Journal of Dynamics, Measurement and Control, V ol. 109, No. 2, pp. 73-79.

[14]Igor E. Paromtchik and Uwe M. Nassal.Reactive Motion Control for an Omnidirectional Mobile Robot[C].ECC 95 European Control Conference, Rome, September 5-8 1995. [15]Ken Goldberg and Billy Chen.Collaborative Control of Robot Motion: Robustness to Error[C].IEEE/RSJ International Conference on Robots and Systems, October 2001, Maui, HI.

附录1:主板的电路原理图和PCB图

擂台机器人运动控制系统的设计

擂台机器人运动控制系统的设计

附录2:电机的基本驱动程序

初始化程序:

.PUBLIC _Initiate

_Initiate:.PROC

R1=0x0100;

[P_IOB_Dir]=R1;

[P_IOB_Attrib]=R1;

R1=0x0000;

[P_IOB_Data]=R1;

R1=0x000F;

[P_IOA_Dir]=R1;

[P_IOA_Attrib]=R1;

R1=0x0015;

[P_IOA_Data]=R1;

R1=0x0400;

[P_INT_Ctrl]=R1;

INT OFF;

RETF;

.ENDP

延时程序:.PUBLIC _Delay

_Delay:.PROC

R1=0xEFFF;

[P_TimerB_Data]=R1;

R1=0x0004;

[P_TimerB_Ctrl]=R1;

R1=0x0400;

loop:

R1=0x0001;

[P_Watchdog_Clear]=R1

TEST R1,[P_INT_Ctrl];

JZ loop;

[P_INT_Clear]=R1;

R1=0x0006;

[P_TimerB_Ctrl]=R1;

RETF;

.ENDP

调速程序:

.PUBLIC _PWMGenerate

_PWMGenerate:.PROC

PUSH BP TO [SP];

BP=SP;

R1=[BP+4];

[P_TimerA_Ctrl]=R1;

R2=0xFFFE;

[P_TimerA_Data]=R2;

POP BP FROM [SP];

RETF;

.ENDP

刹车程序:

void Brake1()

{

int drctn,temp;

drctn=*P_IOA_Buffer;

temp=drctn & 0x4000;

temp>>=14;

if(temp==0)

{

temp=drctn | 0x4000;

*P_IOA_Data=temp;

}

else

{

temp=drctn & 0xBFFF;

*P_IOA_Data=temp;

}

Delay();

temp=drctn | 0x8000;

*P_IOA_Data=temp;

status1=1;

}

前进程序:

void Forward1()

{

int temp;

temp=*P_IOA_Buffer;

temp=temp & 0x3FFF;

*P_IOA_Data=temp;

status1=0;

}

后退程序:

void Retreat1()

{

int temp;

temp=*P_IOA_Buffer;

temp=temp & 0x7FFF;

temp=temp | 0x4000;

*P_IOA_Data=temp;

status1=2;

}

相关推荐
相关主题
热门推荐