1、避障小车课程设计302020年4月19日文档仅供参考目 录1绪论11.1课题背景11.2课题的目的和意义21.3设计要求21.4主要技术指标22设计方案32.1 总体方案概述32.2 系统硬件电路设计方案32.3 电机模块42.4 超声波模块52.5 整体效果图63设计思路73.1 学习熟悉基本模块驱动73.2 总体方案93.3 电机驱动与测距的结合方法93.4 系统软件流程图103.5存在的问题及解决办法114设计结果及质量评价115原件清单126应用前景127心得体会12附录一 参考文献14附录二 程序代码及注释151 绪论1.1 课题背景机器人是先进制造技术和自动化装备的典型代表,是人造
2、机器的“终极”形式。它涉及到机械、电子、自动控制、计算机、人工智能、传感器、通讯与网络等多个学科和领域,是多种高新技术发展成果的综合集成,因此它的发展与众多学科发展密切相关,代表了高科技发展的前沿。随着电子技术的不断发展人们创造了各式各样的具有感知,决策,行动和交互能力的机器人,自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等多个领域。近年来机器人的智能水平不断提高,而且迅速地改变着人们的生活方式,随着它在人类生活领域中的应用不断扩大,将会给人们的生产生活带来了巨大的影响。在国外机器人的发展有如下趋势。一方面机器人在制造业应用的范围越来越广阔,其标准化、模块
3、化、网络化和智能化的程度越来越高,功能也越来越强,并向着技术和装备成套化的方向发展;另一方面,机器人向着非制造业应用以及微小型方向发展,如表演型机器人,服务机型器人,机器人玩具等。国外研究机构正试图将机器人应用于人类活动的各个领域。在中国机器人主要应用于工业制造领域,中国工业机器人现在的总装机量约为1 0台,其中国产机器人占有量约为 1/3,即40000多台。与世界机器人总装机台数7500万台相比,中国总装机量仅占万分之十六1。对中国这样一个拥有13亿人口的大国来说,仅在机器人数量上就和发达国家有着很明显的差距。因此大力发展中国的机器人事业刻不容缓。智能小车能够理解为机器人的一种特例,它是一种
4、能够经过编程手段完成特定任务的小型化机器人。与普遍意义上的机器人相比智能小车制作成本低廉,电路结构简单,程序调试方便,具有很强的趣味性,为此其深受广大机器人爱好者以及高校学生的喜爱。全国大学生电子设计竞赛每年都设有智能小车类的题目,由此可见国家对高校机器人研究工作的重视程度。1.2 课题的目的和意义本题目设计的是具有自动避障功能的智能小车,其设计思想与一些日常生活迫切需要的机器人(如测距机器人,搜索机器人,管道探伤机器人)类似。由于采用了超声波传感器,它不受光照强弱和能见度的影响,能耗低,灵敏度高,即使在较复杂的环境内也能够工作。智能小车系统的设计采用了模块化的设计方法,电路结构简单,调试方便
5、,有很大的扩展空间,稍加改动便可应用于实际生产生活中,也可作为高校学生以及广大机器人爱好者学习研究使用。1.3 设计要求1小车能够检测到前方障碍物2小车能够自动躲避障碍物3. 小车能够显示距障碍物的距离1.4 主要技术指标工作电压:5V工作电流:30mA典型,50mA最大工作频率:38.5KHz最大探测距离:1.8 m最小探测距离:3 cm输入触发器:上升沿触发回波脉冲:正TTL高电平脉冲宽度下一次测量的延时:20 ms2 设计方案2.1 总体方案概述本小车使用一台AT89S51单片机作为主控芯片,它经过超声波测距来获取小车距离障碍物的距离,而且用数码管实时的显示出来,在小车与障碍物的距离小于
6、安全距离(用软件设定)时,小车会发出“在距您车前方x(数码显示的实时距离)米的地方有一障碍物,请您注意避让”的语音提示,而且拐弯,以避开障碍物,同时会点亮相应侧边的发光二极管作为提示信号。在避开障碍物后,小车会沿直线前进。本系统设计的简易智能小车分为几个模块:单片机控制系统、超声波路面检测系统、前进、转弯控制电机以及方向指示灯系统。它们之间的相互关系如下图1所示。图1 智能小车简要原理框架图2.2 系统硬件电路设计方案系统硬件电路的设计采用了模块化的设计方法,系统硬件电路由超声波避障模块,单片机最小系统模块,显示模块,电源模块,电机驱动以及声光报警模块,电源模块七部分组成,各模块即可组合联调也
7、可单独使用。如图2所示为智能小车硬件设计方框图。电源电路超声波发射电路AT89S51单片机距离显示电路电机驱动电路超声波接收电路图2智能小车硬件设计方框图2.3 电机模块P1_0控制右边的伺服电机,P1_1控制左边的伺服电机,如下图3。图3 电机引脚连接图控制电机运动转速的是高电平持续的时间。 高电平持续时间为1.5ms(零速度点)时,电机静止(标定以后),如图4。图4 电机转速为零的控制信号时序图注:标定方法:经过发送一个校准信号到伺服电机,连续旋转伺服电机的零位信号为1.5ms。如果电机还没有进行零点标定,如图3所示,用螺丝刀轻轻调节马达上的电位器,直到马达停止转动。图5 伺服电机的标定高
8、电平持续时间为1.3ms时,电机顺时针全速旋转,如图6。图6 1.3ms的控制脉冲序列使电机逆时针全速旋转高电平持续时间1.7ms时,电机逆时针速旋转,如图7。图7 1.7ms的控制脉冲序列使电机顺时针全速旋转高电平持续时间越靠近零速度点,速度越小,远离零点越大速度越大。经过控制脉冲序列,能够实现小车的加速、减速、原地转弯、绕轴旋转、左转、右转等一系列的运行动作。2.4 超声波模块VCC接+5V,GND接VSS,SIG接P15,如图8。图8 超声波模块超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生震动产生,在碰到杂质或分界面会产生显著反射形成反射回波,超声波传感器就是根据超
9、声波在物体界面上反射的反射、散射特性检测物体的存在与否。超声波模块能够提供无接触的测量,从3厘米到1.8米的距离测量,能够用来辨别障碍物。图9 超声波模块时序工作图如图9所示,从SIG管脚输出触发脉冲Tout后,模块自动发射8个40kHz的超声波,紧接着把SIG置高电平,直到收到回声后才把SIG置低,如果超时,则模块自动复位。模块工作频率:38.5KHz,即工作周期约26ms, 而整个模块实现一次测量的时间范围为tout+tholdoff+tin,约为0.8ms到19.3ms。距离distance=time*Cair/2,其中Cair为超声波在空气中的传播速度,由于受空气温度影响,Cair=3
10、31.5+0.6*Tc;SIG的脉冲宽度即为超声波发射和接收的时间差time,范围115us到18.5ms。将数据代入计算出distance的范围恰好在3cm到1.8m,满足技术指标。2.5 整体效果图图10 整体效果图3 设计思路3.1 学习熟悉基本模块驱动(1)实现小车前进、绕轴旋转转等基础运行动作。/*小车前进*/void forward()int j;for(j=0;j20;j+) re=1; delay_nus(1300); re=0; delay_nus( 0); le=1; delay_nus(1700); le=0; delay_nus( 0); /*小车原地右转90度*/vo
11、id right90()int j;for(j=0;j17;j+) re=1; delay_nus(1640); re=0; delay_nus( 0); le=1; delay_nus(1700); le=0; delay_nus( 0); /*小车原地左转90度*/void left90()int j;for(j=0;j17;j+) re=1; delay_nus(1300); re=0; delay_nus( 0); le=1; delay_nus(1360); le=0; delay_nus( 0); /*小车原地转180度*/void right180() int j; for(j=
12、0;j30;j+) re=1; delay_nus(1300); re=0; delay_nus( 0); le=1; delay_nus(1360); le=0; delay_nus( 0); (2)超声波传感器驱动的测距子程序。void getx(unsigned char a) TH0=TL0=0; if(a) Sin=0; Sin=1; delay_nus(10); Sin=0; while(Sin); while(!Sin); TR0=1; while(Sin); TR0=0; LTime=TL0; HTime=TH0; Time=HTime*256+LTime; Dis=Time/
13、(2*29);3.2 总体方案采用状态机模型,定义state=1为前行状态,state=2为左转状态,两状态转换条件为distance满足一定壁障范围,因此测距程序宜嵌入两状态中编写,如图9。另外测距后进行显示,能够嵌入测距程序。图11 整体方案-状态机模型3.3 电机驱动与测距的结合方法考虑到电机是靠高电平驱动的,低电平的时间对于驱动电机是无用的,能够用定时器控制低电平时间,让测距程序插入电机驱动程序的低电平时间(取代延时函数),从而节约了单片机等待时间,使单片机在这段低电平时间内执行完测距程序后能够执行其它程序(在最后扩展显示模块程序时,确实发现了这样做的方便之处)。这里超声波模块实现一次
14、测距的时间范围约为0.8ms到19.3ms,因此不妨设置定时器定时30ms。测距程序插入电机驱动程序的另一好处是可实现小角度动态旋转壁障,而不是旋转固定角度。另外,定时器控制固定的低电平时间有利于小车的稳定运行。因为若不这样(即低电平时间=固定的延时+不确定的测距时间),在壁障距离以外时,小车则会因为障碍物的越来越近而速度越来越快,无法输出稳定的速度。具体时序图如下(这里能体现一个周期的运行):图12 电机驱动与测距结合时序图是否是否初始化驱动电机利用定时器中断每30ms发送一个触发信号收到回波信号计算障碍物距离障碍物距离小于10cm驱动电机转向图13程序流程图3.4 系统软件流程图本设计系统
15、软件采用模块化结构,由主程序定时子程序、电工及控制子程序(前进、原地左转、原地右转)、测距子程序构成。主程序流程图如图13所示。其中:避障中断服务子程序完成对超声波探测器产生的外部中断进行处理,如果超出预定的危险距离就左转进行避障。3.5存在的问题及解决办法程序编写完毕后,小车无法启动,经最终排查认为,小车电机需要先输入多个脉冲来帮助小车启动,我将这段程序称为过渡段。添加过渡段后,拿起小车,轮子能按规定动作运行,但一放到地上,就出现无法运行或运行一小段就停止的现象,这说明电机负载能力有限,应有意识增大电机高电平时间,增加驱动力。另外,四个阶段的衔接过程都出现过轮子突然停止转动的情况,其中在前进
16、与向左转状态切换时最易出现该情况。可能是电机在不同转向和转速的突然变化,外加小车的重量作为负载,导致电机无法正常运行。指导方法是尽量在每个阶段让轮子的速度变化不很明显,平滑过渡。 经过多次调试,修改数据,得到较好的壁障效果。修改数据如表1表1 调试数据表状态state运行阶段过渡段脉冲个数i脉冲高电平时间脉冲间隔时间/ms左轮右轮1:前进过渡段516001400运行段30ms160014002:左转过渡段5014501450运行段30ms14501450注:过渡段脉冲间隔为20ms4 设计结果及质量评价小车在比较平坦的地面运行良好。根据具体实际情况,数据表中的一些数据能够适当修改:左转过渡段脉
17、冲个数和两轮转速共同决定旋转的最小角度(数学公式不予推导)。理论上希望两个过渡段脉冲个数越少越好,这样能够提高小车行进过程中的探测分辨率;可是实际上过渡段脉冲个数减少到一定程度将导致小车难以启动。因此这两点需要根据情况折中考虑。注意每个阶段向下一阶段转换的过程尽量保证车轮转动情况改变不是很大,否则可能导致程序运行过程中轮子突然停止。考虑到仅仅是壁障需要,我将程序仅设置了左转,转角可在小车运行时自行调整,这样避免了右转程序的编写。可是如果遇到了狭窄的道路,由于小车长度尺寸和宽度尺寸的限制,小车大角度左转可能难以进行。因此改进方案就是编写一段小车左右探测而且角度可自行调节的智能程序。最后阶段将调试
18、好的小车从平滑的瓷砖地面换成寻迹赛道地面(泡沫感),在小车状态转换时出现了轮子突然停止现象,可见小车电机高电平时间还要考虑运行的地面条件。5 原件清单序号元件名称元件数量参数1AT89S51单片机U112电源插座J11PWR6V3电阻R1R2210k4晶振Y1111.0592MHz5电机接口P1,P22排针6超声波模块接口P51排针7扬声器接口P41排针6 应用前景本智能小车系统最诱人的前景就是可用于未来的智能汽车上了。当驾驶员因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用。如果汽车偏离车道或距障碍物小于安全距离时,汽车就会发出报警,提醒驾驶员注意,如果驾驶员没有及时作出反应,汽车就会
19、自动减速或停靠于路边。这样的小车还能够用于月球探测等的无人探月车,帮助我们传达月球上更多的信息,让我们更加的了解月球,为将来登月做好充分准备。这样的小车在科学考察探测车上也有广阔的应用前景。在科学考察中,有许多很危险且人们无法涉足的地方,这时,智能科学考察车就能够派上用场,在它上面装上摄像机,代替人们进行许多无法进行的工作。7 心得体会在大学的学习生活中,课程设计是不可缺少的一部分。在课程设计期间能够把在学校学到的专业知识应用到实际当中。在理论与实践相结合的时候,能够更快更好的体会到理论的精髓所在,体会到理论与实践的区别。从而巩固自己所学的知识,增强发现问题、分析问题、解决问题的能力。从而做到
20、理论与实际的融会贯通。课程设计是学生大学学习很重要的实践环节。课程设计是每一个大学毕业生必的必修课,它不但让我们学到了很多在课堂上根本就学不到的知识,还使我们开阔了视野,增长了见识,为我们以后更好把所学的知识运用到实际工作中打下坚实的基础。经过生产课程设计使我更深入地接触专业知识。课程设计对我们来说不是一个陌生的词语,但与以往的认识课程设计不同的是,这次是真正地用自己的双手来将课本上学到的知识付诸于实践,用自己的耳朵去聆听课堂上学不到的东西,用自己的嘴去询问老师不懂的问题。这对于我们即将步入社会的大三学生来说是至关重要、不可或缺的一个环节。经过这次课程设计,经过实践,使我学到了很多实践知识。所
21、谓实践是检验真理的唯一标准,要想把一件事情做好,光是看理论知识是远远不够的,自己动手往往能达到事半功倍的效果,这些往往是我们在学校很少有机会接触,或者很少注意的,但又是十分重要基础的知识。我坚信此次的认识课程设计,所获得的实践经验对我终身有益,在我今后的学习中以至于今后的工作中都将不断的得到验证,我会不断的理解和体会课程设计中所得到的知识,在未来的学习和工作中,利用她们或是学习或是创造,充分展示自我的个人价值和人生价值,为实现自我的理想和光明的前程努力。附录一 参考文献1超声波说明书28015-PING-v1.6,详见 .com2张毅刚、彭喜元、彭宇 单片机原理及应用(第二版) 高等教育出版社
22、 附录二 程序代码及注释#includesbit re = P10;sbit le = P11;sbit Sin = P15;unsigned int Dis;unsigned int Time;unsigned int HTime;unsigned int LTime;/计时器初始化程序void IO_init() EA = 1; /开中断 TMOD&=0xf1; /选择计数器计数方式为1 TMOD|=0x01; TH0=TL0=0;/延迟函数void delay_nus(unsigned int i) i=i/10; while(-i);/小车前进程序void forward()int j
23、;for(j=0;j20;j+) re=1; delay_nus(1300); re=0; delay_nus( 0); le=1; delay_nus(1700); le=0; delay_nus( 0); /小车右转九十度void right90()int j;for(j=0;j17;j+) re=1; delay_nus(1640); re=0; delay_nus( 0); le=1; delay_nus(1700); le=0; delay_nus( 0); /小车左转九十度void left90()int j;for(j=0;j17;j+) re=1; delay_nus(1300); re=0; delay_nus( 0); le=1; delay_nus(1360); le=0; delay_nus( 0); /小车转180度void right180() int j; for(j=0;j=10) forward(); /小于十厘米,则进行小车转弯处理,直至避开障碍物elseleft90();getx(1);if(Dis=10) forward(); elseright180();getx(1);if(Dis=10)forward();else right90();