天津理工大学机电类专业设计之避障小车.docx

上传人:b****6 文档编号:7768141 上传时间:2023-01-26 格式:DOCX 页数:32 大小:1.10MB
下载 相关 举报
天津理工大学机电类专业设计之避障小车.docx_第1页
第1页 / 共32页
天津理工大学机电类专业设计之避障小车.docx_第2页
第2页 / 共32页
天津理工大学机电类专业设计之避障小车.docx_第3页
第3页 / 共32页
天津理工大学机电类专业设计之避障小车.docx_第4页
第4页 / 共32页
天津理工大学机电类专业设计之避障小车.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

天津理工大学机电类专业设计之避障小车.docx

《天津理工大学机电类专业设计之避障小车.docx》由会员分享,可在线阅读,更多相关《天津理工大学机电类专业设计之避障小车.docx(32页珍藏版)》请在冰豆网上搜索。

天津理工大学机电类专业设计之避障小车.docx

天津理工大学机电类专业设计之避障小车

机械工程学院专业设计

设计说明书

 

设计题目:

避障小车

设计者:

刘骏学号:

设计者:

李睿学号:

设计者:

赵喆学号:

指导教师:

陈炜刘凉乔志峰

完成日期:

2016年9月20日

天津理工大学机械工程学院

摘要

智能小车是一种能够通过编程手段完成特定任务的小型化机器人,它具有制作成本低廉,电路结构简单,程序调试方便等优点。

由于具有很强的趣味性,智能小车深受广大机器人爱好者以及高校学生的喜爱。

 

本论文介绍的是具有自动避障功能的智能小车的设计与制作,论文对智能小车的方案选择,设计思路,以及软硬件的功能和工作原理进行了详细的分析和论述。

经实践验收测试,该智能小车的电路结构简单,调试方便,系统反映快速、灵活,设计方案正确、可行,各项指标稳定、可靠。

关键字:

智能小车避障模型

 

 

第一章绪论

1.1课题研究的意义

自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。

近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。

人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。

避障小车可以通过自动感应并躲避障碍物,在工作中可以取代人力运输,节省人力和成本。

智能小车是一个及运用计算机、传感、信息、通信、导航、人工智能以及自动控制等技术来实现环境感知、规划决策和自动控制为一体的高新技术综合体。

它在军事、民用和截雪研究方面已经获得了一定的应用,对解决道路交通安全提供了一种新的途径。

随着汽车工业的迅速发展,关于汽车的研究也就越来也多的受人关注。

电研究意义很大。

1.2课题研究的背景

子设计技术是国家高科技实例的一个重要标准,可见其

国外智能车辆的研究历史较长,始于上世纪50年代,它的发展历程大致可分为三个阶段:

第一阶段:

20世纪50年代是智能车辆研究的初始阶段。

早期研制该系统的目的是为了提高仓库运输的自动化水平,应用领域仅局限于仓库内的物品运输,但它却具有了智能车辆最基本的特征即无人驾驶。

随着计算机的应用和传感器技术的发展,智能车辆的研究不断得到新的发展。

第二阶段:

从80年代中后期,世界主要发达国家对智能车辆开展了卓有成就的研究。

进入80年代中期,设计和制造智能车辆的浪潮席卷了全世界,一大批世界著名的公司开始研究智能车辆平台。

第三阶段:

从90年代开始至今,智能车辆进入了深入、系统、大规模的研究阶段。

最为突出的是,美国卡内基—梅隆大学机器人研究所一共完成了Navlab系列的自主车的研究,取得了显著成就。

相比与国外,我国开展智能车技术方面的研究起步较晚,始于20世纪80年代,而且大多数研究尚处于针对某个单项技术研究的阶段。

中国第一汽车集团和国防科技大学机电工程与自动化学院于2003年研制成功了我国第一辆自主驾驶轿车。

上海交通大学应用现代控制理论设计出了一种自动驾驶汽车模型,该模型在汽车系统的动力学建模的基础之上,设计了自动驾驶的专项系统,它能根据的弯曲变化程度实时的计算出车辆的转向盘角度,控制车辆按照预设道路行驶。

智能车辆研究也是智能交通系统ITS的关键技术。

目前,国能许多高校和科研院所都在进行ITS关键技术、设备的研究,随着ITS研究的兴起,我国已经形成了一支ITS技术研究开发的专业技术队伍。

