智能避障小车论文.doc

上传人:wj 文档编号:7393287 上传时间:2023-05-11 格式:DOC 页数:26 大小:540.50KB
下载 相关 举报
智能避障小车论文.doc_第1页
第1页 / 共26页
智能避障小车论文.doc_第2页
第2页 / 共26页
智能避障小车论文.doc_第3页
第3页 / 共26页
智能避障小车论文.doc_第4页
第4页 / 共26页
智能避障小车论文.doc_第5页
第5页 / 共26页
智能避障小车论文.doc_第6页
第6页 / 共26页
智能避障小车论文.doc_第7页
第7页 / 共26页
智能避障小车论文.doc_第8页
第8页 / 共26页
智能避障小车论文.doc_第9页
第9页 / 共26页
智能避障小车论文.doc_第10页
第10页 / 共26页
智能避障小车论文.doc_第11页
第11页 / 共26页
智能避障小车论文.doc_第12页
第12页 / 共26页
智能避障小车论文.doc_第13页
第13页 / 共26页
智能避障小车论文.doc_第14页
第14页 / 共26页
智能避障小车论文.doc_第15页
第15页 / 共26页
智能避障小车论文.doc_第16页
第16页 / 共26页
智能避障小车论文.doc_第17页
第17页 / 共26页
智能避障小车论文.doc_第18页
第18页 / 共26页
智能避障小车论文.doc_第19页
第19页 / 共26页
智能避障小车论文.doc_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

智能避障小车论文.doc

《智能避障小车论文.doc》由会员分享,可在线阅读,更多相关《智能避障小车论文.doc(26页珍藏版)》请在冰点文库上搜索。

智能避障小车论文.doc

“神戎”杯山东大学信息学院光电设计大赛

基于光电导航的智能移动测量小车

简介

竞赛说明:

设计一辆具有光电导航功能的智能车,要求从线路的指定点出

发,沿轨道上铺设的“8”字形导航条走完全程。

在行走过程中,利

用光电技术测量、记录沿途所通过隧道的数目、各段隧道的长度及沿

途路边树木的棵数。

目录

第1章引言………………………………………….………………...…...4

第2章总体方案………………………………………..............………...5

2.1需求分析……………………………………………………………5

2.2总体分析……………………………………………………………5

2.3方案确定……………………………………………………………5

第3章硬件方案……………………………………………...…………7

3.1车体设计……………………………………………………………..7

3.2主控制器模块………………………………………………………..7

3.3电源模块……………………………………………………………..7

3.4电机驱动模块………………………………………………………..7

3.5电机模块……………………………………………………………..8

3.6循迹模块……………………………………………………………..8

3.7测量显示……………………………………………………………..8

3.7最终方案……………………………………………………………..8

第4章硬件实现及单元电路设计………………………….……….9

4.1主控模块……………………………………………………………..9

4.2电源设计……………………………………………………………..9

4.3驱动电路…………………………………………………………….9

4.2循迹设计……………………………………………………………..10

4.2测量显示…………………………………………………………….10

第5章系统软件设计方案………………………………..…….…….11

第6章系统的安装及调试…………………………………......….….12

6.1安装步骤……………………………………………………………..12

6.2电路的调试…………………………………………………………...12

第7章心得与总结……………………………….…………….……….12

经费预算…………………………………………………………14

附录…………………………………………………………………………15

第一章引言

随着汽车工业的快速发展,关于汽车的研究也越来越受到人们的关注。

智能汽车概念的提出给汽车产业带来机遇也带了挑战。

汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于超声波和红外线的智能小车的避障研究。

针对一种基于红外传感器的循迹小车,通过对整体方案、电路、算法、调试、车辆参数的介绍,详尽地阐述小车通过传感器系统感知外界环境和自身状态,在复杂的环境中自主移动并完成相应的任务。

红外传感器以其独有的特征而被青睐。

该智能小车系统涉及直流电机控制技术、路径识别、传感技术、电子设计、程序设计等多个学科,磨练我们的知识融合和实践动手能力的培养。

摘要:

智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探用途。

本设计中智能小车采用STC89C52单片机作为检测和控制的核心,实现智能小车的智能控制。

驱动电机采用直流减速电机。

关键词智能小车;单片机;红外线;循迹

第二章总体方案

本章主要简要地介绍系统总体方案的选定和总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的介绍分析。

2.1需求分析

设计一种基于红外循迹的小车移动平台,借助红外传感器的使用满足在一定的复杂的环境中自主循迹任务,使小车可以按轨道行走。

