《智能机器人控制系统的设计毕业设计说明书.doc》由会员分享,可在线阅读,更多相关《智能机器人控制系统的设计毕业设计说明书.doc(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要本设计采用Motorola生产的68HC11单片机,来实现该机器人的硬件仿真设计和实物验证。首先完成了能力风暴智能机器人的自主运行、躲避障碍、智能跟随的仿真设计和实际控制系统设计。随后在Proteus平台上采用68HC11单片机进行了系统的硬件设计,通信模块与68HC11之间的存储设计,编程传感器的仿真驱动程序,并实现避障、智能跟随等功能的模拟;最终,借助能力风暴智能机器人自带的交互式C语言下载软件,将避障、智能跟随等功能从仿真转化到实物,从而完成了整个智能机器人控制系统的设计。 关键词:智能机器人;Proteus仿真;68HC11 56AbstractThis design uses
2、the Motorola 68HC11 MCU production, the hardware design and Simulation of the physical verification of the robot. This design mainly completes the design of simulation design and practical control system for autonomous operation, ability storm robot to avoid obstacles, intelligent follows. And the h
3、ardware design of the system is 68HC11microcontroller on the Proteus platform, completed the design of storage between the communication module and 68HC11, the sensor simulation driver, to achieve the whole process control, simulation, intelligent obstacle avoidance with features such as complete; t
4、hen, with the help of ability storm robot comes with interactive C language download software, the obstacle avoidance, intelligent follow functions from simulation to reality, thus completing the design of the intelligent robot control system.Keywords:Robot;Proteus simulation;68HC11 目 录第一章 绪论11.1课题来
5、源11.2本课题的研究目的及意义11.3 智能小车的现状11.4 小结2第二章 系统方案设计及论证32.1 模块方案比较及论证32.2 电机驱动方案选择52.3 避障模块方案选择62.4 检测模块的设计72.4.1 碰撞传感器72.4.2 红外传感器82.4.3 光敏传感器92.4.4 麦克风92.4.5 光电编码器92.4.6 其他传感器102.5 小结10第三章 机器人硬件电路设计113.1 68HC11A1最小系统113.2 复位及启动方式133.3 检测模块硬件仿真133.3.1 碰撞模块仿真133.3.2 红外避障模块仿真143.4 机器人动作驱动模块163.5 68HC11单片机编
6、译环境173.6 小结19第四章 系统软件设计与调试204.1系统流程图设计204.1.1 避障流程图204.1.2 循迹与智能跟随流程图214.2 驱动程序与编程234.3 按键检测软件设计254.4 程序下载与调试264.5小结26总结27外文资料29外文翻译38致谢46附录148附录256 第一章 绪论1.1课题来源智能机器人是一种自动化的机器,所不同的是这种机器具备一些与人或生物相似的能力,如感知能力、避障能力、判断能力和协同能力,是一种具备高度灵活性的自动化机器。智能机器人是二十一世纪新的热点,也是一个国家整体实力的显示。机器人的发展及普及更是一个国家的科技基础和制造业发展水平的重要
7、体现。近年来,在智能机器人和自动化领域里移动机器人的研究吸引了众多研究者的注意力,其中智能机器人以其结构简单、容易实现仿真功能受到欢迎。在另一方面,智能机器人在移动方向辨别的问题上,具有广阔的运动空间,这更成为它吸引注意力的有利武器,红外避障成为智能机器人所必须具备的模块。在这种背景下,有关智能机器人控制系统的设计课题应运而生。1.2本课题的研究目的及意义“能力风暴”(Ability Storms)机器人由上海广茂达电子信息有限公司开发,外形酷似UFO,是专为个人机器人的需求设计的,专门面向教育的机器人。它是专门为大学进行课程教学、工程训练、机器人竞赛、科技创新以及研究服务开发的新型移动智能机
8、器人。能力风暴个人机器人配有5种十几个传感器,另外还可以根据需要扩展其他传感器,对环境的感知能力很强。感知环境的能力是产生智能行为的前提,因此能力风暴能产生许多智能性行为。能力风暴智能机器人作为革命性的能力培养平台,用于培养个人动手能力、创造能力、综合能力、合作能力和进取精神。能力风暴智能机器人融合了光学、电子、计算机、人工智能等高科技知识,他集辅助教学和娱乐于一身。它具有三方面的特点:l.提供强大的交互式C语言;2.采用模块化结构;3.能力风暴运用开放式接口,达到了硬件的高度开放。基于以上三点可知,能力风暴软硬件开放性很大。这就让使用人员的动手能力在娱乐中得以提高。又由于它是多种高科技的融合
9、,使用人员的综合能力也不容置疑地得以提高 这对于我们而言,正是培养创造力、合作能力、进取精神的绝好机会。1.3 智能小车的现状智能小车发展很快,从智能玩具到其它各行业都有实质成果。其基本可实现智能跟随、避障、检测地面灰度、寻光跟随等基本功能,近年来,随着个人计算机的普及,计算机技术和互联网技术突飞猛进的发展, 这就促进了智能机器人的发展,我国机器人起步于二十世纪七十年代,那是我国机器人的萌芽期,经过长期的研究和发展,已经有了很大进步,但相对于发达国家,还是有很多不足之处,智能机器人以其优越的性能、强大的功能正逐渐被普及应用,将在以后的生活中扮演重要的角色。使用68HC11单片机开发小型智能机器
10、人控制系统,主要的作用是研究单片机开发技术,学习常用传感器的硬件设计和软件驱动,以及前后台控制思想在机器人控制系统中的实现。具体总结来说,主要的研究内容如以下几个方面:(1) 学习掌握摩托罗拉68HC11单片机; (2) 对能力风暴智能机器人的功能进行研究,选择传感器;(3) 分析传感器和机器人行动机构的原理和特点,设计控制思路完成机器人自主行动,可以避障,可以实现一些简单的机器人交互行为;(4) 在Proteus仿真平台里设计硬件电路图,并设计软件,模拟机器人的运行;(5) 将仿真的软件思路移植到“能力风暴”机器人实物平台上,实现真实小型机器人基本避障等功能。1.4 小结本章主要了解了该课题
11、研究的主要内容及意义以及智能小车的发展与现状,对整个设计内容有了初步认知,明确本设计所要做的工作。 第二章 系统方案设计及论证 根据题目的要求,确定如下方案,首先设计出小车的基本模型以及方案,并在车上加装传感器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至控制器中进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。 控制器稳压与低压复位系统扩展部分 检测模块 驱动模块图2.1 能力风暴主体框图2.1 模块方案比较及论证能力风暴智能机器人由检测模块、控制模块以及驱动模块
12、组成。可以选用的控制器有很多,据此,拟定了以下两种控制方案并进行了综合的比较论证,具体如下:方案一:选用一片CPLD作为系统的核心部件,来实现控制与处理的功能。CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度非常快,而智能机器人的行进速度不要求太高,那么对系统处理信息的要求也就不会要求太高,在这一点上,MCU就已经可以胜任了。若采用该方案,必将在控制上遇到许许多多不必要增加的难题。为此,我们不采用该种方案,进而提出了第二种设想。方案二
13、:采用单片机作为整个系统的核心,来实现机器人的控制与需要的性能指标。充分分析该控制系统,其关键在于实现智能小车的自动避障控制,而在这一点上,单片机就显现出来它的优势控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。本设计特点是多开关量输入的复杂控制系统,需要的处理器能够处理很多开关量,根据这些分析,我选定了MC68HC11A1单片机作为本设计的主控装置。 图2.2 最小系统电路图M68HC11A1单片机主要具有如下功能:(1) 无内部RAM,512字节EEPROM,可重定位的256字节RA
14、M;(2) 16位高性能定时系统,8M晶振,定时器频率2MHz,3个输入捕捉,可测量脉冲数量及脉冲周期、宽度和相位等。5个输出比较,可输出PWM信号,可以完成各种定时控制功能,有定时溢出中断功能;(3) 串行通讯接口SCI,智能机器人用于和PC机通信。全双工同步串行外围接口SPI,用于扩展外围芯片和多机通讯,智能机器人将用于其他设备驱动;(4) 复位,时钟监视复位,上电自动复位,外部Reset 复位,系统保护特性:计算机操作正常(COP)监视(Watchdog) ;(5) 特别地,MC68HC11系列具有自动下载功能,可以利用交互C语言(JC)开发高层应用程序,也可开发低层驱动,还能交互调试。
15、在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一MC68HC11A1单片机,能力风暴充分利用MC68HC11A1的全部硬件资源。M68HC11系列单片机的结构基本相同,它有两个主要部分组成:控制单元和执行单元。控制单元有时序发生器、控制存储器和随机控制逻辑组成,能为执行单元提供所有的控制。执行单元包含所有的寄存器、ALU和总线接口。MC68HC11系列采用模块化设计,各种不同型号的单片机可由不同的模块组成 ,MC68HC11A1是其中的代表产品,它速度快、功能强、功耗低、可靠性高、价格低。MC68HC11A1有CPU、片内存储器、定时器系统、串行口、A/D、并行I/O口,中断和复
16、位系统组成。2.2 电机驱动方案选择我们知道,机器人可以做很多动作,这些动作的配合也会产生非常多的效果,电机起着非常关键的作用。我们需要控制电机的因子有:电机的正转、反转以及电机的调速,并且两个电机是独立驱动的。由这个分析我们设计的双电机驱动电路有两个驱动方案:方案一:使用双极型D/A转换芯片单片机使用一个8位并口输出数字量,经D/A转换为-5V到+5V的输出电压,从而驱动电机的正转和反转,以及电机的调速。电压绝对值越大,电机转速越高,反之越小。电机的正反转由输出电压的极性控制。这个方案的优点在于单片机编程简单,只需要在一个8位并口上输出对应的数字量,电机驱动的部分直接交给D/A转换电路,输出
17、0则反转速度最大,输出128电机不转,输出255电机正转速度最大。但这个方案的缺点却是很明显的:首先是需要专用的D/A转换芯片以及相应的外围器件电路,电路复杂,且模拟电路容易受环境的干扰,造成控制精度很差。其次,该方案中,一个电机的驱动电路就要占用一个8位并口,既8个单片机引脚,非常浪费单片机的资源。虽然可以改由串口发送数据再由专用芯片转换为并行数据供D/A使用,但这样又会大大增加硬件电路的成本和复杂度,同时降低稳定性。所以,我们提出下面第二种方案。方案二:使用H桥驱动电路控制电机H桥电机驱动的原理比较容易理解,既使用四个晶体管组成一个电流H桥,电机接中间的桥臂,四个晶体管成对导通,从而在电机
18、上产生相反的电流,控制电机正反转,电机的转速则由晶体管门极的导通时间和关断时间的比值来控制。这种调速控制的方法叫做“脉冲宽度调制”(PWM),电机的转速由PWM波的占空比控制。H桥驱动有专门的驱动芯片,常用的有L298,L293等。直流电机可以直接用L298来驱动,它是一个双H桥驱动芯片。图2.2是一个L298驱动双电机的电路。图2.2 L298驱动双电机的电路L298使用5V电源供电(VCC),电机的驱动电源VS输入范围是5-40V,ENA和ENB分别输入电机1和电机2的驱动PWM信号,IN1,IN2,IN3,IN4为两个电机转动方向的控制。下面以左轮电机示例:ENA=1,IN1=1,IN2
19、=0时,电机正转;ENA=1,IN1=0,IN2=1时,电机反转;ENA=1,IN1=1,IN2=1时,电机急停;ENA=1,IN1=0,IN2=0时,电机不动作;ENA=0时,电机不动作;右轮电机的控制和左轮完全相同,该电路中,D1、D2、D3、D4、D9、D10、D11、D12这八个二极管的作用是防止电机启动和停止时,电机中电枢电感产生的反向电动势烧坏芯片或者烧掉电机。由于PWM控制信号的频率可能比较高,因此这八个二极管一定要选择快速恢复二极管,最好选用电流1A以上的肖特基二极管,这有利于电路的稳定运行。2.3 避障模块方案选择“能力风暴”智能机器人主要功能为避障功能,能力风暴是移动的机器
20、人,为确保机器人行动安全。必须有避障模块来使机器人能够自主运行,不能避障的机器人就不能行动自如,更不用说完成其他的功能,所以,避障模块对机器人来说是非常重要的,根据本设计要求,可设计如下两种方案来完成避障功能。方案一:采用一只红外对管置于机器人前面。这种方案安装简易,也可以检测到障碍物的存在,但难以确定智能机器人在水平方向上是否会与障碍物相撞,也不易让智能机器人做出精确的转向反应,所以不能精确的检测机器人的运动状态。方案二:采用两只红外发射管和一只红外接收模块构成红外传感系统,主要用来检测前方、左前方和右前方的障碍,检测距离为1080cm,这种方案很好的避免了机器人与左右两侧的障碍物碰撞, 也
21、能对智能机器人与障碍物相对距离和方位能作出较为准确的判别和及时反应。但红外接收模块只有在接收到了一定强度的红外光时才能起到质的变化,认为有障碍,所以遇到障碍物太细、红外光强度不够时,不足以产生有障碍的信号。红外传感器电路图如下图所示:图2.3 红外传感器电路图比较两种方案的优缺点,智能小车不要求太高的速度,为了能够让能力风暴机器人更准确的实现避障功能,所以选择第二种方案。2.4 检测模块的设计2.4.1 碰撞传感器碰撞传感器是使能力风暴个人机器人有感知碰撞环上的碰撞信息能力的传感器。在能力风暴个人机器人的左前、右前、左后、右后设置有四个碰撞开关(常开),它们与图2.3 碰撞传感器方位碰撞环共同
22、构成了碰撞传感器。碰撞环与底盘柔性连接,在受力后与底盘产生相对位移,触发固连在底盘上相应的碰撞开关,使之闭合。然后经过控制器来完成相应的动作,它在机器人中占有很重要的地位,通过碰撞传感器来感知周围的环境。我们把来自四周的碰撞分为八个方向。在机器人碰到障碍物时相应方向的行程开关接触,从而产生电平变化信号,由单片机扫描检测到以后判定该方向发生碰撞,然后控制执行模块使机器人转向从而避开障碍物。其碰撞方位图如图2.3所示。2.4.2 红外传感器能力风暴运用了2只红外发射管(970nm)和一只红外接收模块构成红外传感系统 ,主要用来检测前方、左前方和右前方的障碍,检测距离范围为1080cm。用户可以通过
23、调节IRLEFT和IRRIGHT两个电位器来调节左右两个红外的检测距离。主板中的R5为24K电阻,它将红外光发射的调制频率固化在38KHz左右,这是红外接收模块中带通滤波器的中心频率。红外发射管的头部象一个发光二极管,它是两针的;红外接收器的头部是个集成块,它是三针的。红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器、整前电路和输出放大电路,灵敏度很高。有时从红外管侧面和后面漏出的红外光也会被接受模块探测到,在能力风暴个人机器人上,两个红外发射管和一个红外接收器都是先装在套管里再固定在外壳上的,有效的避免了这种情况的发生。用户在自己扩展红外传感器时,如果遇到这种情况
24、,只需用黑胶布把发射管的侧面和后部包住即可,红外传感器是靠发射并接收由障碍物反射回来的红外光来判断是否有障碍。图2.4 红外测障原理示意图在红外线检测避障中,红外光以60度的散角向外发射,碰到障碍物然后反射回来,阴影区域分别是左右两个红外的反射光区域,而红外的接收模块正好处于左右两个反射光区域内,能接收到左右两个红外发射管的反射光,所以判断此时前方有障碍,从而实现避障功能。红外接收模块只是在接收到了一定强度的红外光时才起到质的变化,认为有障碍。所以,当障碍物太细时,能力风暴个人机器人会检测不到;当障碍物是黑色或深色时,会吸收大部分的红外光,而只反射回一小部分,有时会使接收模块接收到的红外光强度
25、不够,不足以产生有障碍的信号。根据采集的数据可以判别是否有反射,只有在初始探测无反射而第二次探测有反射时,左反射管才是有反射的,这样系统才认为左方有障碍。同理,初始探测无反射而第三次探测有反射时,右反射管才是有反射的,右方被认为有障碍。 2.4.3 光敏传感器能力风暴个人机器人上有2只光敏传感器,它可以检测到光线的强弱。光敏传感器其实是一个光敏电阻,它的阻值受照射在它上面的光线强弱的影响。能力风暴个人机器人所用的光敏电阻的阻值在很暗的环境下为几百,室内照度下几,阳光或强光下几十。光敏传感器很灵敏,若需要左右两个光敏传感器对光强的反应非常一致,则把光敏传感器对准照度均匀的白墙进行调节,数字较小的
26、一边,在光敏传感器上贴一小片黑胶布;或者通过软件进行偏差值调整,光敏传感器在能力风暴个人机器人里表现出的光越暗,数值越大,光越强,数字越小是因为:光敏电阻和10K的电阻R8,R10相连后构成分压器。左右两个光敏电阻分别与模拟输入口PE0,PE1相连,在系统中采集的是光敏电阻上的电压值。光暗时,光敏电阻上的电压接近5V,光强时,接近0V,模数转换为8位数字量后的范围为0-255。2.4.4 麦克风 能力风暴个人机器人上的麦克风(microphone)是能够识别声音声强大小的声音传感器,对着microphone发出一些声音,可以看到microphone的值不断变化。它的变化范围是0255。麦克风采
27、集到的信号通过LM386(IC5)进行放大,放大倍数为200(由C13确定),输出信号接至PE2。没有声音时,电压为25V左右,转换为8位二进制数后得到的十进制整数为127左右。当有声音时,LM386的输出电压在2.5V上下波动。PE2测得的电压和2.5 V相减的绝对值越大,则声音越大。如MIC=100=(127-27)与MIC154=(127+27)表示两次采集时的瞬时声强是相同的,只是波动的方向不同。R1,C12构成高频滤波,滤去线路板其他元器件产生的高频噪声。2.4.5 光电编码器 光电编码器是一种能够传递位置信息的传感器,它由光电编码模块及码盘组成。能力风暴个人机器人有2只光电编码器,
28、运用红外发射接收模块。反射器(即码盘)是黑白相间的铝合金制成的圆片,66等分。当码盘随轮子旋转时,黑条和白条交替经过光电编码器,反馈的信号状态不同,即构成一个脉冲。因此360度共产生33个脉冲,每个脉冲的分辨率约为10.91度,轮子直径为65mm,则周长方面的分辨率约为6.19mm。码盘装在轮子的内侧,光电编码器原理上也是靠发射与接收红外光来工作的。能力风暴个人机器人上用的光电编码器芯片集成了发射与接收功能。红外光射在黑色辐条上时没有反射信号,因为红外光大部分已经被黑色辐条吸收;当红外光射在白色辐条上时有反射信号,因为红外光在白辐条上反射强烈。2.4.6 其他传感器1.人体热释片传感器人体热释
29、片传感器对移动的人体热源敏感,加上菲涅耳透镜后可以探测10米外的人体。能力风暴装上1个或几个人体热释片传感器后,你可以让他一看见你,就向你迎过来,让他跟着你走。2.超声传感器超声传感器是机器人测距的专业传感器,测量距离一般为20cm-6m,测量精度为1%,是测量声波发射与收到回波之间的时间差来测量距离的。运用能力风暴本体上带的传感器在房间里找到门不容易,但运用声纳对房间扫描一周后,就能较方便找到房门。3.连续测距红外传感器SHARP公司推出了创新的GP2D02/GP2D12连续测距红外传感器,测量范围为10cm-80cm,参加灭火比赛时,用它来找房间非常好。4.温度传感器想让机器人动态告诉你气
30、温吗?加一个温度传感器是个好方法。能力风暴的魅力在于你能控制所有的资源,直接领悟信息采集与处理的机制,以及如何处理现实情况的复杂性和难以预测性。2.5 小结本章主要完成了系统方案的选择及器件的选型,对系统各模块有了初始的设计。通过查阅相关书籍和相关资料,知道了MC68HC11系列采用模块化设计,各种不同型号的单片机可由不同的模块组成,我选择了MC68HC11A1。这个型号是其中的代表产品,它速度快、功能强、功耗低、可靠性高、价格低。由于程序代码量也不是很大,为了合理完成对系统的控制,我们选择68HC11A1作为主控芯片来完成对系统的设计。 第三章 机器人硬件电路设计能力风暴的轮子一共有四只,两
31、只主动轮,两只从动轮,主动轮带动整个能力风暴机器人运动,从动轮起到平衡和导向的作用,在四只轮子的共同配合下能力风暴机器人能够完成向前直走,向后倒退,左转,右转,原地打转等这些平地上的技术动作,将红外发射器装在能力风暴的左前和右前,红外接受模块装在能力风暴机器人的前面,当检测到有障碍时,控制器会控制平移速度和旋转速度的大小,从而避开障碍。跟随的原理和避障一样,当其检测到有移动的物体时,会跟随上去,没有检测到时,会一直停在原地。主板设计框图如下图所示:稳压与低压复位系统4只碰撞传感器 MC68HC11电机驱动2只红外传感器LCD2只光敏传感器2只光电编码器喇叭驱动1只麦克风ASBUS总线串口通讯图
32、3.1 能力风暴机器人主板结构3.1 68HC11A1最小系统摩托罗拉MC68HC11单片机的最小系统,即单片机要正常工作必须具备的最少外围器件组成的电路,包括电源供给、复位电路、系统时钟电路及其他部分。1.电源68HC11A8使用5V单电源供电,VDD是电源正,VSS是地。单片机内部共有两组电源,VDD和VSS是给单片机内部数字电路供电,AVDD和AVSS是给内部A/D转换电路供电,两部分电源可以单独去耦,这样可以减少模拟电路对数字电路的影响,保证了MCU核心的稳定性同时提高了A/D转换的抗噪声能力。2.复位电路 68HC11A8的复位引脚是RESET,该引脚低电平有效,当该引脚保持低电平8
33、个时钟周期则系统复位,该复位方式称为外部复位。该单片机还有内部复位,内部复位时该引脚自动变为低电平并保持4个时钟周期后变为高电平。另外,由于该单片机内部有EEPROM,为了防止VDD电压过低造成EEPROM中数据丢失,在稳定的系统中应使用低压保护电路,既电源电压过低时在RESET引脚上产生低电平使系统复位,从而防止EEPROM中数据的意外丢失。在本文的电路中由于仿真时电源稳定,从而省略了低压保护电路,直接让RESET保持高电平,从而一直让系统持续运行而不复位。3.外部时钟电路外部时钟输入引脚是XTAL和EXTAL。这两个引脚直接接外部晶体振荡器为系统提供时钟,这里选用8M晶振,从而为系统提供时
34、钟。需要注意的是内部时钟的频率是该晶振频率的四分之一,既2M。系统时钟可以在E管脚上输出。4.中断请求引脚的处理该单片机有两个外部中断引脚,分别为IRQ和XIRQ引脚。IRQ是异步中断请求的输入引脚,通过配置OPTION寄存器中的相应位可以配置成下降沿触发还是电平触发,默认是低电平触发。该中断引脚是可软件屏蔽的。XIRQ是不可屏蔽中断引脚。该引脚的机制是在CPU复位时系统自动将CCR寄存器中的X位置位,此时所有中断被屏蔽,而此后不能通过软件设置来屏蔽这个中断,既这CCR中这个X位不能置位。该中断是电平触发中断,不能配置成下降沿触发。5.模式选择根据前面叙述的该单片机工作模式,对照下表中的MOD
35、A和MODB的电平配置,我们选择单片工作模式,因此MODA接VDD,MODB接地。Vrh和Vrl引脚的处理,这两个引脚分别为单片机内部A/D转换的参考电压和模拟地,这里Vrh接VDD,Vrl接地。本系统根据能力风暴机器人的系统结构,首先选用同系列的摩托罗拉68HC11单片机 ,在Proteus仿真平台里搭建仿真环境,根据各部分需要的功能设计了以下模块:电机驱动模块,避障模块,地面检测模块,用户交互模块。其中,各部分电路和程序均需重新从底层设计。因此本系统设计的重点和难点放在了基于68HC11单片机的底层软件驱动的开发,和最后各模块配合工作的调试上。最终,在Proteus仿真模型里实现电机的正反
36、转,完成机器人行走、转弯、后退功能,然后加入避障模块的检测,完成避障功能;最后加入地面灰度传感器,和前面的模块综合联调,经过不断的参数对比来完成综合的避障和循迹功能。在仿真结束后,在能力风暴机器人上再根据仿真的算法思想来设计具体的操作实物机器人的程序,完成实际机器人的避障和循迹等所有功能。3.2 复位及启动方式计算机有多种复位方式:上电自动复位;外部RESET复位;看门狗复位(软件工作不正常时);时钟监视复位。能力风暴采用前两种复位方式,并且在工作是有4种工作模式可选。初始工作模式的确定是靠在MODA和MODB两条引脚上加高低不同电平而实现的。1.单片工作模式只能是先有了应用程序并写入片子中,
37、才能使之工作在单片方式下。在我们学习和开发单片机时,显然不适合这种工作方式。2.扩展模式单片机提供给外界数据总线和地址总线,允许用户在64K空间上扩展RAM和EPROM,,扩展I/ O。这给用户开发程序带来了极大的方便。这种方式的缺点是扩展地址和数据总线占用了两个8位的I/ O端口,而另外扩展出两个8位并行口并不困难。当开发工作基本完成后,回到单片方式去,将两个并口还给系统,这种工作方式是开发阶段最适用的。3.自引导模式在自引导模式下,单片机加电复位后,可以从串行口向芯片内部的256个字节RAM中装入一段程序,并开始执行这段程序。可以想象,装入的程序不同,单片机能实现很多不同的功能。例如对系统
38、作不同的初始化,然后跳转到不同的ROM中程序起始地址。这种工作方式也是要先有应用程序在ROM中才行,只能等到对68HC11应用娴熟时才能用得巧妙。4.测试模式该模式用于工厂中对产品进行测试,对这种模式暂不考虑。确切地说,工作模式的确定是靠68HC11复位后锁存MODA和MODB端的电平状态完成的,工作模式的切换也可用写寄存器指令在程序中进行。各模式和对用MODEA和MODEB对应电平: 单片模式 (01) 扩展模式 (11) 测试模式 (10) 自引导模式 (00) 3.3 检测模块硬件仿真3.3.1 碰撞模块仿真智能机器人通常用行程开关装在机器人的周围来感知碰撞,在机器人碰到障碍物时相应方向
39、的行程开关接触,从而产生电平变化信号,由单片机扫描检测到以后判定该方向发生碰撞,然后控制执行模块使机器人转向从而避开障碍物。这种方法的优点是电路简单,驱动容易,软件调试和编程也相对简单容易。但是该方法由于检测方法的限制,只能在机器人发生碰撞以后才能检测,不能预先检测到障碍物然后绕行,因此存在很大弊端。碰撞传感器仿真电路图如图3.2所示: 图3.2 碰撞仿真电路图该电路中四个行程开关通过上拉电阻接单片机PE口,单片机PE口是专门的输入口,通过软件不断查询扫描PE口的高低电平就可以判断出行程开关是否按下,按下时为低电平,则判断出该方向碰到障碍了,不按下时为高电平,上拉电阻的作用是在没有碰撞时是单片
40、机输入电平为高 。3.3.2 红外避障模块仿真红外传感器是机器人的感知行为的重要组成部分,红外线一般是指波长在940nm以内的光波,它的的特点是人的肉眼看不见,但是容易被障碍物反射回来。通过一个红外接收管来检测反射回来的红外线强度,就可以判断出机器人前面有没有障碍物。但是做为传感器,红外探头为了减少环境中可见光和其他波长光线干扰,通常要加载波调制成38Khz的调制波,然后再检测。红外避障一般使用940nm波长以内的红外发射探头,通过单片机的IO口将信号波和调制波叠加后经过三极管放大,通过红外发射管发射出去。红外接收管有专门的芯片,可以将接收到的红外强弱转换成电压信号,送入单片机检测。红外壁障相
41、对克服了行程开关壁障的弱点,不需要等机器人碰到障碍物了以后才判断出障碍物的方向,可以在一定距离以内不经碰撞直接检测出障碍物。但是其实现起来相对较复杂,使用元器件多,软件编程要配合硬件来调整,比较复杂。红外传感器的仿真电路图如图3.3所示。 图3.3 红外传感器仿真图在仿真机器人红外传感器的部分时,遇到了仿真平台Proteus里不能模拟红外线被障碍物反射而被红外接收探头接收到的情况。因此在Proteus仿真里使用了模拟红外传感器的折衷办法,即:使用光耦来模拟红外传感器,使用按钮来改变光耦接收信号的值来模拟红外传感器检测到障碍物的电平信号变化,从而模拟出了红外传感器的工作模式。之所以用光耦而不直接
42、用按钮来模拟障碍物的信号,是因为光耦的工作原理也是由光电器件传递电平变化的信号,他们的工作原理基本一致,不同点是红外避障传感器是向外界发射红外线,而光耦的发射和接收是封装在塑料壳内部的。在真实红外传感器的工作机理中,为了减少环境光线对传感器的影响,防止传感器误检测障碍物信号,需要对红外发射管的信号进行调制。这里,能力风暴机器人上采用了最常用的38Khz载波信号调制的方法,让红外发射管发射的红外线和38Khz载波叠加,从而产生38Khz红外线检测信号。在红外接收探头部分,直接使用工作在38Khz的红外接收管,即可输出相应高低电平。既,有38Khz红外线反射回来被接收管接收到,则输出低电平,说明相
43、应方向上有障碍物;若没有38Khz红外线反射回来,输出高电平,则说明相应方向上没有障碍物;若接收到的红外信号不是38Khz,则说明这个信号是环境中光线或者其他信号的干扰,同样输出高电平,说明相应方向上没有障碍物。 红外避障电路是使用光耦模拟红外传感器的电路,电路的工作方式如下:光耦的发射端通过4.7K上拉电阻接5V,光耦输出端通过2K电阻接地,然后将输出端接单片机PA.0、PA.1、PA.2。按键用来模拟机器人相应方向上可检测范围内有障碍物的情况,当按键按下时光耦发射端发射出去的红外光被接收端接收,输出端由光耦的自带与非门输出高电平,说明检测到障碍物,从而完成避障。不难看出,红外避障的控制流程
44、和行程开关避障的控制流程相似,他们的软件编写方法也相似,但是不同点是,行程开关是接触式避障,效果差;红外避障是非接触式避障,效果较好。3.4 机器人动作驱动模块机器人使用的各种传感器是机器人的感觉器官,下面研究机器人的执行器官。能力风暴机器人采用圆形平板机身的设计,他的支撑机构是由两个处于直径位置的主动轮和前后两个万向轮组成的。主动轮不仅承担了机器人的动力,充当“发动机”的角色,而且也完成转向动作。机器人如何转向将在下面讨论,首先介绍能力风暴机器人的底盘结构,如图3.4所示: 图3.4 能力风暴机器人的底盘结构图 机器人的行动是这样控制的:直行:左电机正转,右电机正转,且转速一致;图3.5 总
45、电路仿真图行进中左转:左电机正转,右电机正转,左电机转速小于右电机;行进中右转:左电机正转,右电机正转,左电机转速大于右电机;后退:左电机和右电机均反转;原地180度转弯:左电机正转,右电机反转,或者左电机反转,右电机正转,且两个电机转速一致。以一个电机为圆心;以机器人直径为半径做圆弧转弯:左电机停转,右电机正转或反转,或者右电机停转,左电机正转或反转。Proteus仿真的总电路图如图3.5所示,该电路综合了单片机最小系统、避障行程开关电路、红外传感器电路、电机驱动电路、按键、蜂鸣器、LED指示灯、串口模块。3.5 68HC11单片机编译环境68HC11单片机可以使用的IDE环境不多,这里选择
46、使用ICC11。ICC11集成开发环境是ICC公司面向摩托罗拉68HC系列单片机推出的一款集成开发环境,可以对68HC05到68HC11全系列单片机进行代码的编写、编译、连接、生成烧写用的s19文件。68HC11单片机需要人为分配其ROM地址以供代码存贮、堆栈和中断向量表使用,这里修改include文件夹下的vector .c文件来完成。我们选择C语言开发,使用C语言的好处是可移植性强,程序易读易懂。Vector .c文件中,使用语句“# pragma abs_address:0xffd6”定义中断向量表的地址;然后将函数“void (*interrupt _vectors)(void)”中的
47、相应默认中断向量入口地址 “DUMMY_ENTRY”改为用户需要使用的中断服务程序名称即可。原定义如下:# pragma abs_address:0xffd6void (*interrupt _vectors)(void) DUMMY_ENTRY,/* SCI */DUMMY_ENTRY,/* SPI */DUMMY_ENTRY,/* PAIE */DUMMY_ENTRY,/* PAO */DUMMY_ENTRY,/* TOF */DUMMY_ENTRY,/* TOC5 */DUMMY_ENTRY,/* TOC4 */DUMMY_ENTRY,/* TOC3 */DUMMY_ENTRY,/* TOC2 */DUMMY_ENTRY,/* TOC1 */DUMMY_ENTRY,/* TIC3 */DUMMY_ENTRY,/* TIC2 */DUMMY_ENTRY,/* TIC1 */DUM