基于51单片机的自动巡线避障小车文档格式.docx
《基于51单片机的自动巡线避障小车文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的自动巡线避障小车文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
致12
附录113
附录213
外文页20
基于单片机的智能小车的设计
摘要本文介绍了基于STC89C52单片机的智能小车的设计与实现。
小车主要能够识别黑线并检测障碍物从而实现在固定跑道行驶并且可自动避障。
小车以STC89C52单片机控制器;
采用八路红外传感器与其处理模块实现对黑线与障碍物的检测;
通过单片机产生PWM波并通过L298N来对小车的方向和速度进行控制。
关键字STC89C52单片机红外传感器PWML298N
第一章引言
社会的发展,科技的进步,使得人们对生活中的很多事物都提出了更高的要求,就像人们自己走累了便想到了坐车,所以马车出现了;
而马车已经满足不了人们对速度的追求的时候,便又发明了汽车,所以科技创新是基于人们的需要而出现的;
那么到了现在这个普通汽车已经很普遍的掌控在人们手中的时候,一个新的概念便被提了出来,它就是智能车。
其实,智能车研究最早都是在一些科技发达的国家进行的,所以比较早接触智能车领域的一些国家已经对智能车辆进入了深入、系统、大规模的研究阶段[1]。
我国智能车的研究起步较晚,所以很多还集中在某个单项技术的研究上,不过对于智能车技术的探索却如雨后春笋;
各种智能车大赛层出不穷,各高校与研究机构也纷纷加入智能车的研究行列[2]。
本设计就是根据前人在智能小车的设计的基础上对其进行的又一次全新的探索。
本车的设计充分考虑了成本与性能综合,它以STC89C52单片机为核心,采用了大扭力的四驱小车底盘,使小车具有充足的动力;
除此外小车安装了八路红外传感器用来检测黑线和障碍物,所以小车具有较好的反应速度与检测精度。
第二章方案说明
2.1、方案论证
(1)控制系统
方案一:
采用MC9S12DG128单片机,该单片机以运算速度很快的CPU12核为核心的单片机,经过锁相环后,时钟频率可达到40MHz,部Flash高至128KB,拥有2组各8路10位A/D、16路I/O口,有功能强大的8位PWM输出共8路,以与8路16位增强型定时器(ECT),相比STC89C52单片机它编程更加简单,反应速度快;
但是成本较高且短时间不易掌握。
方案二:
采用STC89C52单片机,该单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口[3]。
其完全可以满足本设计对小车功能的要求,并且价格便宜;
所以本设计最终选用STC89C52单片机作为其控制芯片。
(2)避障与寻线传感器
方案一:
采用US-100超声波测距模块,该模块可实现2cm~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入围,静态工作电流2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,带看门狗,工作稳定可靠且方向性好但其近距离反射时干扰较大。
采用八路红外对管与处理模块,该模块可工作在3.3到5V电压下检测距离在1-6厘米,采用多圈式电阻调节检测距离,且尺寸较小可方便的搭载在小车上,同时其平均价格要比US-100要低;
其八路的传感器可分别用作测距与检测黑线;
综合上述考虑,本设计采用八路红外对管作为其避障与寻线传感器。
2.2、总体设计方案概述
图1总体设计框图
本设计以STC89C52单片机系统为控制中心,通过八路红外传感器模块中的两路传感器检测障碍物,四路传感器检测黑线,检测障碍物的两路传感器分别分布在车头的两端,使其能够检测车前较大围的障碍物,尽量减小检测盲区;
检测黑线的四路传感器分别分布在小车的四角,从而能够保证小车在跑道行驶。
传感器在接通电源后会不断的发送和接收红外线,接收到的信号经过LM324进行放大然后由74HC14D施密特触发器转换成数字信号输出,而当单片机检测到需要转向的传感器信号时,单片机通过改变PWM波的占空比来调整小车两侧的电机转速,从而使其两侧轮产生速度差,以实现小车的转向。
避障:
在小车行驶过程中,若左侧传感器检测到障碍物而右侧传感器未检测到,则小车首先后退之后向右转;
同理,若右侧检测到而左侧未检测到,小车先后退之后左转;
如果左右均检测到默认小车先后退之后右转。
检测黑线:
安装在小车四角的红外传感器负责检测黑线,由于小车是向前行驶所以最先驶出黑线的应该是小车的前端,当左前端传感器检测到黑线时,向单片机发送信号,小车右转;
当右前端传感器检测到黑线时,小车左转;
当左后端检测到黑线而左前端未检测到时小车先右转再左转,当右后端检测到黑线而左前端未检测到时先左转后右转,当前端两传感器同时检测到黑线时小车先后退之后左转。
控制逻辑见表1
表1
检测
检测物
检测到
未检测到
障碍物
1
黑线
PWM:
脉冲宽度调制(PWM),简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,此处我们主要通过单片机输出PWM波同时通过调节其占空比来实现对小车的控制。
第三章硬件电路设计
3.1、主控电路
本模块主要是采集信号并进行分析,同时输出PWM波控制电机速度,从而控制小车前进转弯等动作。
其中,此处采用STC89C52单片机作为主控芯片,由9—12V直流电通过78M05稳压芯片后进行供电;
单片机读写口连接了MAX232芯片,并焊接了串口接口,使其能够直接使用USB转串口线下载程序;
除此之外,单片机引脚全部通过排针引出,使得此电路连接其他模块更加方便。
复位与时钟电路分别见图2和图3,单片机引脚电路见附录1
图3时钟电路
图2复位电路
3.1.1、L7805稳压器
L7805是我们最常用到的稳压芯片,本设计中采用7节5号干电池进行供电,电容C2、C3对输入到L7805前的直流电进行滤波,之后输入到L7805,经其稳压后输出5V直流电,给单片机供电。
如图4
图4稳压电路
3.1.2、MAX232芯片简介
MAX232芯片是美信(MAXIM)公司专门为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电;
TTL/CMOS数据从T1IN、T2IN输入,转换成RS-232数据后从T1OUT、T2OUT送到电脑DB9插头;
DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输入到单片机的RXD、TXD口;
此处MAX232主要在下载程序时对由串口发出来的信号进行转换。
其电路如图5
3.2、八路红外传感器模块
红外线在不同颜色的物体表面具有不同的反射性质,所以我们可以利用红外对管对黑线与障碍物进行检测;
此模块拥有两个LM324放大器和两个74HC14D,当红外线在不同颜色物体上的反射光被接收管接收到时会产生不同幅度的电压,经由模块的LM324芯片进行信号放大,之后输入到74HC14D进行高低电平的转换。
小车在行驶过程中红外管不断地向外发射红外线,当红外光遇到白色地面时发生漫发射,反射光被接收管接收,模块输出低电平;
如果遇到黑线则红外线被吸收,接收管接收不到信号,此时模块输出高电平;
单片机通过程序控制不断检测模块输出引脚的高低电平从而实现信号的检测。
小车的避障原理与此类似,当红外管不断发出红外线,而在距小车前方6cm无障碍物时,红外线不发生反射,此时接收管接收不到反射光,模块输出低电平;
当小车前方6cm有障碍物时,红外管发出的红外线将会被反射回来,接收管接受到反射光,模块输出高电平。
3.2.1、LM324简介
LM324部包括有两个独立的、高增益、部频率补偿的运算放大器,适合于电源电压围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。
它的使用围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
3.2.2、74HC14D简介
74HC14D是6路施密特触发器件,含6个独立的出发倒相器,在正逻辑中它们执行波形整形和倒相功能;
它也是5V电源供电且不需要外围元件。
图5TTL转换电路
3.3、L298N电机驱动模块
图6电机控制电路[7]
该模块采用了L298N双H桥直流电机驱动芯片,驱动电机部分VIN采用+9V直流电源供电,同时模块上安装了L78M05稳压器对vin的输入进行稳压,逻辑部分VCC采用+5V供电,小车运行时通过单片机向该模块1、2、3、4脚输入控制信息来控制小车电机的转速。
其电路如图6、7、8
图8接口电路
图7稳压电路
3.3.1、L298N简介
L298N部包含4通道逻辑驱动电路。
可以方便的驱动两个直流电机,或一个两相步进电机。
输出电压最高可达50V,可以直接通过电源来调节输出电压;
用单片机的IO口提供信号;
而且电路简单,使用比较方便。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压围VIH为+2.5~46V。
输出电流可达2A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机。
控制逻辑见表2[8]
电机
旋转方式
控制端IN1
控制端IN2
控制端IN3
控制端IN4
输入PWM信号改变脉宽可调速
调速端A
调速端B
M1
正转
/
反转
停止
M2
3.4、机械部分
小车采用了四个直流电机为其提供动力,这使其具有较大动力,可以在较大的坡道上行驶;
同时,小车的四轮底盘设计,使得小车的直线行驶性能较强,不会出现方向跑偏的现象,同时转向时的方向感较好;
小车的电路部分均用铜柱与螺丝固定在底盘上,使其具有很好的稳定性;
除此之外,在接线方面,各模块之间均采用杜邦线进行连接,主控板上焊接了单片机插座,这些为小车提供了充足的再开发空间。
第四章软件系统设计
4.1、程序流程图如图9
4.2、程序设计方案
本系统编程部分采用C语言编写完成,应用模块化的设计方法,各子程序做为实现各部分功能和过程,通过主程序不断对子程序的调用完成PWM脉宽控制、延时以与电机转动方向控制等部分的设计。
单片机资源分配如下表3:
表3
P1.0
EN1
P1.2
左下方传感器
P2.0
左电机端口2
P2.2
右电机端口2
P2.6
右前方传感器
P1.1
EN2
P1.4
右下方传感器
P2.1
左电机端口1
P2.3
右电机端口1
P2.7
左前方传感器
PWM脉宽控制:
本设计中采用定时器0产生定时中断来控制P1.0与P1.1的输出从而生成PWM波。
中断程序如下:
voidtime0(void)interrupt1
{
i++;
j++;
if(i<
=pro_right){en1=1;
}
elseen1=0;
if(i==40){en1=~en1;
i=0;
}
if(j<
=pro_left){en2=1;
elseen2=0;
if(j==40){en2=~en2;
j=0;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
②左右转向子程序:
通过改变左右PWM波的占空比,来实现电机的速度控制;
当小车需要左转弯时,将控制左侧电机的PWM波占空比设置为0,右侧设置为20;
当小车需要右转时则相反。
左转弯子程序:
voidturn_left(){
pro_right=0;
pro_left=20;
left1=1;
left2=0;
right1=1;
right2=0;
右转弯子程序:
voidturn_right()
pro_right=40;
pro_left=0;
小车在遇到障碍物时将首先运行后退程序,之后转向;
后退子程序是通过改变电机正反转控制位而实现的。
程序如下:
voidturn_back()
left1=0;
left2=1;
right1=0;
right2=1;
pro_right=20;
第五章结束语
本系统采用MSC-51系列单片机STC89C52、L298N电机控制芯片和红外传感器来设计智能小车,实现了小车的自动避障与检测黑线。
系统不足之处为避障的检测距离较短。
这是由于所选红外传感器的检测距离所限,若要进行提高需更换检测距离更远的传感器即可;
除此之外,可见光对于本系统也有影响,不过一般影响不大,但是若要精确的采集数据,可以利用滤波器将红外光之外的其他频率的光线滤除。
参考文献:
[1]徐友春,王荣本,世界智能车辆近况综述,汽车工程[J],Vol.23,No.5,2001.10
[2]国防科大研制出第四代无人驾驶汽车,计算机自动测量与控制[J]第8卷,p22
[3]郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展全攻略[M].:
电子工业,2009
[4]蔡美琴MCS-51系列单片机系统与其应用[M].:
高等教育,2002
[5]建华,亮单片机应用系统设计与产品开发[M].:
人民邮电2004
[6]胡汉才,单片机原理与接口技术[M].:
清华大学,1996
[7]童诗白,华成,模拟电子技术基础(第四版)[M].高等教育,2006.5
[8]阎石.数字电子技术基础(第五版)[M].:
高等教育,2005
[9]
致
历时三个月的毕业设计已经告一段落。
经过自己不断的搜索努力以与老师的耐心指导和热情帮助,本设计已经基本完成。
在这个过程中老师以与曾做过此类设计的同学给予了我很大的帮助,给我提供了大量的硬件和软件资料,也给我的设计提出了宝贵的意见和建议。
在此,对大家表示衷心的感!
这次设计不仅是对我们大学四年专业知识的一次集中地检验,同时也为我们提供了一个进入职场前的实战机会;
通过这次在老师指导下做设计的机会,我对于技术实践方面有了更深刻的认识,也进一步夯实了所学的专业知识。
虽然在设计中对于知识的运用和衔接还不够熟练。
但是我将在以后的工作和学习中继续努力、不断完善。
这三个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。
最后,再次向给予我指导和帮助的老师和各位同学表示最诚挚的意!
附录1:
附录2:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharpro_left=35,pro_right=35,i,j;
//左右占空比标志
sbitleft1=P2^1;
sbitleft2=P2^0;
sbitright1=P2^3;
sbitright2=P2^2;
sbitpleft=P2^7;
sbitpright=P2^6;
sbiten1=P1^0;
sbiten2=P1^1;
//循迹口三个红外传感器
sbitleft_red=P1^2;
//白线位置
sbitright_red=P1^4;
voiddelay(uintz)
uchari;
while(z--)
{for(i=0;
i<
121;
i++);
voidinit()
left_red=0;
right_red=0;
TMOD=0X01;
EA=1;
ET0=1;
TR0=1;
en1=1;
en2=1;
voidstraight()//走直线函数
voidturn_left()//左转弯函数
voidturn_right()//右转弯函数
voidturn_back()//后退(反转)函数
voidinfrared()//循迹和避障
{
ucharflag;
if((pright==1)||(pleft==1))
if((left_red==1)&
(right_red==0))
{flag=1;
else
if((right_red==1)&
(left_red==0))
{flag=2;
if((left_red==0)&
{flag=3;
else{flag=0;
elseif((pright==0)&
(pleft==1))
{flag=4;
elseif((pright==1)&
(pleft==0))
{flag=5;
{flag=6;
else{flag=0;
switch(flag)
{
case0:
straight();
break;
case1:
turn_right();
delay(1000);
case2:
turn_left();
case3:
case4:
turn_back();
delay(1000);
turn_left();
break;
case5:
turn_right();
case6:
default:
}
main()
init();
delay
(1);
while
(1)
infrared();
ThedesignofsmartcardesignedbasedontheSTC89C52
xialongweiDirectedByJiangLifei
AbstractThisarticleintroducedasmartcardesignedbasedontheSTC89C52.Thecariscapableofidentifyingblackandobstacle,soitcanruninafixedareaandautomaticobstacleavoidance.ThecartakeSTC89C52asit’scontroller;
thesixinfraredsensorsandtheirprocessingmodulesmakeitcanidentifytheblacklineandobstacle;
Thecarcanchangeit’sdirectionandspeedbythesingle-chipgeneratedPWMwaveandL298N.
KeywordsSTC89C52SinglechipmicrocomputerInfraredsensorPWML298N.