1.3课题研究的主要内容

其实智能车,就是一个机器人,其可以分为三大结构:

传感器检测、机械执行、中央处理器。

智能车通过感知导引线和障碍物,可以实现避障等功能,且可以通过一套完整的控制策略,改善小车的行驶状况,达到更加稳定的状态。

要完成上述的功能设计,传感检测部分可以采用能够感知清晰的图像的摄像头,或者选用人们常用的光电对管传感器来感测路况。

而智能小车的机械部分,可以采用四轮车(带有舵机)、或者三轮车(前轮为万向轮),电机则只需使用直流电机即可。

对于主控芯片CPU,本组全组成员选择简单易用的51单片机或高级复杂额ARM等芯片,通过配合软件编程,可以很好的实现自动避障的功能

 

第二章问题的提出和简单分析

2.1小车组建

小车的组建可以分为几大项,即四轮车(可分为二轮驱动,四轮驱动),三轮车(三轮驱动,二轮驱动),履带车等

本组全组成员在看过设计要求和建造小车的材料,以及简单的讨论之后,选择制作三轮车,因为三轮车是最基础的稳定结构,而且二轮驱动便于控制。

2.2Cpu的选择

启诚机器人电气模块主要有四种控制器,分别是MEGA48、MEGA16、MEGA128、89S52,每种控制器控制主板相同,基本输入输出点数相同,但每种控制器的可扩展性各不相同。

本组全组成员在经过讨论后选择了AT89S52单片机,因为AT89S52单片机可以满足本次实验设计所想要达到的功能和效果。

该单片机更加高效和低能,并且适用于多种编程器,更利于本组全组成员后续的程序设计。

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

2.3传感器的选择

本组全组成员初步的设计选择使用避障传感器,型号:

TQD-GD002,因为距启航机器人使用手册说明,该传感器模块对环境光线适应能力强,并且该传感器探测距离可以通过电位器调节,而且具有干扰小、便于装配、使用方便等特点。

 

第三章小车的制作

3.1搭建车体

本组全组成员在经过了简单分析后选择使用三轮车,通过控制器分别控制后面两个轮子,前面使用一个万向轮起支撑和保持平衡的作用,万向轮没有动力,便于后两个轮子控制。

如图1

图1

为了使电池和主板平稳置于小车上,本组全组成员在小车的底板上方添加了七个机体块。

为了美观和后续制作,本组全组成员分别使用了长短不同的两组,共四个机体块直立安装,并安装一个横向的短机体块在短支架上,并在底板的最后方安装两个很短的机体架。

如图2。

 

图2

在将电池和主板放在小车上后,为了更好的固定它们,本组全组成员又在之前加的机体块上添加了一个横着的机体块。

同时为了更好的使传感器感应到前方的障碍物和火苗,本组全组成员在小车前端加了一个三角支架用于放前端的传感器。

如图3。

为了实现灭火功能,本组全组成员制作了小型的灭火装置,将灭火传感器和触碰传感器共同置于前端的三角支架上。

风扇放在小车的前端,三角支架的后方。

图3

然后本组全组成员将两个触碰传感器分别放在小车的左右前端,用于发现障碍物。

如图4。

图4

远距离探测传感器是因为本组全组成员在做小车测试的时候发现了问题,最后进行的更换,详细说明在第六章调试小车。

 

3.2小车的最后外形

图5

小车所有零件规格见附录1。

小车三视图大图见附录3。

 

第四章电路板的制作

4.1安装电路元器件

电路板实物图:

图6

单片机底板电路图:

图7

电路板零件清单见附录二。

4.2焊接电路元器件

4.2.1焊接的概念 

 采用锡铅焊料进行焊接的称为锡铅焊,简称锡焊,其机理是:

在锡焊的过程中将焊料、焊件与铜箔在焊接热的作用下,焊件与铜箔不熔化,焊料熔化并湿润焊接面,依靠焊件、铜箔两者问原子分子的移动,从而引起金属之间的扩散形成在铜箔与焊件之间的金属合金层,并使铜箔与焊件连接在一起,就得到牢固可靠的焊接点

4.2.2焊接工具

电烙铁是最主要的焊接工具。

电烙铁的种类很多,有直热式、感应式、储能式及调温式多种,电功率有15W、2OW、35W„„300W多种,主要根据焊件大小来决定。

小功率电烙铁的烙铁头温度一般在300~400℃之间。