2.2总体设计

通过学习和研究相关技术资料了解到,红外模块是系统的关键模块之一,方案的好坏,直接关系到最终性能的优劣,因此确定模块的方法是决定系统总体方案的关键。

循迹模块采用红外传感器的优点是价格相对便宜,在满足系统的要求下具有较高的精度,能很好的循迹。

2.3方案确定

系统采用STC89C52单片机作为核心控制单元用于智能车系统的控制,小车车头正中间红外传感器检测前方障碍物,用于判断是否需要转弯。

系统总体的设计方框图如图1所示。

测速模块

电源模块

测树木模块

电机驱动模块

STC89C52主控模块

循迹模块

显示模块

根据系统方案设计,系统包括以下模块:

STC89C52主控模块、L9110电机驱动模块、电源模块、循迹模块、显示模块、测速测树木模块等。

各模块的作用如下:

STC89C52主控模块,作为整个智能小车的“大脑”,将发送采集红外等传感器的信号,根据控制算法做出控制决策,驱动直流电机等等完成对智能车的控制。

电源模块,为整个系统提供合适而又稳定的电源;

电机驱动模块,驱动直流电机完成智能车的加减速控制和转向控制;

红外循迹模块,则能够达到循迹功能。

显示模块,将测量结果显示。

测速测树木模块,准确测量树木数量,隧道长度。

第三章硬件方案

根据总体方案设计,对硬件结构的要求是:

简单而高效,在不断的尝试后确定了以下的设计方案:

3.1.1车体设计

买现成的车模。

经过反复考虑论证,我们制定了买左右两轮分别驱动,后万向轮转向的车模方案。

即左右轮分别用两个转速和力矩基本完全相同的直流减速电机进行驱动,后装一个万向轮。

这样,当两个直流电机转向相反同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车坐标不变的90度和180度的转弯。

3.1.2主控制器模块

采用STC89C52单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。

充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。

这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。

51单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是51单片机价格非常低廉。

3.1.3电源模块

采用7.2V锂电池做电源,后为单片机,传感器供电。

经过实验验证小车工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。

3.1.4电机驱动模块

采用功率三极管作为功率放大器的输出控制直流电机。

线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的H型桥式电路。

用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。

这种电路效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,是一种广泛采用的PWM调速技术。

现市面上有很多此种芯片,我选用L9110,一片L9110可以分别控制一个直流电机,而且还带有控制使能端。

用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

3.1.5电机模块

本系统为智能电动车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。

所以我采用直流减速电机。

直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。

由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生大扭力。

能够较好的满足系统的要求。

3.1.6循迹模块

采用红外传感器负责循迹功能的实现。

考虑到本系统需要检测线路,为了使用方便、系统稳定性、便于操作和调试。

3.1.7测量显示模块

用红外对管进行速度及距离测量,以及数目测量,用1602显示屏进行结果显示

3.2最终方案

经过反复论证,我们最终确定了如下方案:

1、车模用两驱车模

2、采用STC89C52单片机作为主控制器。

考虑到89C52单片机运行速度比较慢,如果采用一片单片机可能会出现误差(如测速模块)所以用两片单片机。

3、用7.2V锂电池供电。

7.2V电池能为电机提供更高的功率。

4、用红外传感进行测量树木数量。

左右各一路红外传感器,由于小车速度比较慢,所以不需要利用外部中断直接在检测到返回的低电平后数量加一,然后延时一段时间,直到小车绕过树木,防止数量重复相加。

5、L9110作为直流电机的驱动芯片。

结构简单,重量较轻,可以为电机提供稳定、大功率的电压。

6、红外对管进行测量隧道长度。

利用一路红外探头位于小车上方检测隧道有无。

进入隧道后用红外测速模块计算小车行进的距离。

7、红外探测器进循迹。

考虑到轨道主要以直线为主,中间有直角钝角转弯和中间交叉路口直行三种特殊情况,共采用七路循迹模块,其中五路(从左往右第二、三、四、五、六)检测直道,再用三路处理三种特殊情况(三路循迹探头为从左往右第一、四、七)。

8、1602显示器显示数据。

考虑到要显示的内容比较简单,只是字母和数字,所以1602就能满足要求,而且1602结构简单,价格便宜,容易掌握。

第四章硬件实现及单元电路设计

4.1主控制模块

主控制最小系统电路如图4所示。

图4

4.2电源设计

为了节约成本,我们的电源采用了7.2V锂电池电池作为单片机的供电电源。

4.3驱动电路

