智能小车报告分析Word文档格式.docx
《智能小车报告分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《智能小车报告分析Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
(1)寻迹功能
该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”一黑线。
本车用了比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;
如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。
(2)避障功能
该智能小车利用红外对管获取障碍物的信息,小车在前进时位于小车前方的红外管不断发射红外光,当前方有障碍物时,红外管被反射,并被接收管接收。
2.框图
Stc89c52
循迹红外对管
时钟电路
复位电路
报警电路
电机驱动
避障红外对管
图一
3.原理图(图二)
4.流程图
开始
系统初始化
中间传感器有信号?
左侧传感器有信号?
小车直走
小车右转
延时一段时间
Y
NY
智能小车寻迹流程图(图三)
N
智能小车避障流程图(图四)
三、电路与程序设计
(1)电路设计(各单元模块功能):
1、控制器模块
采用STC89C52单片机,直接通过USB线为小车烧录程序做开发,不用购买转换器。
作用:
智能小车的控制核心,通过对单片机烧录控制程序,控制小车前进、后退、左转、右转,从而实现循迹避障功能,即在有轨迹的地方小车能沿轨迹行驶,当遇到障碍时小车能够自动避开。
2.电机驱动模块
运用两块LG9110驱动芯片来分别控制左前轮和右前轮。
该芯片简单易管理,充分主程序有时间去处理其他更多功能。
用驱动芯片做单片机与马达的桥梁,当芯片接收到来自单片机的命令信号时,芯片会做出相应的命令来使马达运作,从而实现控制左转与右转的功能。
3、寻迹模块
智能小车设计要能实现在黑白轨迹线路上寻迹行驶,小车就要能区分路面上的黑白颜色,采用的是红外光线对黑白颜色反光程度不同的原理。
同时也可以根据这种方法来实现避悬崖及其他更多的高级功能。
4、避障模块
智能小车的避障方法采用红外光线反射原理,可以很好的检测到前方能够反光的白色物体,从而实现能够绕障碍物与防撞的功能。
5.电源模块
采用4节1.5V干电池供电,电压达到6V,给单片机、电机和其他芯片供电。
给小车提供能源。
6.发光二极管和蜂鸣器
采用普通发光二极管和蜂鸣器分别发出光声进行提示。
两个发光二极管一直亮着表示小车处于前进状态;
发光二极管闪烁和蜂鸣器鸣叫表示小车后退;
左边的发光二极管亮而右边的发光二极管灭表示小车左转;
右边的发光二极管亮而左边的发光二极管灭表示小车右转。
7.8位LED指示灯
充分发挥程序状态指示灯、跑马灯、流水灯、花样灯等更多变幻多样的功能。
(2)程序设计:
程序设计原理:
探测障碍物的红外对管和寻迹的两个红外对管引起的电平变化,并将其变化传递给STC89C51单片机,经过一定计算处理,并配合两个直流发电机通过前进、后退、左转、右转等动作完成寻迹和避障功能。
1、主程序模块
#include<
reg52.h>
intrins.h>
#defineGPIO2P1
#defineGPIO3P2
#defineucharunsignedchar
voiddelayms(ucharx);
//延时子程序
voiddisplay();
//数码管显示程序
voidbizhang();
//避障程序
voidqian();
//前进
voidhou();
//后退
voidzuo();
//向左
voidyou();
//向右
voidstop();
//停止
voidxunji();
//寻迹子程序
voidvoicecontrol();
sbitIB1=P0^0;
sbitIA1=P0^1;
sbitIB2=P0^2;
sbitIA2=P0^3;
sbitD1=P2^0;
//左前方LED
sbitD2=P0^7;
//右前方LED
sbitBE=P0^6;
//蜂鸣器控制位
sbitBT=P0^4;
//声音检测位
sbith1=P3^7;
//前方避障红外检测
sbith2=P3^5;
//寻迹左红外检测
sbith3=P3^6;
//寻迹右红外检测
sbits2=P3^4;
ucharrunflag=0,flag1,flag2;
//标志位
ucharnum1=0,num2=0,t,k;
ucharcodeDPIO[10]={~0xfc,~0x60,~0xda,~0xf2,~0x66,~0xb6,~0xbe,~0xe0,~0xfe,~0xf6};
//数码管段码
2、延时子程序
voiddelayms(ucharx)
{
uchara,b,c;
for(a=0;
a<
x;
a++)
for(b=0;
b<
100;
b++)
for(c=0;
c<
c++);
}
3、数码管显示子程序
voiddisplay()
uchari,j;
t=D1;
i=num2/10;
//秒的十位
j=num2%10;
//秒的个位
switch(i)
{
case0:
GPIO2=~0x00;
break;
case1:
GPIO2=~0x01;
case2:
GPIO2=~0x02;
case3:
GPIO2=~0x04;
case4:
GPIO2=~0x08;
case5:
GPIO2=~0x10;
case6:
GPIO2=~0x20;
case7:
GPIO2=~0x40;
case8:
GPIO2=~0x80;
default:
}
GPIO3=DPIO[j];
D1=t;
4、寻迹子程序
voidxunji()
if(h2==1&
&
h3==1)//左、右红外都为1时,表示在跑道上,前进
{
qian();
}
if(h2==0&
h3==0)//不在跑道上,后退
hou();
delayms(5);
you();
}
h3==0)//偏离跑道向左转
{
zuo();
h3==1)//偏离跑道向右转
}
}
voidvoicecontrol()
if(BT==0)//声音检测
while(BT==0);
//直到没有声音
if(runflag==0)//判断运动标志位
{runflag=1;
stop();
delayms(100);
while(BT);
else
{runflag=0;
qian();
5、避障子程序
voidbizhang()
if(h1==0)//前方遇到障碍物
delayms
(1);
if(h1==0)
hou();
//先后退,右转,前进,左转,前进,左转,前进,右转
//前进,实
delayms(30);
//现躲避障碍物并沿原方向前进
you();
delayms(15);
qian();
delayms(40);
zuo();
delayms(80);
}
四.小车的调试方案和调试结果
(1)各模块调试方案和结果:
1、控制器模块:
打开小车开关,观察小车在初始程序下是否工作正常。
通过测试,控制器模块工作正常。
2、电机驱动模块:
烧录电机控制程序,观察两个电机正反转是否正常。
通过测试,电机驱动模块工作正常。
3、电源模块:
安装电池,打开小车开关,观察小车电源灯是否亮。
电源灯亮,电源模块工作正常。
4、发光二极管、蜂鸣器和静态数码管:
打开小车开关,观察发光二极管和蜂鸣器在初始程序下是否工作正常。
(2)系统功能调试方案和结果:
在keil软件上编写程序之后,生成.hex文件,并将它烧录到单片机内,打开开关,使小车在白底黑色跑道上行驶,若小车放在白色区域任意位置,能自动找到黑色跑道,并按照跑道行进。
小车在椭圆型、S型、六边形等轨道都可以实现寻迹。
向前运行的机器人能发现前方白色障碍,先倒车再转弯绕过障碍物。
如不能则再次修改程序、检查电路,直至发现错误或测试成功。
五.遇到的问题和解决方案
(1)硬件制作:
1、在最初焊接元器件的时候,没注意到各电阻的阻值有差异,之后用万用表将各阻值电阻测量好并按照图纸焊;
2、组装完小车之后进行初步测试时,我们发现打开开关后,灯未亮,发动机未工作,初步认为是芯片出了问题,第一次更换的芯片也存在问题,由于没及时排除这个因素,出现了后面一系列的差错,甚至将电动机的线接反,经最终老师们的指导,重新换了一块芯片,小车能正常运转。
(2)程序编写:
由于该程序的编写编译需要用到kiel软件,而我们小组所有成员之前都没有接触过这个软件,所以最大的问题就是我们完全不会使用这个软件,还好之前我们学过C语言。
我们小组查找各种资料视频,从头开始学习keil软件,一起讨论,也咨询懂的同学,加上有一点C语言编程基础,慢慢的写出了程序。
(3)功能调试:
1、功能调试的时候发现我们的小车不会转弯,遇到障碍物后会倒退,就是不转弯,继续往前走,遇到障碍物又往后退,周而复始。
通过测试发现,是因为我们下面的发光二极管损坏了,不能接收信号,之后更换二极管后能够接收信号。
2、更换二极管后虽然能够接收信号,但是发现转弯的时候小车转动的方向与理想情况相反,经过思考,发现是因为发动机的M1和M2口接反了,调换之后小车能够正常寻迹。
六、工程管理方案
(1)人力资源配置:
组长A:
主要负责小车芯片部分电路焊接与调整,调试,负责编程以实现小车各项功能,小车MV拍摄,制作视频并进行后期加工。
组员B:
主要负责机械组装小车,查找相关资料,轨道的制作,调试,撰写终期检查报告,负责编程以实现小车各项功能,以及协助小车MV拍摄。
组员C:
主要负责传感器部分电路焊接与调整,调试,撰写终期检查报告,轨道的制作,负责编程以实现小车各项功能,以及协助小车MV拍摄。
(2)项目进度计划:
小组成员首先完成了主板和各部件的焊接以及机械组装,之后通过网络以及各种书籍去学习了解keil软件、电动机、LED灯、蜂鸣器等部分的工作原理,学习完之后开始进行编写程序,然后借助烧录软件把程序烧录到小车,最后进行小车的调试及错误更改。
七、总结与体会
本学期我们小组的任务是实现智能小车寻迹避障的功能。
这个过程非常有趣,在动手操作的同时也学到了单片机以及keil软件的相关知识。
通过此次的设计制作,使我们深刻认识到了动手能力和理论知识的重要性,而理论与实践的结合更是重中之重。
当然,我们也深刻地认识到我们的不足,由于自身理论知识的欠缺和动手能力的不佳在工作中频频受阻,走了好多弯路,虽然在制作过程中不可避免地遇到很多问题,但是最后还是在老师以及同学的帮助下圆满解决了这些问题,实现了整个系统设计与最后调试,相关指标达到预期的要求,圆满地完成了本次设计任务。
在今后的学习生活中,还是要不断充实自己的知识金库,只有坚实的理论基础才能在进行实践时有条不紊。
通过这次设计,小组成员了解并掌握了传感器的基本理论知识,更深入的掌握单片机的开发应用和编程控制。
为以后从事单片机软硬件产品的设计开发、打下了良好的基础,树立独立从事产品研发的信心,并在这种能力上得到了比较充分的锻炼。
且我深刻的认识到团队的协作真的很重要,只有我们分工明确,互相监督,共同讨论,才有可能圆满的完成这项设计。
当然周围人的帮助也很重要,感谢一直帮助我们答疑解惑的老师和同学,有了你们,才有了我们这次实验的成功。