基于LPC2136的嵌入式实时机器人控制系统设计与应用邱铁,司伟生(大连理工大学软件学院,辽宁大连116621)摘要:本文以支持实时仿真和嵌入式跟踪的32位ARM7处理器LPC2136为控制核心,设计开发了轮式机器人控制系统硬件平台,通过ISP对系统中的FlashROM进行在线编程,采用PWM的方式对用于驱动双轮的直流电动机和用于转向的舵机进行速度和方向控制。在此硬件平台下移植了嵌入式实时操作系统μC/OS-Ⅱ,依据各个控制功能和微控制器的资源结构对任务进行划分,根据传感器反馈信号对机器人实时控制。关键词:ARM;电机驱动;光电检测;μC/OS-II;任务DesignandApplicationofEmbeddedReal-TimeRobot-ControlSystemBasedonLPC2136QiuTie,SiWei-sheng(SchoolofSoftware,DalianUniversityofTechnology,Dalian,116621,China)Abstract:Thispaperdesignsanovelhardwareplatformforthecontrolsystemofthewheeledmobilerobots.Itadoptsthe32-bitARM7processorLPC2136thatsupportsthereal-timesimulationasthecentralcontrolunit.TheFlashROMinthesystemisprogrammedwiththeISP,andthecontrolofthespeedanddirectionoftheDC-motorandhelm-motorisrealizedbyusingthePWM.Theembeddedreal-timeoperatingsystemμC/OS-Ⅱisportedintotheplatform.TasksaredividedaccordingtotheircontrolfunctionsandtheresourceconfigurationoftheMCU.Therobotiscontrolledinreal-timebythefeedbacksignals..Keywords:ARMMotordriverPhotodetectionμC/OS-IITask1.引言轮式移动机器人是机器人研究领域的一项重要内容,它集机械、电子、检测技术与智能控制于一体,是一个典型的智能控制系统。智能机器人比赛集高科技、娱乐、竞技于一体,成为国际上广泛开展的高技术对抗活动。本文以ARM7处理器为控制核心,扩展了应用任务,移植了嵌入式实时操作系统μC/OS-Ⅱ,设计了一套智能机器人控制系统。2.硬件设计根据竞技机器人的功能要求进行总体设计,将各个功能进行模块化,控制系统硬件框图如图1所示。中央处理器采用微控制器结构,可以通过ISP(In-SystemProgramming)在线编程,控制外围设备协调运行。舵机控制机器人的运动方向,电动机采用输出轴配有光电编码器的小型直流电机作为驱动电机,驱动车轮旋转。电磁铁作为机械手夹紧的执行元件。设置了两路超声波传感器、八路光电检测输入和八路开关量检测的接口。整个机器人的运行状态和运行参数通过LCD动态显示。图1控制系统硬件框图2.1微控制器的选型机器人要实现的动作和功能较多,需要多个传感器对外界进行检测,实时控制机器人的位置、动作和运行状态。系统中的所有任务最终都挂在实时操作系统μC/OS-Ⅱ上运行,因此不仅要考虑微控制器的内部资源,还要看其可移植性和可扩展性。LPC2136[1]是Phlips公司生产的32位ARM7TDMI-S微处理器,嵌入256KB高速Flash存储器。采用3级流水线技术,取指、译码和执行同时进行,能够并行处理指令,提高CPU运行速度。由于具有非常小的尺寸和极低的功耗,抗干扰能力强,适用于各种工业控制。2个32位定时计数器、6路PWM输出和47个通用I/O口,使它特别适用于对环境要求较低的工业控制和小型智能机器人系统。因此选用LPC2136为主控制器,设计结构简单、性能稳定的智能机器人控制系统。2.2ISPFlash编程下载VCC16V+2GND15T1out14R1IN13T2out7R2IN8C1+1C1-3C2+4C2-5T1IN11R1out12V-6T2IN10R2out9IC1MAX3232C1104VDD3.3C2104162738495COM1UART0C3104C4104RxDP0.1TxDP0.0图2ISP载器接口2136内部有256KB高速Flash,可以用来存储控制程序,与计算机串之间的通讯接口如图2所示。IC1为电平转换器MAX3232芯片,其内部有一个电源电压变换器,可以将计算机的电平转换为标准TTL电平,实现计算机与LPC2136之间通过串行口传输数据,完成对片内Flash程序和数据的存储操作。将编好的机器人控制程序进行编译,调试成功后形成二进制或十六进制代码,通过软件LPC210xISP将代码直接下载到Flash中。2.3电机驱动电路12J101MOTOR1Q102TIP147Q104Q103TIP142Q105C102C105C103C106R105R108R106R109R110R111M1BM1BM1FM1FR1031KR1041KVCCVCC12IC1AM1FBMVCCQ101R102R101VCCM1PIC2COPT04IC2BOPT04IC2AOPT04M1VCCMGNDM1VCCMGNDR107C104C101D101D102D103D104D105FR107图3电机PWM驱动电路根据PWM调速原理设计直流电机驱动电路,如图3所示。为了防止电机起停时驱动电源的变化影响控制系统的稳定性,分别用光偶IC2A、IC2B、IC2C将主控制系统的电源与电机驱动电源隔离。MIP为系统产生的PWM信号,通过光偶和大功率达林顿管Q101将信号放大为电动机所需的驱动电压MVCC。M1FB为电机的方向控制信号,IC1A为高速施密特触发器,控制H型电路桥臂上的Q102、Q104和Q103、Q105的导通和截止,实现电动机的正反转控制。在每个桥臂上,都安装有续流二极管和阻容吸收回路,电机断电时释放绕组中的电流,保护达林顿管。机器人的驱动元件主要是电机和舵机,都可以采用PWM脉宽调制法进行调速与控制。根据脉冲编码器的反馈信号,对机器人的运动状态进行实时控制。直流伺电机的控制原理如图4所示。调节PWM的信号就能够快速调节舵机的转角,从而实现机器人的方向控制。图4直流伺服电机的控制原理2.4光电检测模块设计2.4.1光电检测过程设计光电检测模块,使机器人能够检测地面上的白色引导线。光电检测电路主要包括发射部分和接收部分,其原理如图5所示。发射部分的波形调制采用了频率调制方法。由于发光二极管的响应速度快,其工作频率可达几MHz或十几MHz,而检测系统调制频率在几十至几百KHz的范围之内,能够满足要求。光源驱动主要负责把调制波形放大到足够的功率去驱动光源发光。光源采用红外发光二极管,工作频率较高,适合波形为方波的调制光的发射[2]。图5光电检测过程接收部分采用光敏二极管来接收调制光线,将光信号转变为电信号。这种电信号通常较微弱,需进行滤波和放大后才能进行处理。调制信号的放大采用交流放大的形式,可以将调制光信号与背景光信号分离开来,为信号处理提供了方便。调制信号处理部分对放大后的信号进行识别,判断被检测对象的特性。因此,此模块的本质是将“交流”的、有用的调制光信号从“直流”的、无用的背景光信号中分离出来,从而达到抗干扰的目的。2.4.2光电探头光电探头安装在机器人底盘前部,共设置了5个检测点,其结构如图6所示。图6白色引导线检测探头的结构从理论上讲,检测点越多、越密,识别的准确性与可靠性就越高,但是硬件的开销与软件的复杂程度也相应的增加。采用该寻线系统保证了检测的精确度,又节约了硬件的开销。发光二极管发出的调制光经地面反射到光敏二极管。光敏二极管产生的光电流随反射光的强弱而线性变化。把这种变化检测出来,就可以判断某一个检测点是否在白色引导线的上方,从而判断出机器人和白色引导线的相对位置。2.5传感器接口两路超声波传感器用来控制机器人避开障碍物,并预测机器人相对目的地的距离[3],起导航的作用,与微控制器的捕获和定时管脚相连接。光电编码器用来测量机器人的运动位移和运动速度,与微控制器的计数和捕获管脚相连接。每个动作是否执行完毕,是否超过预定的界限由行程开关或微动开关来检测和发报警信号。3.实时操作系统μCOS-II的移植3.1μCOS-II简介μCOS-II是一个嵌入式实时操作系统内核,包含了任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等基本功能[4]。μCOS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到该任务的堆栈中,然后再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。3.2任务划分根据各个控制功能和微控制器的资源结构对任务进行划分,共划分为7个应用任务,其划分过程如图7所示。图7任务划分过程3.3任务建立与实现μC/OS-Ⅱ建立任务包括定义任务堆栈,设定任务的优先级,初始化本任务要求的系统硬件和具体控制过程的实现四部分,以任务1为例介绍应用任务的建立过程。#defineTASK_STK_SIZE256/*定义任务堆栈的大小*/OS_STKTaskStartStk1[TASK_STK_SIZE-1];/*定义任务栈指针*/OSTaskCreate(Task1,(void*)0,&TaskStartStkA[TASK_STK_SIZE-1],2);/*建立任务1,优先级为2*/voidTask1(void*pdata){/*Task1硬件初始化设置*/for(;;){/*根据、脉冲编码器1、2和传感器的反馈信号对驱动电机1、2进行PWM控制*/OSTimeDly(1);/*延时一个时钟节拍,切换任务*/}}在嵌入式实时操作系统环境下,开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。4.调试运行实验机器人控制系统起动画面如图8所示。在这种状态下μC/OS-Ⅱ正在初始化硬件,包括堆栈空间、各个控制寄存器和外设器件的初始化,并设定当前各个功能部件的初始状态。图8嵌入式机器人控制系统启动在实时机器人系统下,机器人正常启动监视机器人的运行状况,若出现某一动作或5.结论能机器人的控制要求,本文设计开发了基于ARM微处理器机器人控制系统,并在此硬件平台上成功的移植oration.LPC2131/2132/2136/2138UserManualPreliminaryRelease.2004.11.2006.3[M].邵贝贝,等译.北京:北京航空航天大学出版后在比赛场上运行,系统实时功能无效则给出出错信息。正常运行时实时显示机器人在场上的坐标值和动作状态,如图9所示。图9机器人运行状态监视根据智了嵌入式实时操作系统μC/OS-Ⅱ,对各个功能执行元件进行协调控制,为嵌入式系统在机器人控制方面的应用和扩展搭建了良好的技术平台。参考文献:[1]Philipscorp[2]关慧贞,邱铁,叶希贵.基于51型单片机的自动巡线轮式机器人控制系统设计.国外电子元器件[3]罗志增,蒋静坪.机器人感觉与多信息融合北京-机械工业出版社2002.[4]JeanJLabrosse.MicroC/OS2IITheReal2TimeKernelSecondEdition社,2003.