通过单片机给予L9110电路PWM信号来控制小车的速度,起停。

4.4循迹模块

4.5测量显示模块

第5章系统软件设计方案

该方案的编程思路是先确定主程序,之后根据各硬件电路功能来设计子程序模块,最后再将各模块嵌入主程序中。

这样编程结构简单,由于子程序模块与硬件电路一一对应,所以调试起来十分方便。

本设计软件方框图如图9示。

循迹的智能小车主程序

电机驱动子程序

测树木子程序

显示子程序

循迹

子程序

测速

子程序

图9

第六章系统的安装与调试

6.1安装步骤

1.检查元件的好坏

按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。

而且要认真核对原理图是否一致,在检查好后才可上件、焊件,防止出现错误焊件后不便改正。

2.放置、焊接各元件

按原理图的位置放置各元件,在放置过程中要先放置、焊接较低的元件,后焊较高的和要求较高的元件。

特别是容易损坏的元件要后焊,在焊集成芯片时连续焊接时间不要超过10s,注意芯片的安装方向。

6.2电路的调试

首先烧入电机控制小程序,控制电机正反转,停止均正常。

说明电机及驱动电路无误。

然后加入循迹子程序,小车运转正常时,达到理想效果。

在调试程序时,发现有的指令用的不正确,导致电路功能不能完全实现,另外软件程序中的延时有的过长、有的过短。

类似的现象还有很多就不一一列举了。

第7章心得与总结

本智能小车电路在硬件上采用红外循迹传感器来循迹。

由于采用了7.2V锂电池电池供电使系统的抗干扰性得到加强。

在软件上,充分利用了STC89C52的系统资源,使智能小车实现了隧道测量、树木检测、循迹的功能。

本设计结构简单,调试方便,系统反映快速灵活,硬件电路由可拆卸模块拼接而成有很大的扩展空间。

经实验测试,该智能小车设计方案正确、可行,各项指标稳定、可靠。

虽然智能小车系统有很多优点,但在设计当中也存在着一些不足。

一是由于我们都是做出的小车较简单;再者就是在制作过程中出现了较多问题:

1.小车在行驶过程中左右摇晃,容易冲出轨道,转弯不稳定,轨道两旁树木会被重复检测,中间交叉处不能直行,主要原因是左右轮转速不完全一致,可以使用四轮小车同时将循迹探头往前放。

2.程序存在缺陷,行进过程中有时会停止。

通过这次对作品的制作,使我学到许多东西,不管软件方面还是硬件方面都需要掌握,还有合作协调方面,动手能力,调试时候注意事项,都有着很大的要求,是我受益匪浅。

经费预算

1.飞思卡尔小车底盘+驱动模块:

280

2.电池+充电器:

60

3.九路循迹+支架:

70

4.红外探头4个:

80

5.测速模块两个(左右轮):

30

6.1602显示器1个:

20

7.L9110电机驱动模块:

15

8.三轮小车底盘+两个电机:

40

9.STC89C52单片机两个:

15

10.STC89C52最小系统两个:

20

总计:

630

附录:

(源代码)

循迹:

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitr1=P0^0;

sbitr2=P0^1;

sbitl1=P0^2;

sbitl2=P0^3;

sbitlook=P2^4;

sbitlook1=P1^0;

sbitlook2=P1^1;

sbitlook3=P1^2;

sbitlook4=P1^3;

sbitlook5=P1^4;

sbitlook6=P1^5;

sbitlook7=P1^6;

sbitget=P1^7;

voidgo();

voidback();

voidturn_right();

voidturn_left();

voiddelay1ms(int);

voidstop();

voidturnright(uint);

voidturnleft(uint);

voidgo_strait(uchar);

voidmain()

{

get=1;

if(get==0)stop();

else

{if(look1==1&&look2==1&&look3==0&&look4==1&&look5==1&&look6==1&&look7==1)//直行

{ go();

}

elseif((look1==0||look2==0)&&look4==1&&look5==1&&look6==1&&look7==1)//在轨道上右偏

{

do{turn_left();}while(look3==1);

}

elseif(look1==1&&look2==1&&(look4==0||look5==0)&&look6==1&&look7==1)//在轨道上左偏

{

do{turn_right();}while(look3==1);

}

elseif(look6==0)

{

go_strait

(1);

if(look7==0)

{

go_strait(10);

}

else

{

do{turn_right();}while(look3==1);

}

}

elseif(look7==0)

{

go_strait

(1);

if(look6==0)

{

go_strait(10);

}

else

{

do{turn_left();}while(look3==0);

}

}

elsestop();

} }