一般元器件的焊接用2OW内热式电烙铁。

新的烙铁使用前,应用细纱纸将烙铁头打光亮,通电烧热,蘸上松香后用烙铁头刃面接触焊锡丝,使烙铁头上均匀的镀上一层锡,这样可以便于焊接和防止烙铁头表面氧化。

若使用时间很长,烙铁头已经氧化发黑时,要用小锉刀轻锉去表面氧化层,在其露出紫铜的光亮后用同新烙铁头镀锡的方法一样进行处理,才能使用。

4.2.3锡料 

锡料:

是一种易熔金属,它能使元器件引线与印制电路板的连接点连接在一起。

锡(Sn)是一种质地柔软、延展性大的银白色金属,熔点为232℃,在常温下化学性能稳定,不易氧化,不失金属光泽,抗大气腐蚀能力强。

铅(Pb)是一种较软的浅青白色金属,熔点为327℃,高纯度的铅耐大气腐蚀能力强,化学稳定性好,但对人体有害。

锡中加入一定比例的铅和少量其它金属可制成熔点低、流动性好、对元件和导线的附着能力强、机械强度高、导电性好、不易氧化、抗腐蚀性好、焊点光亮美观的焊料,一般称焊锡。

 

4.2.4焊接流程

步骤一:

准备施焊 

左手拿焊丝,右手握烙铁,进入备焊状态。

要求烙铁头保持干净,无焊渣等氧化物,并在表面镀有一层焊锡。

 步骤二:

加热焊件 

烙铁头靠在两焊件的连接处,加热整个焊件全体,时间大约为1~2秒钟。

对于在印制板上焊接元器件来说,要注意使烙铁头同时接触两个被焊接物。

 步骤三:

送入焊丝 

焊件的焊接面被加热到一定温度时,焊锡丝从烙铁对面接触焊件。

注意:

不要把焊锡丝送到烙铁头上!

 

步骤四:

移开焊丝 

当焊丝熔化一定量后,立即向左上45度方向移开焊丝 步骤五:

移开烙铁 

焊锡浸润焊盘和焊件的施焊部位以后,向右上45度方向移开烙铁,结束焊接。

从第三步开始到第五步结束,时间大约也是1~2s。

4.2.5注意事项:

 

1、先熟悉开发板原理图再和电路板上的丝印层相对

照,以免出现错误。

 

2、 焊接时要从低到高的顺序,先焊小元器件再焊大

元器件,特别是先焊接USB接口和电阻这类器件。

 3、 为了保证焊接的质量,焊接元件时一定要先固定

一个引脚,然后调整元件的位置及高低至合适后,再焊另外的引脚,以免焊歪,因为一旦固定两个以上引脚,元件的位置就不可动。

 

4、 焊接USB接口时,应该先不要焊接其旁边的电容

C4和复位按键,等焊上USB接口后再焊电容C4,另外,不要使USB引脚间相互短路。

 

5、 在往电路板上安装发光二极管、电解电容和蜂鸣器时,注意看准它们的极性。

 

6、 在安装集成块时,它们的缺口要与丝印层上的缺

口保持一致。

 

7、 焊接数码管时一定要注意,必须先焊接板子底层

的三个芯片,(建议:

这三个芯片焊接完后可以准备一个锋利的指甲剪或斜口钳,剪去芯片在正面的引脚过长的部分)。

 

8、 在焊接三极管时,注意三极管的朝向

4.2.6遇到的问题和解决方案

初步焊接完成后,万用表测试时,有几个接口没有接好,重新焊接后,小灯亮起,焊接完成。

 

第五章编程

5.1编写程序的应用软件

编写程序应用软件:

KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。

KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。

C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。

C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:

编译器,汇编器,实时操作系统,项目管理器,调试器。

uVision2IDE可为它们提供单一而灵活的开发环境。

5.2编写传感器程序

/**************************************************

程序名称:

避障

程序描述:

测试小车避障

1.左右两个传感器的测量距离约为16cm,前面的传感器约为27cm

2.LED的P0端为1时不亮

3.传感器遇到障碍物时输出低电平

4.无将P0口设为0xff;

【修改时间】:

dong.2014.04.16

/**************************************************/

#include

#include"DCmotor.h"

#include"BiZhang.h"

sbitPWM0=P1^2;

sbitPWM1=P1^4;

sbitPWM2=P2^5;

