小车避障设计说明书机械专业设计.docx_第1页
小车避障设计说明书机械专业设计.docx_第2页
小车避障设计说明书机械专业设计.docx_第3页
小车避障设计说明书机械专业设计.docx_第4页
小车避障设计说明书机械专业设计.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

机械专业设计设计说明书设计题目: 小车避障 目录绪论2一问题的提出与分析31.1问题的提出31.2问题的分析3二.拼装小车32.1搭建车体32.2安装电机42.3遇到的问题与解决方案4三.焊电路板53.1选择电路板53.2焊接电路元器件5四.编程64.1编写包含电机函数的头文件64.2编写包含电机函数的C文件64.3编写包含电机函数的主程序104.4编写避障判断函数的头文件134.5编写传感器判断程序14五.调试程序165.1步骤165.2遇到的问题与解决方案16六.实验结果17七.总结(感想)18八.致 谢18绪论机器人是先进制造技术和自动化装备的典型代表,是人造机器的“终极”形式。它涉及到机械、电子、自动控制、计算机、人工智能、传感器、通讯与网络等多个学科和领域,是多种高新技术发展成果的综合集成,因此它的发展与众多学科发展密切相关,代表了高科技发展的前沿。 随着电子技术的不断发展人们发明了各式各样的具有感知,决策,行动和交互能力的机器人,自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等多个领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式,随着它在人类生活领域中的应用不断扩大,将会给人们的生产生活带来了巨大的影响。 在国外机器人的发展有如下趋势。一方面机器人在制造业应用的范围越来越广阔,其标准化、模块化、网络化和智能化的程度越来越高,功能也越来越强,并向着技术和装备成套化的方向发展;另一方面,机器人向着非制造业应用以及微小型方向发展,如表演型机器人,服务机型器人,机器人玩具等。国外研究机构正试图将机器人应用于人类活动的各个领域。 在我国机器人主要应用于工业制造领域,我国工业机器人现在的总装机量约为120000台,其中国产机器人占有量约为 1/3,即40000多台。与世界机器人总装机台数7500万台 相比,中国总装机量仅占万分之十六1 。对中国这样一个拥有13亿人口的大国来说,仅在机器人数量上就和发达国家有着很明显的差距。因此大力发展我国的机器人事业刻不容缓。 智能小车可以理解为机器人的一种特例,它是一种能够通过编程手段完成特定任务的小型化机器人。与普遍意义上的机器人相比智能小车制作成本低廉,电路结构简单,程序调试方便,具有很强的趣味性,为此其深受广大机器人爱好者以及高校学生的喜爱。全国大学生电子设计竞赛每年都设有智能小车类的题目,由此可见国家对高校机器人研究工作的重视程度。其实智能车,就是一个机器人,其可以分为三大结构:传感器检测、机械执行、中央处理器。智能车通过感知导引线和障碍物,可以实现避障等功能,且可以通过一套完整的控制策略,改善小车的行驶状况,达到更加稳定的状态。要完成上述的功能设计,传感检测部分可以采用能够感知清晰的图像的摄像头,或者选用人们常用的光电对管传感器来感测路况。而智能小车的机械部分,可以采用四轮车(带有舵机)、或者三轮车(前轮为万向轮),电机则只需使用直流电机即可。对于主控芯片CPU,我们选择简单易用的51单片机或高级复杂额ARM等芯片,通过配合软件编程,可以很好的实现自动寻迹、避障的功能一问题的提出与分析1.1问题的提出 机器人避障是机器人智能控制的一个基本功能。机器人避障可以有不同的方法,这里只介绍一种基本的思路和方法。当机器人前方安装有三个传感器而且探测距离不同时,在前进过程中,远距离传感器先探测到物体后,作出动作,改变运动方向,如果改变方向没有障碍物或运动轨迹可以避开障碍物,则改变一次方向即可完成任务,但当机器人调整角度较小,运动轨迹中,半个身体不能够避开障碍物时,机器人近距离探测传感器还可以控制机器人调整姿态,避开障碍物。1.2问题的分析避障小车是运用AT89S52为核心芯片、以3个光电传感器、以及2个电机为基本构架。通过传感器模块精确测距离远近,将模拟电流信号转化成数字信号,通过改变高低电平,向芯片传送高电平1,表示前方无障碍。遇到障碍时,正前方传感器由1变0,表示前方有障碍,通过芯片驱动电机,右轮正转,左轮反转,车子向右转。当左侧遇到障碍,左侧传感器由1变0,左轮正转,右轮反转,车子向右转。当右侧遇到障碍,右侧传感器由1变0,右轮正转,左轮反转,车子向左转。当三个方向都有障碍,传感器同时从1变成0,两轮停止转动,小车停止。二.拼装小车图 1小车正面图2.1搭建车体我们选择搭建一个四轮车(后轮驱动),因为这种模型是我们在生活中最常见,也常使用的。我们选用了132x180的带小孔的板子作为小车的底盘,然后用金属条搭建小车框架,为了满足设计要求,我们在板子上安装了4个金属条,目的是固定电池,又在电池外围安装4个金属条和一个96x132板子作为小车顶棚,在车的前部搭建一个可以安装的传感器的横杠,后来经过多次试验,为了避免前方传感器在转弯时碰撞,所以改成如图一所示的样子,在完成的基本搭建后,然后我们开始确定光电传感器位置,考虑到种种原因,我们选择在车的两侧安装2个传感器,在车的前部安装1个传感器,如上方图一所示;2.2安装电机然后如图二的样子连接后驱动轮,现在板子上面用螺丝固定一个金属条,这样就可以用金属条上的螺纹连接后驱动轮模板;最后如图三连接前面的万向轮。图 小车后轮驱动安装图 图 小车前轮安装图2.3遇到的问题与解决方案问题:在连接后驱动轮的时候,我们遇到了连接电机正负极的导线断开,导致电机不能正常运转。解决方案:首先我们要用电焊把电机正负极的触点上的塑料熔开,然后用镊子把覆盖在触点上的塑料弄干净,接着将触点与一个小金属丝焊接上,最后将小金属丝与导线焊接上,完成电机导线的修复工作。三.焊电路板3.1选择电路板启诚机器人电气模块主要有四种控制器,分别是MEGA48、MEGA16、MEGA128、89S52,每种控制器控制主板相同,基本输入输出点数相同,但每种控制器的可扩展性各不相同。我们在经过讨论后选择了AT89S52单片机,因为AT89S52单片机可以满足本次实验设计所想要达到的功能和效果。该单片机更加高效和低能,并且适用于多种编程器,更利于我们后续的程序设计。3.2焊接电路元器件(1) 首先我们按要求完成了对AT89S52核心板和主板元器件的安装;(2) 完成对电器元件的焊接,如下图六注意:焊接时要从低到高的顺序,先焊小元器件再焊大元器件,特别是先焊接USB接口和电阻这类器件。图 六电路板图 四.编程4.1编写包含电机函数的头文件/*程序名称:DCmotor.h 程序描述:包含电机函数的头文件/*/#ifndef _DCmotor_h_#define _DCmotor_h_#include#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define f f #define forward f #define b b#define backward bvoid DC_Motor_Config(uchar m ,uchar z,uint n );/直流电机配置函数void DC_Motor_Stop(uchar k);/电机停止函数void delay_ms(unsigned int x);/延时函数#endif4.2编写包含电机函数的C文件/*程序名称:DCmotor.c 程序描述:包含电机函数的C文件/*/#include DCmotor.hextern uint tim0;/PWM0输出波形的计数控制extern uint tim1;/PWM1输出波形的计数控制extern uint tim2;/PWM2输出波形的计数控制extern uint tim3;/PWM3输出波形的计数控制sbit DIR0 = P10;sbit DIR1 = P13;sbit DIR2 = P24;sbit DIR3 = P26;/*【函数原形】; delay_ms(unsigned int x); 【函数描述】:延时函数(单位:100us)【修改时间】: dong.2014.04.16/*/void delay_ms(unsigned int x) unsigned int i,j; i=0; for(i = 0;i x;i+) j=108; while(j-); /*=【函数原形】: void motor(unsigned char m ,unsigned char z,unsigned char n ) 【参数说明】: m: 选择电机用,可输入1,2,3,4 1:左前电机,2:左后电机,3:右前电机,4:右后电机 z: 选择方向用,可输入 f/forward(前进) , b/backward(后退) n: 电机转速, 范围为1-100 【修改时间】: dong.2014.04.13 =*/void DC_Motor_Config(uchar m ,uchar z,uint n )/ unsigned int tmp = 0 ;switch (m) 判断电机位置 case 1 :if(z = backward)|(z = b) DIR2 = 1 ;else if(z = forward)|(z = f) DIR2 = 0 ;tim2 = n ;break;case 2:if(z = backward)|(z = b) DIR1 = 1 ;else if(z = forward)|(z = f) DIR1 = 0 ;tim1 = n ;break;case 3: if(z = backward)|(z = b) DIR3 = 0 ;else if(z = forward)|(z = f) DIR3 = 1 ;tim3 = n ;break;case 4: if(z = backward)|(z = b) DIR0 = 0 ;else if(z = forward)|(z = f) DIR0 = 1 ;tim0 = n ;break;default: break; /*=【函数原形】: void DC_Motor_Stop(uchar k) 【参数说明】: k: 选择电机用,可输入1,2,3,4,1:左前电机,2:左后电机,3:右前电机,4:右后电机 【修改时间】: dong.2014.04.16 =*/void DC_Motor_Stop(uchar k)DC_Motor_Config(k ,b ,5 );delay_ms(12); 延时12毫秒DC_Motor_Config(k ,f ,1 );4.3编写包含电机函数的主程序/*程序名称:避障 程序描述:测试小车避障1. 左右两个传感器的测量距离约为16cm,前面的传感器约为27cm2. LED的P0端为1时不亮3. 传感器遇到障碍物时输出低电平4. 无将P0口设为0xff;【修改时间】: dong.2016.09.22/*/#include#includeDCmotor.h#includeBiZhang.hsbit PWM0 = P12;sbit PWM1 = P14;sbit PWM2 = P25;sbit PWM3 = P27;sbit Beep = P11; /Beep=0,蜂鸣器响inttimer = 0;/波形周期int count0 = 0;/PWM0输出波形的计数控制int count1 = 0;/PWM1输出波形的计数控制int count2 = 0;/PWM2输出波形的计数控制int count3 = 0;/PWM3输出波形的计数控制uint tim0;/PWM0输出波形的计数控制uint tim1;/PWM1输出波形的计数控制uint tim2;/PWM2输出波形的计数控制uint tim3;/PWM3输出波形的计数控制/*【函数原型】: Tim2_Init() 【函数描述】:初始化时钟T2和中断【修改时间】: dong. 2016.09.22/*/void Tim2_Init()T2MOD = 0x00;TH2 = (65535-500)/256;/定时500us为周期TL2 = (65535-500)%256;RCAP2H = (65535-500)/256;/定时500us为周期 RCAP2寄存器中存放要放入T2的初值RCAP2L = (65535-500)%256;ET2 = 1;/允许T2的中断TR2 = 1;/启动T2EA = 1;/开中断/*【函数原型】:void main();【函数描述】:在蜂鸣器响一声后进行时钟T2的初始化(Tim2_Init(), 设定左后和右后两个电机的状态,之后利用while循环检测是否遇到障碍【修改时间】: dong. 2016.09.22/*/void main()Beep = 0;delay_ms(100);Beep = 1;Tim2_Init();DC_Motor_Config(4 ,f ,50 );DC_Motor_Config(2 ,f ,50 );while(1)Bi_Sensor();/*【函数原型】: PWM_Cyle2() 【函数描述】:利用T2计时中断产生PWM波,【修改时间】: dong. 2016.09.22/*/void PWM_Cyle2() interrupt 5timer +;/控制PWM波周期count0 +;/PWM0计数count1 +;/PWM1计数count2 +;/PWM2计数count3 +;/PWM3计数if(count0 = tim0)PWM0 = 0;count0 = 0;if(count1 = tim1)PWM1 = 0;count1 = 0;if(count2 = tim2)PWM2 = 0;count2 = 0;if(count3 = tim3)PWM3 = 0;count3 = 0;if(timer = 100)PWM0 = 1;PWM1 = 1;PWM2 = 1;PWM3 = 1;timer = 0;count0 = 0;count1 = 0;count2 = 0;count3 = 0;4.4编写避障判断函数的头文件/*程序名称:BiZhang.h 程序描述:包含三个光电传感器完成循迹的判断函数的头文件/*/#ifndef _BiZhang_h_#define _BiZhang_h_#include#includeDcmotor.hvoid Bi_Sensor();/声明循迹传感器判断函数#endif4.5编写传感器判断程序/*程序名称:BiZhang.c 程序描述:包含三个光电传感器判断的函数主体/*/#include Dcmotor.h#include BiZhang.hsbit l_sensor = P00;/左侧传感器sbit r_sensor = P01;/右侧传感器sbit f_sensor = P02;/前方传感器sbit y_sensor = P03; /下方传感器/*=【函数原形】: void Bi_Sensor() 【函数描述】: 三个光电传感器判断完成循迹功能 【修改时间】:dong.2014.04.16 =*/void Bi_Sensor()if(l_sensor = 0)|(f_sensor = 0)&(l_sensor = 0)/如果左边或是前面和左面同时有障碍有障碍,DC_Motor_Config(4 ,b ,20 );/右转DC_Motor_Config(2 ,f ,20 );if(r_sensor = 0)|(f_sensor = 0)&(r_sensor = 0)/如果右边或是前面和右面同时有障碍有障碍,DC_Motor_Config(2 ,b ,50 );/左转DC_Motor_Config(4 ,f ,50 );if(f_sensor = 0)&(l_sensor = 0)&(r_sensor = 0)/如果前面左右均有障碍DC_Motor_Config(2 ,f ,1);DC_Motor_Stop(4);if(f_sensor = 0)&(l_sensor != 0)&(r_sensor != 0)/如果只是前面有障碍 DC_Motor_Config(4, b ,50 );/右转DC_Motor_Config(2 ,f ,50 );delay_ms(10); if(y_sensor != 0) 如果下面没有障碍(悬崖) DC_Motor_Config(2 ,b ,50 ); 右后方向后退 DC_Motor_Config(4 ,b ,10 );delay_ms(25);else DC_Motor_Config(4 ,f ,14 );/自行DC_Motor_Config(2 ,f ,20 );五.调试程序5.1步骤实验设备:台式计算机、可编程下载线缆、宝贝车机器人、障碍物实验步骤:第一步,准备好启诚机器人控制器主板和 MEGA128、AT89S52 主板,将 AT89S52 插入控制器主板,连接好下载电缆;第二步,打开 GCC 软件,建立相应工程文件和编写实验程序;第三步,将必须的三个头文件拷贝到工程文件和源程序文件夹内;第四步,编译实验程序;第五步,打开主板电源,使用 SLISP 下载程序后关闭电源,取下电缆,将宝贝车机器人放置在开阔场地上;第六步,按启动键,在机器人前方放置障碍物观察实验结果;第七步,关闭控制器电源,取下 MEGA128 控制器主板,按方向插入 AT89S52 控制器主板,连接好下载电缆;第八步,打开 Keil C 软件,建立相应工程文件和编写实验程序; 第九步,将必须的两个头文件拷贝到工程文件和源程序文件夹内;第十步,编译实验程序;重复第五、六步,观察实验结果;实验结果:机器人远距离传感器看见障碍物后向左调整姿态继续前进,如果右侧传感器运动过程中还能看到障碍物,应进行二次调整,不能撞在障碍物上。5.2遇到的问题与解决方案(1) 在录入程序的时候,由于晶振和核心板出现虚焊导致程序不能录入,我们当时不知道为什么会出现这种情况,在尝试多次无果的情况下,找到老师。在老师的帮助下,我们找到了问题的所在,并解决了虚焊的问题。(2) 在调试程序的时候

温馨提示

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

评论

0/150

提交评论