voidgo()

{

r1=0;r2=1;

l1=0;l2=1;

delay1ms(5);

stop();

delay1ms(10);

}

voidgo_strait(ucharx)

{ while(x--){

r1=0;r2=1;

l1=0;l2=1;

delay1ms(3);

stop();

delay1ms(10);}

}

voidback()

{

r1=1;r2=0;

l1=1;l2=0;

delay1ms(10);

stop();

delay1ms(10);

}

voidturn_right()

{

{r1=0;r2=0;

l1=0;l2=1;

delay1ms(5);

stop();

delay1ms(15);}

}

voidturnright(uintz)

{

while(z--)

turn_right();

}

voidturn_left()

{

r1=0;r2=1;

l1=0;l2=0;

delay1ms(5);

stop();

delay1ms(15);// }

}

voidturnleft(uintz)

{

while(z--)

turn_left();

}

voidstop()

{

r1=0;r2=0;

l1=0;l2=0;

}

voiddelay1ms(intx)

{

inti,j;

for(i=1;i

for(j=1;j<120;j++);

}

检测:

/07/lcd模块

#include

#defineLCDPP0

#defineuintunsignedint

#defineucharunsignedchar

sbitRS=P1^7;//寄存区选择位

sbitRW=P1^6;//设置读写位

sbitE=P2^4;//使能位(0:

禁止,1:

使能)

sbitBF=P0^7;//忙碌检查位

sbitlookleft=P2^0;

sbitlookright=P2^1;

sbitlookup=P3^3;

sbitspeed=P3^2;

sbitstop=P1^1;//小车停止标志

sbitsend=P1^0;

charamount_tree=0,amount_bri=0;//树的个数,隧道的个数

uintlength_bri[4]; //桥的长度

charline1[]="CountofTree:

";

charline2[]="CountofBri:

";

charline3[]="LengthofBri:

"; //显示的字符

charline4[]="";

uinttemp=0;//测速模块反应次数

voidinit_LCM(void);//初始化设置函数

voidwrite_inst(char);//写入指令函数

voidwrite_char(char);//写入字符数据函数

voidcheck_BF(void);//检查是否忙碌函数

voiddelay1ms(int);//延迟函数

voiddisplay1();

//voiddisplay_char(charline,loca,character);//写入指定位置

voidblank_line(charline);//写入空白行

voidmain()

{

send=1;

while

(1){

if(stop==0) //遇到终止信号时

{

send=0;

display1();

}

else//没有遇到终止信号

{

if(lookup==1)//没有桥

{

if(lookright==0&&lookleft==1)//右边有树

{

amount_tree=amount_tree+1;

delay1ms(200);

}

if(lookright==1&&lookleft==0)//左边有树

{

amount_tree=amount_tree+1;

delay1ms(200);

}

if(lookright==0&&lookleft==0)

{

amount_tree=amount_tree+2;

delay1ms(200);

}

}

else //有桥

{

amount_bri=amount_bri+1;

temp=0;

while(lookup==0)

{ IE=0x81;

TCON=0x01;

//if(speed==1)

// {

// temp=temp+1;

// delay1ms(5);

// }

}

length_bri[amount_bri]=temp/5;

}

}

}

}

voidspeed_INT(void)interrupt0

{

temp=temp+1;

}

//--------LCD显示—-----------

voiddisplay1()

{

chari,j;

charlength[5];

charcount_tree[2],count_bri[2]; //用sac码显示数量

count_tree[0]=amount_tree/10+0x30;//树的个数,十位数

count_tree[1]=amount_tree%10+0x30;//树的个数,个位数

count_bri[0]=amount_bri/10+0x30;//桥,十位数

count_bri[1]=amount_bri%10+0x30;//桥,个位数

init_LCM();//初始化设置

while

(1)

{

write_inst(0x80);//第一行起始地址,显示字符串1,树的棵数

for(i=0;i<14;i++)

write_char(line1[i]);

write_inst(0x8e);//显示数字的地址

for(i=0;i<2;i++)

write_char(count_tree[i]);

write_inst(0xc0);//第二行起始地址,显示字符串2 ,桥的数量

for(i=0;i<14;i++)

write_char(line2[i]);

write_inst(0xce); //显示数字的地址

for(i=0;i<2;i++)

write_char(count_bri[i]);

delay1ms(2500);

write_inst(0x01);//清除显示屏

delay1ms(1000);

//===各个桥的长度

for(j=0;j

{

chardis[3],x=j+1;

uinty;

len

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2