智能机器人跨专业公选实验_第1页
智能机器人跨专业公选实验_第2页
智能机器人跨专业公选实验_第3页
智能机器人跨专业公选实验_第4页
智能机器人跨专业公选实验_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能机器人跨专业公选实验实验指导书范守文吴献钢袁太文陈畅电子科技大学机械电子工程学院2005年9月机器人自己做,也许你从小有这样的一个梦,在这里,我们让你梦想成真第一篇机器人控制电路基础一、复位电路任何单片机在工作之前都要有个复位的过程,复位是什么意思呢它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5MS的时间就可以了。如何进行复位呢只要在单片机的RST引脚上加上高电平,就可以了,按上面所说,时间不少于5MS。为了达到这个要求,可以用很多种方法,这里提供一种供参考,见图1。这种复位电路的工作原理是通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。二、晶振电路单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图2接上即可。三、机器人驱动芯片AS611图2晶振电路图1复位电路图3机器人驱动芯片AS611图3是机器人驱动芯片AS611与51单片机连接的电路原理图AS611内部包含4通道逻辑驱动电路,其额定工作电流为1A,最大可达15A,VSS电压最小45V,最大可达36V;VS电压最大值也是36V。下表是其使能、输入引脚和输出引脚的逻辑关系(电路按图3连接)ENA(B)IN1(IN3)IN2(IN4)电机运行情况HHL正转HLH反转H同IN2(IN4)同IN1(IN3)快速停止LXX停止四、74LS21四输入与门74LS21四输入与门引脚如图4所示。五、LM324四运放集成电路LM324是四运放集成电路,它采用14脚双列直插塑料封装。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用图5A所示的符号来表示,它有5个引出脚,其中“”、“”为两个信号输入端,“V”、“V”为正、负电源端,“VO”为输出端。两个信号输入端中,VI()为反相输入端,表示运放输出端VO的信号与该输入端的相位相反;VI()为同图474LS21四输入与门引脚图图5LM324四运放的组成与引脚图相输入端,表示运放输出端VO的信号与该输入端的相位相同。LM324的引脚排列见图5B。由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。当去掉运放的反馈电阻时,或者说反馈电阻趋于无穷大时即开环状态,理论上认为运放的开环放大倍数也为无穷大。此时运放便形成一个电压比较器,其输出如不是高电平(V),就是低电平(V或接地)。当正输入端电压高于负输入端电压时,运放输出低电平。六、碰撞开关碰撞开关引脚与尺寸如图6所示。引脚1为信号输出脚,引脚2接地,引脚3接5V。七、红外发射管红外发射管发出的光是不可见的,它发出的峰值波长在900NM左右,属于红外波段,由于一般半导体硅光敏器件的峰值波长在900NM左右,因此可以方便地构筑红外传感系统。智能机器人实验中使用的红外发射管波长为880NM,其电路符号及外形如图7所示。红外发射管的主要优点是体积小、寿命长、功耗小、响应速度快(可以调制到几十兆赫)等,因此在光电控制中被大量采用。其主要缺点是有方向性、易受环境温度影响等。红外发射管工作在正向电压下,其正向特征与普通二极管一样。对它施加几伏正向电压后,就会发出不可见的红外光,光敏元件接收到此红外光后,就会输出相应的信号。由于红外发射管在正向电流下工作,因此发光强度随正向电流的增加而增加,因此调整流过红外发射管的正向电流,便可以调整输出光功率(即发光强度),对应地达到调整有效检测距离的目的。图8红外接收头引脚与尺寸图图6碰撞开关引脚与尺寸图123图7红外发射管外形与电路符号图9红外传感器测障原理八、红外接收头红外接收头引脚与尺寸如图8所示。引脚1为信号输出脚,引脚2接地,引脚3接5V。当接收到红外信号时,其信号输出脚输出为低电平。九、红外传感器测障原理红外传感系统依靠发射并接收由障碍物反射回来的红外光来判断是否有障碍物。如图9所示,红外光以60的散射角向外发射,阴影区域分别是左右两个红外发射管的反射区域,而红外接收模块正好处于左右两个反射区域内,能接收到左右两个红外发射管的反射光,从而可以判定前方、左边、右边有无障碍物。十、机器人控制板的电源机器人控制板的电源部分分两路,一路直接由充电电池提供,主要是提供给电机使用,另一路通过三端稳压芯片LM7805稳压成5伏直流电源提供给单片机系统使用,右边两个电容是5伏电源的滤波电容,电阻和发光二极管组成5伏电源的工作指示电路,只要电源部分正常,发光二极管组就会点亮,我们可以根据这个发光二极管组来判断整个电源部分是否工作正常,左侧的开关是整个机器人控制系统电源的总开关。第二篇机器人控制软件基础一、中断服务程序有关中断的概念什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个两个外部中断,两个计数/定时器中断,一个串行口中断。第二、中断的嵌套与优先级处理设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者图10机器人控制板的电源(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。第三、中断的响应过程当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书)电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、执行中断处理程序。4、中断返回执行完中断指令后,就从中断处返回到主程序,继续执行。究竟单片机是怎么样找到中断程序所在位置。中断请求源1外中断请求源即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P32、P33这两个引脚。在内部的TCON中有四位是与外中断有关的。IT0INT0触发方式控制位,可由软件进和置位和复位,IT00,INT0为低电平触发方式,IT01,INT0为负跳变触发方式。IE0INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。2内部中断请求源TF0定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1与TF0类似。TI、RI串行口发送、接收中断。中断允许寄存器IE在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。EA是总开关,如果它等于0,则所有中断都不允许。ES串行口中断允许ET1定时器1中断允许EX1外中断1中断允许。ET0定时器0中断允许EX0外中断0中断允许。我们也可以用位操作指令SETBEASETBET1SETBEX1来实现它。五个中断源的自然优先级与中断服务入口地址外中断00003H定时器0000BH外中断10013H定时器1001BH串口0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写ORG0000HLJMPSTARTORG0030HSTART这样写的目的,就是为了让出中断源所占用的向量地址。二、按键接口与编程按键是单片机最常用的输入设备,用户可以通过按键向计算机输入指令、地址和数据,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。按键开关的抖动问题组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。在图11中,当按键未被按下时,P10输入为高电平,当按键闭合后,P10输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P10输入端的波形如图12所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。前面我们讲到中断时曾有个问题,就是说按键有时灵,有时不灵,其实就是这个原因,你只按了一次按键,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动。单片机中常用软件法,软件法其实很简单,就是在单片机获得P10口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P10口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P10为高)再延时510个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是消除键抖动的原则。按键编程方法示例(通过按键控制小车前进、后退、左转、右转)ORG0000HAJMPL1图11按键接口电路图12按键的抖动波形ORG0100HL1MOVA,P1JNBACC0,L2JNBACC1,L3JNBACC2,L4JNBACC3,L5MOVA,0H停止MOVP2,AAJMPL1L2ACALLDELY10MSMOVA,P1JBACC0,L1MOVA,27H前进MOVP2,AAJMPL1L3ACALLDELY10MSMOVA,P1JBACC1,L1MOVA,1BH后退MOVP2,AAJMPL1L4ACALLDELY10MSMOVA,P1JBACC2,L1MOVA,17H左转MOVP2,AAJMPL1L5ACALLDELY10MSMOVA,P1JBACC3,L1MOVA,2BH右转MOVP2,AAJMPL1DELY10MSMOVR6,5012M晶振,延时10MSDL1MOVR5,100DL2DJNZR5,DL2DJNZR6,DL1RETEND第三篇机器人机械结构一、机器人中的电机电机在机器人驱动中起着重要的作用。直流电机的作用原理是建立在电与磁的相互转化和相互作用的基础上的。它主要由定子和转子两大部分组成。定子上有励磁绕组,由它产生磁场。转子与机械负载相联,上面安装有电枢绕组,并通过电刷与直流电源联接,电枢绕组上的电压称为电枢电压。电枢中由于电刷的作用,被通以交变的电流,使转子在磁场中连续相对运动,输出物理量转速和转矩。由此,转子便带动机械负载(如智能机器人中的主动轮)运动。图13为直流电机的电流、功率、效率与转速的关系图。T为转矩,N为转速,P为功率。当电机无负载时转速最快,转矩越大转速越小;功率则是随转矩的增大而增大,当功率达到最大值后,功率则是随转矩的增大而减小;电流随转矩的增大而增大;效率则先增大,当达到最大值时又随之减小。直流电机在一定的电枢电压下,转速与转矩成反比。如果改变电压,则转矩/转速线随着电压的升降而升降(如图14)。在智能机器人负载一定时(即转矩一定时),提高电压,即电压由U1到U2,对应的转速为N1和N2,可见,N1DEFINECOUNT0197DEFINECOUNT1100UNSIGNEDCHARBDATAMOTORCTRL/底盘两个电机对应的控制位/SBITIN1_BASEMOTORCTRL0SBITIN2_BASEMOTORCTRL1SBITIN3_BASEMOTORCTRL2SBITIN4_BASEMOTORCTRL3/手臂电机对应的控制位/SBITIN1_ARMMOTORCTRL4SBITIN2_ARMMOTORCTRL5/手爪电机对应的控制位/SBITIN3_HANDMOTORCTRL6SBITIN4_HANDMOTORCTRL7VOIDDELAYLUNSIGNEDCHARCOUNT2SMALLREENTRANTVOIDDELAYMUNSIGNEDCHARCOUNT1SMALLREENTRANTVOIDDELAYSUNSIGNEDCHARCOUNT0SMALLREENTRANTVOIDRUNBITMOTOR1,BITDIR1,BITMOTOR2,BITDIR2,BITMOTOR3,BITDIR3,BITMOTOR4,BITDIR4VOIDSTOPBITMOTOR1,BITMOTOR2,BITMOTOR3,BITMOTOR4MAINDORUN1,0,1,1,0,0,0,0/右转/DELAYL20/2S/RUN1,1,1,0,0,0,0,0/左转/DELAYL20RUN1,0,1,0,0,0,0,0/后退/DELAYL20RUN1,1,1,1,0,0,0,0/前进/DELAYL20STOP1,1,0,0RUN0,0,0,0,1,1,0,0/手臂前进/DELAYL20RUN0,0,0,0,1,0,0,0/手臂后退/DELAYL20STOP0,0,1,0RUN0,0,0,0,0,0,1,1/手爪松开/DELAYL20RUN0,0,0,0,0,0,1,0/手爪夹紧/DELAYL20STOP0,0,0,1WHILE1VOIDDELAYSUNSIGNEDCHARCOUNT0SMALLREENTRANT/短延时函数/COUNT0取值范围0256/延时计算方法COUNT0X5T2T。/T机器周期振荡周期的1/12。/WHILECOUNT0/对应的汇编代码000A150ADEC00AHT000CAF0AMOVR7,00AHT000EEFMOVA,R7T000F70F9JNZ0000AH2T001122RET2T/VOIDDELAYMUNSIGNEDCHARCOUNT1SMALLREENTRANT/中延时函数/COUNT1取值范围0256/延时计算方法COUNT1X11TDELAYSCOUNT02T。/T机器周期振荡周期的1/12。/WHILECOUNT1DELAYSCOUNT0/对应的汇编代码0109150BDEC00BHT010BAF0BMOVR7,00BHT010DEFMOVA,R7T010E6008JZ00118H2T0110750A64MOV00AH,064H2T011312000ALCALL0000AH2T011680F1SJMP00109H2T011822RET2T/VOIDDELAYLUNSIGNEDCHARCOUNT2SMALLREENTRANT/长延时函数/COUNT2取值范围0256/延时计算方法COUNT2X11TDELAYMCOUNT12T。/T机器周期振荡周期的1/12。/WHILECOUNT2DELAYMCOUNT1/对应的汇编代码0119150CDEC00CHT011BAF0CMOVR7,00CHT011DEFMOVA,R7T011E6008JZ00128H2T0120750B32MOV00BH,032H2T0123120109LCALL00109H2T012680F1SJMP00119H2T012822RET2T/VOIDRUNBITMOTOR1,BITDIR1,BITMOTOR2,BITDIR2,BITMOTOR3,BITDIR3,BITMOTOR4,BITDIR4/运行函数/电机选择MOTOR1,MOTOR2,MOTOR3,MOTOR4/为1表示对应的电机被选中进行“运转”操作,为0则表示没有被选中。/运行方向选择DIR1,DIR2,DIR3,DIR4/对应的电机如果被选中,为1表示按照正方向运行,为0表示按反方向运行。/IFMOTOR1/1电机/IFDIR1IN1_BASE0IN2_BASE1ELSEIN1_BASE1IN2_BASE0IFMOTOR2/2电机/IFDIR2/1/IN3_BASE0IN4_BASE1ELSEIN3_BASE1IN4_BASE0IFMOTOR3/3电机/IFDIR3IN1_ARM0IN2_ARM1ELSEIN1_ARM1IN2_ARM0IFMOTOR4/4电机/IFDIR4/1/IN3_HAND0IN4_HAND1ELSEIN3_HAND1IN4_HAND0P2MOTORCTRLRETURNVOIDSTOPBITMOTOR1,BITMOTOR2,BITMOTOR3,BITMOTOR4/停止函数/电机选择MOTOR1,MOTOR2,MOTOR3,MOTOR4/为1表示对应的电机被选中进行“停止”操作,为0则表示没有被选中。/IFMOTOR1IN1_BASEIN2_BASE0IFMOTOR2IN3_BASEIN4_BASE0IFMOTOR3IN1_ARMIN2_ARM0IFMOTOR4IN3_HANDIN4_HAND0P2MOTORCTRLRETURN实验二手控机器人按照图23连接各电子元器件,手控手柄上按钮及接口参考布局如图24所示,将手控手柄与机器人控制板通过手控手柄接口用约15米长的排线连接起来。输入以下的汇编程序,编译后将十六进制代码程序烧写进AT89C51芯片,观察运行结果。通过手控手柄控制机器人小车的前进、后退、左转、右转运动、手臂的前后运动以及手爪的夹持、松开等动图23实验二电路图作。ORG0000HAJMPL1ORG0100HL1MOVA,P1JNBACC0,L2JNBACC1,L3JNBACC2,L4JNBACC3,L5JNBACC4,L6JNBACC5,L7JNBACC6,L8JNBACC7,L9MOVA,0H停止MOVP2,AAJMPL1L2ACALLDELY10MSMOVA,P1JBACC0,L1MOVA,0AH小车前进MOVP2,AAJMPL1L3ACALLDELY10MSMOVA,P1JBACC1,L1MOVA,05H小车后退MOVP2,AAJMPL1L4ACALLDELY10MSMOVA,P1JBACC2,L1MOVA,06H小车左转MOVP2,AAJMPL1L5ACALLDELY10MSMOVA,P1JBACC3,L1MOVA,09H小车右转手控手柄接口小车前进小车后退小车左转小车右转手臂前伸手臂回缩手爪张开手爪闭合图24手控手柄上按钮及接口参考布局图MOVP2,AAJMPL1L6ACALLDELY10MSMOVA,P1JBACC4,L1MOVA,20H手臂前进MOVP2,AAJMPL1L7ACALLDELY10MSMOVA,P1JBACC5,L1MOVA,10H手臂后退MOVP2,AAJMPL1L8ACALLDELY10MSMOVA,P1JBACC6,L1MOVA,80H手爪松开MOVP2,AAJMPL1L9ACALLDELY10MSMOVA,P1JBACC7,L1MOVA,40H手爪夹紧MOVP2,AAJMPL1DELY10MSMOVR6,50延时10MSDL1MOVR5,100DL2DJNZR5,DL2DJNZR6,DL1RETEND以下是用单片机C语言编写的运动控制程序,其运动控制功能与上面的汇编语言程序相同。INCLUDEDEFINECOUNT0197DEFINECOUNT1100UNSIGNEDCHARBDATAMOTORCTRL/底盘两个电机对应的控制位/SBITIN1_BASEMOTORCTRL0SBITIN2_BASEMOTORCTRL1SBITIN3_BASEMOTORCTRL2SBITIN4_BASEMOTORCTRL3/手臂电机对应的控制位/SBITIN1_ARMMOTORCTRL4SBITIN2_ARMMOTORCTRL5/手爪电机对应的控制位/SBITIN3_HANDMOTORCTRL6SBITIN4_HANDMOTORCTRL7UNSIGNEDCHARBDATASW/8个手动按钮对应的位/SBITSW1SW0SBITSW2SW1SBITSW3SW2SBITSW4SW3SBITSW5SW4SBITSW6SW5SBITSW7SW6SBITSW8SW7VOIDDELAYLUNSIGNEDCHARCOUNT2SMALLREENTRANTVOIDDELAYMUNSIGNEDCHARCOUNT1SMALLREENTRANTVOIDDELAYSUNSIGNEDCHARCOUNT0SMALLREENTRANTVOIDRUNBITMOTOR1,BITDIR1,BITMOTOR2,BITDIR2,BITMOTOR3,BITDIR3,BITMOTOR4,BITDIR4VOIDSTOPBITMOTOR1,BITMOTOR2,BITMOTOR3,BITMOTOR4MAINWHILE1L1SWP1IFSW10DELAYM10SWP1IFSW10RUN1,1,1,1,0,0,0,0/前进/GOTOL1IFSW20DELAYM10SWP1IFSW20RUN1,0,1,0,0,0,0,0/后退/GOTOL1IFSW30DELAYM10SWP1IFSW30RUN1,1,1,0,0,0,0,0/左转/GOTOL1IFSW40DELAYM10SWP1IFSW40RUN1,0,1,1,0,0,0,0/右转/GOTOL1IFSW50DELAYM10SWP1IFSW50RUN0,0,0,0,1,1,0,0/手臂前进/GOTOL1IFSW60DELAYM10SWP1IFSW60RUN0,0,0,0,1,0,0,0/手臂后退/GOTOL1IFSW70DELAYM10SWP1IFSW70RUN0,0,0,0,0,0,1,1/手爪松开/GOTOL1IFSW80DELAYM10SWP1IFSW80RUN0,0,0,0,0,0,1,0/手爪夹紧/GOTOL1STOP1,1,1,1/ENDOFWHILE/VOIDDELAYSUNSIGNEDCHARCOUNT0SMALLREENTRANT/短延时函数/COUNT0取值范围0256/延时计算方法COUNT0X5T2T。/T机器周期振荡周期的1/12。/WHILECOUNT0/对应的汇编代码000A150ADEC00AHT000CAF0AMOVR7,00AHT000EEFMOVA,R7T000F70F9JNZ0000AH2T001122RET2T/VOIDDELAYMUNSIGNEDCHARCOUNT1SMALLREENTRANT/中延时函数/COUNT1取值范围0256/延时计算方法COUNT1X11TDELAYSCOUNT02T。/T机器周期振荡周期的1/12。/WHILECOUNT1DELAYSCOUNT0/对应的汇编代码0109150BDEC00BHT010BAF0BMOVR7,00BHT010DEFMOVA,R7T010E6008JZ00118H2T0110750A64MOV00AH,064H2T011312000ALCALL0000AH2T011680F1SJMP00109H2T011822RET2T/VOIDRUNBITMOTOR1,BITDIR1,BITMOTOR2,BITDIR2,BITMOTOR3,BITDIR3,BITMOTOR4,BITDIR4/运行函数/电机选择MOTOR1,MOTOR2,MOTOR3,MOTOR4/为1表示对应的电机被选中进行“运转”操作,为0则表示没有被选中。/运行方向选择DIR1,DIR2,DIR3,DIR4/对应的电机如果被选中,为1表示按照正方向运行,为0表示按反方向运行。/IFMOTOR1/1电机/IFDIR1IN1_BASE0IN2_BASE1ELSEIN1_BASE1IN2_BASE0IFMOTOR2/2电机/IFDIR2/1/IN3_BASE0IN4_BASE1ELSEIN3_BASE1IN4_BASE0IFMOTOR3/3电机/IFDIR3IN1_ARM0IN2_ARM1ELSEIN1_ARM1IN2_ARM0IFMOTOR4/4电机/IFDIR4/1/IN3_HAND0IN4_HAND1ELSEIN3_HAND1IN4_HAND0P2MOTORCTRLRETURNVOIDSTOPBITMOTOR1,BITMOTOR2,BITMOTOR3,BITMOTOR4/停止函数/电机选择MOTOR1,MOTOR2,MOTOR3,MOTOR4/为1表示对应的电机被选中进行“停止”操作,为0则表示没有被选中。/IFMOTOR1IN1_BASEIN2_BASE0IFMOTOR2IN3_BASEIN4_BASE0IFMOTOR3IN1_ARMIN2_ARM0IFMOTOR4IN3_HANDIN4_HAND0P2MOTORCTRLRETURN实验三寻线机器人寻线系统是机器人的一种简单视觉,在机器人的运动中起着非常重要的作用,为机器人运动过程中位置的准确性提供了保障。每一套寻线系统由比较电路和光发射接收模块两大部分组成。比较电路主要是将光发射接收板输入的模拟信号经比较器比较后,转换为数字信号,输入到单片机中。光发射接收模块主要功能是完成光的发射、接收和将光信号转换为模拟信号。每一块光发射接收模块就是机器人的一个检测点,一般情况每个机器人需安装多个检测点,以保证机器人在运动过程中有较大的偏向检测能力和纠错能力。本寻线系统采用了基于光敏电阻的寻线方案,该寻线系统的电路图如图25所示。光发射接收板上元件及接口参考布局如图26所示。检测点结构每个检测点由1个高亮度发光二极管LED和一个光敏电阻组成。发光二极管发出的红色光照射到地面上,产生漫反射,反射光照射到光敏电阻后,光敏电阻的阻值随地面反射光的强弱而显著变化。因此,由于地面引导白线上的光强明显大于黑色的光强。通过电路检测出的信号都通过比较器进行处理,通过调整比较器的比较基准电压,可确定检测点是否处于黑线的上方。检测点布局为了扩大机器人的偏差纠错能力,寻线机器人使用了4个检测点,其检测点的布局安排如图27A所示。安装板相对于黑色指示带的中心线成对称分布。中间的两个检测点分布在黑色指示带中间位置,以便使检测点相对于黑线的位置变化较为敏感。其余两侧的两个检测点分布较为分散,主要是为了在机器人转弯或偏差过大时“捕捉”黑线用。以下是汇编语言编写的寻线机器人控制的参考程序,请反复调试以下的寻线运动控制程序,以实现机器人小车沿黑线走如图27B所示的功能。ORG0000HAJMPSTARTORG0003HAJMPINT_0ORG0100HSTARTSETBEX0外中断0允许CLRIT0外中断0低电平有效SETBEA开中断MOVA,P1图25实验三电路图JNBACC0,L3JNBACC1,L4MOVA,06H前进MOVP2,AACALLDELY10MSMOVA,0H停止MOVP2,AACALLDELY10MSAJMPSTARTL3MOVA,0H停止MOVP2,AMOVR7,13延时104秒ACALLDELYMOVA,05H右转MOVP2,AMOVR7,13延时104秒ACALLDELYAJMPSTARTL4MOVA,0H停止MOVP2,AMOVR7,13延时104秒ACALLDELYMOVA,0AH左转MOVMOVP2,AMOVR7,13延时104秒ACALLDELYAJMPSTARTINT_0PUSHACCPUSHPSW检测信号指示用发光二极管电源接口检测信号接口可调电阻LM324发光二极管1光敏电阻1发光二极管2光敏电阻2发光二极管3光敏电阻3发光二极管4光敏电阻4图26光发射接收板上元件及接口参考布局图CLREAMOVA,20H手臂前进MOVP2,AMOVR7,100延时8秒ACALLDELYMOVA,80H手爪松开MOVP2,AMOVR7,50延时4秒ACALLDELYMOVA,40H手爪夹紧MOVP2,AMOVR7,50延时4秒ACALLDELYMOVA,10H手臂后退MOVP2,AMOVR7,100延时8秒ACALLDELYSETBEAPOPPSWPOPACCRETIDELY10MSMOVR6,50DL1MOVR5,100DL2DJNZR5,DL2DJNZR6,DL1RETDELYMOVR6,200延时80MS,总延时由R7控制DL3MOVR5,200DL4DJNZR5,DL4DJNZR6,DL3DJNZR7,DELYRET图27检测点布局图与寻线轨迹图END实验四避障机器人按照图28连接各电子元器件,输入以下的用于测试的汇编程序,编译后将十六进制代码程序烧写进AT89C51芯片,观察运行结果。碰一下碰撞开关看机器人的运动有何不同;按一下红外遥控器看机器人的运动有什么变化。ORG0000HAJMPMAINORG0003HAJMPINT_0ORG0013HAJMPINT_1ORG0100HMAINSETBEX0;外中断0允许SETBEX1;外中断1允许CLRIT0;外中断0低电平有效SETBIT1;外中断1负跳变有效SETBEA;开中断MOVA,09H;小车右转MOVP2,AACALLDELYMOVA,06H;小车左转图28实验四电路图MOVP2,AACALLDELYMOVA,05H;小车后退MOVP2,AACALLDELYMOVA,0AH;小车前进MOVP2,AACALLDELYMOVA,20H;手臂前进MOVP2,AACALLDELYMOVA,10H;手臂后退MOVP2,AACALLDELYMOVA,80H;手爪松开MOVP2,AACALLDELYMOVA,40H;手爪夹紧MOVP2,AACALLDELYMOVA,0H;所有电机停MOVP2,ASETBEALOOPSJMPLOOPINT_0PUSHACCPUSHPSWCLREACPLP20CPLP21CPLP22CPLP23ACALLDELYCPLP20CPLP21CPLP22CPLP23SETBEAPOPPSWPOPACCRETIINT_1PUSHACCPUSHPSWCLREACPLP20CPLP21CPLP22CPLP23ACALLDELYCPLP20CPLP21CPLP22CPLP23SETBEAPOPPSWPOPACCRETIDELYMOVR7,100;12M晶振,延时2秒DLY0MOVR6,100DLY1MOVR5,100DLY2DJNZR5,DLY2DJNZR6,DLY1DJNZR7,DLY0RETEND以下是用单片机C语言编写的运动控制程序,其运动控制功能与上面的汇编语言程序相同。INCLUDEDEFINECOUNT0197DEFINECOUNT1100UNSIGNEDCHARBDATAMOTORCTRL/底盘两个电机MOTOR1,MOTOR2对应的控制位/SBITIN1_BASEMOTORCTRL0/是否需要重新申请空间/SBITIN2_BASEMOTORCTRL1SBITIN3_BASEMOTORCTRL2SBITIN4_BASEMOTORCTRL3/手臂电机MOTOR3对应的控制位/SBITIN1_ARMMOTORCTRL4SBITIN2_ARMMOTORCTRL5/手爪电机MOTOR4对应的控制位/SBITIN3_HANDMOTORCTRL6SBITIN4_HANDMOTORCTRL7VOIDDELAYLUNSIGNEDCHARCOUNT2SMALLREENTRANTVOIDDELAYMUNSIGNEDCHARCOUNT1SMALLREENTRANTVOIDDELAYSUNSIGNEDCHARCOUNT0SMALLREENTRANTVOIDRUNBITMOTOR1,BITDIR1,BITMOTOR2,BITDIR2,BITMOTOR3,BITDIR3,BITMOTOR4,BITDIR4VOIDSTOPBITMOTOR1,BITMOTOR2,BITMOTOR3,BITMOTOR4MAINEX01EX11IT00IT11RUN1,0,1,1,0,0,0,0/右转/DELAYL20/2S/RUN1,1,1,0,0,0,0,0/左转/DELAYL20RUN1,0,1,0,0,0,0,0/后退/DELAYL20RUN1,1,1,1,0,0,0,0/前进/DELAYL20STOP1,1,0,0RUN0,0,0,0,1,1,0,0/手臂前进/DELAYL20RUN0,0,0,0,1,0,0,0/手臂后退/DELAYL20STOP0,0,1,0RUN0,0,0,0,0,0,1,1/手爪松开/DELAYL20RUN0,0,0,0,0,0,1,0/手爪夹紧/DELAYL20STOP0,0,0,1EA1WHILE1VOIDINT_1INTERRUPT2/外中断1服务程序由红外开关触发,使两个电机反转。/EA0IN1_BASEIN1_BASEIN2_BASEIN2_BASEIN3_BASEIN3_BASEIN4_BASEIN4_BASEP2MOTORCTRLDELAYL20IN1_BASEIN1_BASEIN2_BASEIN2_BASEIN3_BASEIN3_BASEIN4_BASEIN4_BASEP2MOTORCTRLEA1VOIDINT_0INTERRUPT0/外中断0服务程序由碰撞开关触发,使两个电机反转。/EA0IN1_BASEIN1_BASEIN2_BASEIN2_BASEIN3_BASEIN3_BASEIN4_BASEIN4_BASEP2MOTORCTRLDELAYL20IN1_BASEIN1_BASEIN2_BASEIN2_BASEIN3_BASEIN3_BASEIN4_BASEIN4_BASEP2MOTORCTRLEA1VOIDDELAYSUNSIGNEDCHARCOUNT0SMALL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论