sbitPWM3=P2^7;

sbitBeep=P1^1;//Beep=0,蜂鸣器响

inttimer=0;//波形周期

intcount0=0;//PWM0输出波形的计数控制

intcount1=0;//PWM1输出波形的计数控制

intcount2=0;//PWM2输出波形的计数控制

intcount3=0;//PWM3输出波形的计数控制

uinttim0;//PWM0输出波形的计数控制

uinttim1;//PWM1输出波形的计数控制

uinttim2;//PWM2输出波形的计数控制

uinttim3;//PWM3输出波形的计数控制

/**************************************************

【函数原型】:

Tim2_Init()

【函数描述】:

初始化时钟T2和中断

【修改时间】:

dong.2014.04.16

/**************************************************/

voidTim2_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;//启动T2

EA=1;//开中断

}

/**************************************************

【函数原型】:

voidmain();

【函数描述】:

在蜂鸣器响一声后进行时钟T2的初始化(Tim2_Init()),

设定左后和右后两个电机的状态,之后利用while循环检测是否遇到障碍

【修改时间】:

dong.2014.04.16

/**************************************************/

voidmain()

{

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.2014.04.16

/**************************************************/

voidPWM_Cyle2()interrupt5

{

timer++;//控制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;

}

}

 

/**************************************************

程序名称:

DCmotor.c

程序描述:

包含电机函数的C文件

/**************************************************/

#include"DCmotor.h"

externuinttim0;//PWM0输出波形的计数控制

externuinttim1;//PWM1输出波形的计数控制

externuinttim2;//PWM2输出波形的计数控制

externuinttim3;//PWM3输出波形的计数控制

sbitDIR0=P1^0;

sbitDIR1=P1^3;

sbitDIR2=P2^4;

sbitDIR3=P2^6;

/**************************************************

【函数原形】;delay_ms(unsignedintx);

【函数描述】:

延时函数(单位:

100us)

【修改时间】:

dong.2014.04.16

/**************************************************/

voiddelay_ms(unsignedintx)

{

unsignedinti,j;

i=0;

for(i=0;i

{

j=108;

while(j--);

}

}

/*==============================================================================

【函数原形】:

voidmotor(unsignedcharm,unsignedcharz,unsignedcharn)

【参数说明】:

m:

选择电机用,可输入1,2,3,41:

左前电机,2:

左后电机,3:

右前电机,4:

右后电机

z:

选择方向用,可输入f/forward(前进),b/backward(后退)

n:

电机转速,范围为1--100

【修改时间】:

dong.2014.04.13

==============================================================================*/

voidDC_Motor_Config(ucharm,ucharz,uintn)//

{

unsignedinttmp=0;

switch(m)

{

case1:

if((z==backward)||(z==b))

{

DIR2=1;

}

elseif((z==forward)||(z==f))

{

DIR2=0;

}

tim2=n;

break;

case2:

if((z==backward)||(z==b))

{

DIR1=1;

}

elseif((z==forward)||(z==f))

{

DIR1=0;

}

tim1=n;

break;

case3:

if((z==backward)||(z==b))

{

DIR3=0;

}

elseif((z==forward)||(z==f))

{

DIR3=1;

}

tim3=n;

break;

case4:

if((z==backward)||(z==b))

{

DIR0=0;

}

elseif((z==forward)||(z==f))

{

DIR0=1;

}

tim0=n;

break;

default:

break;

}

}

/*==============================================================================

【函数原形】:

voidDC_Motor_Stop(uchark)

【参数说明】:

k:

选择电机用,可输入1,2,3,4,1:

左前电机,2:

左后电机,3:

右前电机,4:

右后电机

【修改时间】:

dong.2014.04.16

==============================================================================*/

voidDC_Motor_Stop(uchark)

{

DC_Motor_Config(k,b,5);

delay_ms(12);

DC_Motor_Config(k,f,1);

}

 

/**************************************************

程序名称:

BiZhang.c

程序描述:

包含三个光电传感器判断的函数主体

/**************************************************/

#include"Dcmotor.h"

#include"BiZhang.h"

sbitl_sensor=P0^4;//左侧传感器

sbitr_sensor=P0^2;//右侧传感器

sbitf_sensor=P0^3;//前方传感器

//

sbitPWM0=P1^2;

sbitPWM1=P1^4;

sbitPWM2=P2^5;

sbitPWM3=P2^

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1