智能壁障小车讲解.docx
《智能壁障小车讲解.docx》由会员分享,可在线阅读,更多相关《智能壁障小车讲解.docx(18页珍藏版)》请在冰豆网上搜索。
智能壁障小车讲解
西安郵電學院
测控仪器课程设计报告书
系部名称
:
学生姓名
:
专业名称
:
班级
:
时间
:
2011年9月19日至
2011年9月30日
(一)前沿:
智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。
电动智能车就是其中的一个体现。
本次设计的简易避障智能车,采用AT89C52单片机作为小车的检测和控制核心;采用反射型光电探测器进行寻迹操作,利用光电传感器检测道路上的障碍,从而把感应到的信号送给单片机,控制智能小车的自动避障,并能发出声信息
(二)题目要求:
以红外传感器st188作为小车的测距传感器,进行障碍物探测。
当发现障碍物时,给出报警信号(蜂鸣器响),并自动适当改变行进方向继续前行
(三)硬件设计
本次设计的目的是制作一个能自动避障的智能小车,采用89C52单片机作为主控制器,重点在于控制电机来实现所要求的功能,所以要对传感器信号进行分析处理。
四轮小车,通过电机控制一个轮子向前转,一个轮子停止转动。
从而达到转弯的目的。
(1)ST188
ST188是红外收发一体的器件,发射管发射出红外光线,接收管就可以根据接收的红外光线的强弱,感知附近是否有障碍物。
AK端是红外发射端,如有障碍物通过漫反射反射回红外线由CE端接受E端输出高电平
外形尺寸:
图表1
图表2
原理图:
图表3
(2)LM324n
ST188E端输出信号与基准电压进行比较,把模拟信号转换为数字信号,供给单片机处理。
基准电压由电阻串联分压提供的3.5v电压输入。
图表4
(注:
LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如图所示。
它的内部包含四组完全相同的运算放大器,除电源公用外,四组运放电路相互独立。
)
(3)电机驱动芯片:
L298N
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。
是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
其引脚排列如下图所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。
L298可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。
5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接到控制使能端,控制电机的停转。
也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。
小车都采用L298N芯片驱动电机,从而控制小车在转弯时的方向与角度问题。
具体解决方案是,当小车在转弯时,驱动器驱动一侧电机工作,履带不动,一侧电机停止工作,从而带动小车转弯。
图表5
图表6
图1电机驱动电路
(4)主控制器介绍:
80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
1.微处理器
该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。
2.数据存储器
片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。
3.程序存储器
由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。
4.中断系统
具有5个中断源,2级中断优先权。
5.定时器/计数器
片内有2个16位的定时器/计数器,具有四种工作方式。
6.串行口
1个全双工的串行口,具有四种工作方式。
可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。
7.P1口、P2口、P3口、P4口
为4个并行8位I/O口。
8.特殊功能寄存器
共有21个,用于对片内的个功能的部件进行管理、控制、监视。
实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。
(5)报警机制当小车在行进过程中遇到障碍物时,启动蜂鸣器报警。
(6)避障过程控制:
小车在行驶过程中,如果ST188检测到有障碍物,分为两种情况:
(1)左边检测到障碍物的时候,说明小车行驶路线偏向左端,则驱动器控制右电机停止工作,左电机继续行驶,并通过一定的延时,实现右转向;
(2)检测到右边有障碍物的时候,说明小车行驶路线偏向右端,则驱动器控制左电机停止工作,右电机继续行驶,并通过一定的延时,实现左转向。
(四)总体设计
基于硬件系统分析,我们做出以下设计框图,由电源统一给各个模块供电,控制中心通过接收传感器传送过来的信息来判断路段,从而控制电机,达到控制小车的前进的目的。
图表8
软件设计方案是以上述硬件电路为基础的,包括电机控制模块、传感器模块,程序设计采用C语言编写,编程环境是集成KeilC51编译器的集成编译环境。
智能小车设计的软件结构框图如下图9所示。
图表9
ST188模块
该模块主要用来检测障碍物,ST188自带红外收发装置,检测信号通过比较器转换为数字信号后传输至主控芯片,主控芯片根据程序给出相应的应答。
如图表10连线图所示,
图表10
图表11
外部晶振模块
该晶振是作为单片机的外部时钟电路,接第18、19引脚。
图表12
信号检测模块
该系统中的信号检测模块我们采用的是ST188传感器。
ST188是一个无限红外模块,它有一个发射管(白色)和一个接收管(黑色),一般情况下接收管能收到发射管发送的红外光,但当遇到吸光介质(如黑色物体)时接收管便不能收到发射管的红外光。
由于这种现象,加上合适的硬件电路(下图3.4),我们可以引出一条信号线,当一切正常时,信号线处于一种状态,但当遇到吸光介质时信号线便处于另一种状态,利用这种不同状态的差异我们便可以通过微控制器来实现小车躲避障碍物。
图3.4是该系统中ST188应用电路图。
图3.4ST188应用电路图
(六)整体电路图
(七)软件设计
附录Ⅱ:
程序代码
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbiten1=P1^6;//左电机使能端
sbiten2=P1^7;//右电机使能端
sbitin1_1=P1^0;//L298_1的Input1*左*
sbitin1_2=P1^1;//L298_1的Input2
sbitin2_1=P1^2;//L298_2的Input1*右*
sbitin2_2=P1^3;//L298_2的Input2
sbitsign=P2^7;//主传感器信号
sbitbeep=P2^0;
sbitdeng=P2^6;
ucharnum=0;//pwm调速中断计数器
ucharPWM_left=30;//电机速度值参数:
0~100
ucharPWM_right=30;
ucharq=0;
voidrun_1();
voidgo();//前进
voidback();//后退
voidstop();//停止
voidleft();//微调左
voidright();//微调右
voidleft_90();//左转90°
voidright_90();//右转90°
voidinit();//终端初始化,定时器初始化
voiddus(uchar);//小延时
voiddelay(uint);//大延时
voidtimer0();
voidxiang();
/***************************************************************************/
voidgo()//前进
{
in1_1=1;
in1_2=0;
in2_1=1;
in2_2=0;
}
voidback()//后退
{
in1_1=0;
in1_2=1;
in2_1=0;
in2_2=1;
}
voidstop()//停止
{
in1_1=0;
in1_2=0;
in2_1=0;
in2_2=0;
}
voidleft()//微调左
{
in1_1=0;
in1_2=1;
in2_1=1;
in2_2=0;
dus(100);//更改参数可调节角度
}
voidright()//微调右
{
in1_1=1;
in1_2=0;
in2_1=0;
in2_2=1;
dus(100);//更改参数可调节角度
}
voidleft_90()//左90°
{
in1_1=0;
in1_2=0;
in2_1=1;
in2_2=0;
delay(80);//更改参数可调节角度
}
voidright_90()//右90°
{
in1_1=0;
in1_2=0;
in2_1=0;
in2_2=1;
delay(80);//更改参数可调节角度
}
voiddelay2(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************************中断初始化***********************/
voidinit()
{
TMOD=0x22;//设定T0和T1的工作模式为2
TH0=0x9b;//装入定时器的初值
TL0=0x9b;
EA=1;//开中断
ET0=1;//定时器0允许中断
TR0=1;
}
/******大延时,其中夹杂小判断函数,这样可以实现类似扫描的功能*****/
voiddelay(uinti)//大延时
{
uintj;
for(;i>0;i--)
for(j=0;j<1100;j++);
}
/************************************************************************************************************/
voiddus(uchars)//小延时
{
for(;s>0;s--);
}
/******定时器中断函数:
用于产生PWM信号***************/
voidtimer0()interrupt1/*T0中断服务程序*/
{
if(num{
en1=1;
}
else
{en1=0;/*产生电机1的PWM信号*/
}
if(num{
en2=1;
}
else
{
en2=0;/*产生电机1的PWM信号*/
}
num++;
if(num>=100)
num=0;/*1个PWM信号由100次中断产生*/
}
/*******************************避障函数************************/
voidrun_1()
{
go();
delay(10);
if(!
sign)
{
deng=1;
beep=0;
stop();
delay(50);
back();
delay(70);
right_90();
go();
delay(80);
for(;q<10;q++)
{left();
}
left_90();
go();
delay(200);
left_90();
go();
delay(80);
right_90();
go();
delay(150);
left_90();
left_90();
beep=1;
deng=0;
}
}
/***********主函数******************************/
voidmain()
{
init();
delay(50);
while
(1)
{
run_1();
}
}
小车在行驶过程中,通过外侧传感器检测是否偏转以及做出的相应的响应
本次课程设计是做一个以89C52为主控制器的自动壁障小车,由于之前对51系列单片机的开发比较熟悉,相对来说比较简单,主要设计涉及到单片机的开发,车的的组成和原理,电机与驱动,传感器知识及程序算法设计等。
我们结合相关学习知识进行总体设计,由于本次主要设计的机器人是走房间最后灭火,所以,我们使用了传感器,传感器是使用最多的,因为它就相当人的眼睛,能正确的识别道路。
在智能车的设计过程中,开始把传感器和驱动以及单片机用同一块电源,结果单片机老是复位和传感器有时只有一种电平。
最后通过分析才找出是驱动对单片机以及传感器的影响,所以把驱动电路和单片机以及传感器电路分开供电,得以把问题解决。
接着,就是电源部分,电源部分可以说是核心的核心,电源设计显得尤为重要,特别是使用电池供电的系统。
电池在充电后,电压会变的很高,额定7.2V电压冲完电电压会达到8.5V,但在使用初,电压降的会很快,对系统的稳定性造成很大威胁,所以必须使用稳压芯片,并且电池电压(正常供电时电压)至少应该比稳压芯片输出电压高2V;另外,电源部分的滤波电容也是非常重要的,一般采用10uF的电解电容和104瓷片电容构成滤波电路。
稳压芯片的采用虽然能减小电压的波动,但是并不能消除。
所以,电压的变化还是对机器人的运动有一定的影响。
此外,由于地面的摩擦、小车的惯性、机器人电机的转数差、齿轮箱与轮子的摩擦等因素,控制小车直行和转向,都经过反复的调试。
使软件适合硬件。
经过很多次的调试才得以完成。
通过这次比赛,我不仅学到的好多知识,而且锻炼了我分析问题和处理问题的能力及组织策划能力。
同时,一个人的能力及思想是有限的,团结就是力量,通过这次合作,进一步加强了我们的团队合作能力。
在这几天的课程设计当中,我们对怎么实现小车避障在网上收集了很多资料,了解了怎么去实现小车的转弯,避障,循迹等,通过此次实验我学到的不仅仅是小车避障这点知识,我对平时看到实验室的同学做得循迹小车有了深入的了解,加深了我对专业的了解,使我更加热爱这个行业。
本次课程设计我主要做的是硬件调试这块。
当凌静他们硬件电路焊接完毕之后,剩下就交给我测试了。
通过这次课程设计我体会到了硬件调试确实需要非常认真,系统不能很好工作时,要能准确迅速的发现电路中的问题。
当出现问题时,测量每一个点的电压是一种很好的方法。
在电机驱动这块,我们采用的是L298N芯片,虽然网上资料都查到了这个芯片可以很好的驱动直流电机,但是当我们完成电路之后发现电机没有反应,最后查阅相关资料才发现L298N使用时,电路设计时外围应在L298N每个输出口加上两个稳压二极管,这样才可以正常的工作。
同时应保证正确的电路连接,这些小问题都是不容忽视的。
做硬件的确实应该很仔细啊,并不是我想像的那样简单的啊。
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模具设计的每个实验细节和每个数据,都离不开老师您的细心指导。
而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。
同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。
由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。