基于单片机的智能避障小车设计.docx
- 文档编号:3944697
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:28
- 大小:369.64KB
基于单片机的智能避障小车设计.docx
《基于单片机的智能避障小车设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能避障小车设计.docx(28页珍藏版)》请在冰点文库上搜索。
基于单片机的智能避障小车设计
基于单片机的智能避障小车设计
摘要
当今世界,随着汽车工业的快速发展,关于汽车的研究也越来越受到人们的关注。
从20世纪70年代,美欧等发达国家开始进行无人驾驶汽车的研究,我国从上世纪80年代开始着手无人驾驶汽车的研制开发,虽与国外相比还有一些距离,但目前也取得了阶段性成果。
智能汽车概念的提出给汽车产业带来机遇也带了挑战。
汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于单片机的智能小车的避障研究。
我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的结果,在这种情况下研究智能避障小车的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。
该设计利用单片机STC89C52RC作为主控芯片,该芯片是一种高速、低功耗、抗干扰能力强的芯片,其最高时钟工作频率为48MHz,用户应用程序空间为8K。
能够满足程序空间需要。
驱动采用L298N驱动芯片,它是一种双全桥步进电机专用芯片,通过对其输入端的控制可以实现小车的启动、转向、停止等动作。
为节省成本,小车由两个直流减速电机加一个万向轮构成,并采用后轮驱动。
本文首先介绍了智能车的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计实物图,及完整的C语言程序。
关键词:
单片机,超声波,直流减速电机,避障小车
DesignofintelligenceobstacleavoidancecarbasedonMCU
Abstract
Intoday'sworld,withtherapiddevelopmentofindustry,researchaboutthecarisalsomoreandmoreattentionbypeople.Fromthe1970s,thedevelopedcountriessuchastheusandEuropebeganthedriverlesscarsresearch,ourcountryfromthe1980sbegantheresearchanddevelopmentofdriverlesscars,althoughcomparedwithforeigncountriesandsomedistance,butnowalsomadesomeprogress.Smartcarstotheconceptoftheautoindustryhasbroughtwithitachancechallenge.Thecarwillbethefutureoftheautoindustryintelligentdevelopmenttendency,inthiscontext,wecarriedoutbasedonMCUintelligenceobstacleavoidanceofthecar.Chinaasaworldpower,inthehigh-techfieldsmustalsoholdposition,thefutureoftheautoindustryistheintelligentaninevitableresult,inthiscasestudyintelligenceobstacleavoidanceofcarapplicationhasfar-reachingsignificance,thiswilltoChina'sfutureintheworldofintelligentvehicleresearchhigh-techfieldstooktheleadhasanimportantrole.
ThisdesignusingsinglechipcomputerchipSTC89C52RCasthemaster,thechipisahighspeed,lowpowerconsumption,stronganti-interferenceabilitychip,themaximumclockfrequencyofthework48MHz,userapplicationspacefor8K.Canmeettheprogramspaceneeds.ThedriverL298Ndrivechip,itisakindofsteppingmotorandproperbridgethespecialchip,throughitscontrolcanberealizedattheinputofthecartostart,stop,suchaction.Tosavecosts,thecarslowdownbytwodcmotorandauniversalwheelstructure,andtherearwheeldrive.
Thispaperfirstintroducedthesmartcarprospect,thenintroducesthedesignideaofthesubject,eachmodulecircuitanditscircuitprincipleofchoice,andfinallytothistopicdesignprocessaresummarizedandprospectwitheachmoduleofthecircuitprinciplediagram,andthisdesignrealfigure,andcompleteClanguageprogram
Keywords:
MCU,ultrasonicwave,dcmotorandobstacleavoidancecar
引言
随着汽车避障技术的广泛应用,智能车的发展已成为未来汽车发展的一个方向,开发一种无需驾驶员的智能型汽车的任务,已经被社会所关注。
利用避障技术,汽车在行驶中能够自动转向刹车和换档,因此车上无需驾驶员,乘车人可以随心所欲地谈话、读书、工作、娱乐,车内成为一个充满乐趣的生活空间。
所以没有驾照的人也可以拥有自己的车。
智能小车是一个集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统,随着计算机科学的发展,可以通过单片机控制来实现对其行驶方向、启动、停止以及速度的控制,无需人工干涉,操作人员可以通过修改智能小车的控制程序来改变它的行驶方式。
因此智能避障车可以解决一些特殊环境下人力无法完成的任务。
该课题所设计利的用单片机控制的壁障小车,体积不大,方便携带。
但由于知识水平及时间有限,本课题研究智能小车的一个方面即避障。
系统采用单片机为控制核心,利用自制小车或玩具小车进行小车的模拟,采用超声波避障模块进行障碍物的检测。
单片机控制避障模块发射和接收,通过相应的程序处理,判断障碍物的位置。
根据检测情况单片机控制电机驱动模块,控制小车电机的正反转实现小车的转向,启动等相应动作,来实现避开障碍物,为了降低了成本,小车是自己组装的。
软件采用所学的C语言来实现,实用性大。
第一章总体设计方案
§1.1设计要求
1>在小车行驶过程中,50ms启动一次超波模块,对前方路况进行检测
2>当障碍物小于15cm时,小车自动左转90度
3>当小车转过90度后,对前方道路再次检测,若无障碍,向前行驶。
如果存在障碍物且小于15cm,小车右转180度,并再次检测前方路况,若无障碍物,向前行驶,有障碍物且距离小于15cm,小车向右转90度并向前行驶。
§1.2系统设计方案
根据设计要求,为了便于调试和改进,采用模块化设计。
系统可分为:
微控制器、避障模块、驱动模块、电源模块、小车模块。
其基本框图如下:
图1.1系统框图
§1.3总体设计
基于单片机STC89C52RC设计的智能避障小车,本设计需提供+12V和+5V电源,DC+12V由市电直接转化,DC+5CV由直流+12V经7805转换得到。
为单片机及其他电路提供工作电压,直流12V主要为电机提供驱动电压。
超声波避障模块,采用购买的现成的超生波发射接收模块,通过单片机控制超声波模块去小车行驶道路上的障碍物进行检测,然后单片机通过处理反馈的信息,判断障碍物的距离,进而发出指令控制驱动模块,控制小车实现转向,达到避障的目的。
制作该产品用到的元器件都是以前学习或实训中用到过的元器件,对元器件性能及使用方法有一定的了解,可以熟悉运用,而且有效节省了硬件成本,又能实现预定目标。
该设计有很大的实用价值。
系统整体框图如下图所示:
图1.2整体设计框图
§1.4功能说明
本设计主控芯片采用51芯片,负责传感器的状态,并向电机驱动模块发出动作指令。
复位采用手动复位。
电源模块有市电转出+12V,再将+12V转换成+5V提供给单片机及其他模块,+12V主要为驱动电机提供电源。
避障模块采用购买的成品,该模块在单片机的控制下对小车前方的路况进行检查,并将检测信息反馈给单片机,单片机经过处理反馈回来的信息,发出相应的指令控制驱动模块,从而控制小车做出相应的动作,达到避障的目的。
第二章硬件的选择与组成
§2.1单片机的选择
方案一:
采用凌阳16位单片机作为核心,内置2K字静态内存,32K字闪存(FLASH),2个16位可编程定时器/计数器,32个通用I/O口,14个中断源。
该芯片具有体积小、集成度高、可靠性好且易于扩展,具有较强的中断处理能力,低功耗、低电压。
完全能够满足设计要求,但该芯片价格昂贵,制作成本高。
方案二:
采用单片机STC89C52RC为核心,8K的内部程序存储器(ROM),512个内部数据存储器(RAM),4个寄存器区,32个通用I/O端口,2个16位的定时、计数器,有ISP功能,能用于下载线进行的在线编程,设有4个中断源,能够完成设计要求,且该芯片价格便宜,采用该芯片能够达到设计要求,且平时实训中一直采用该芯片,对其比较熟悉,控制起来相对简单。
比较以上两种单片机,综合考虑设计要求及成本,该设计选用STC89C52作为主控芯片。
单片机用的是STC89C52RC,该芯片存储容量大,体积小。
单片机最小系统:
电源部分、晶振部分、复位电路和31号脚接高电平。
单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行
接口和中断系统等几个大单元及数据总线地址总线和控制总线等三大总线。
9号复位信号脚,时钟电器开始工作,复位端会出现24个时钟周期以上的高电平,系统即初始复位。
其复位方式一般为手动复位,VCC断电期间,此引脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
31脚程序存储器的内外部选通线,内置有8kb的程序存储器,当EA为高电平并且程序地址小于8kb时,读取内部程序存储器指令数据。
所以该设计31脚应该接高电平。
51单片机内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,18、19脚就接电容和晶振电路。
单片机40脚接VCC,可以提供电源,20脚接地。
2.1最小系统电路
为方便端口的选择,单片机的P0口外界有上拉电阻,且32个通用I/O端口都接有排针,以方便使用及更换控制端口。
引脚功能表
/EA
访问程序储存控制信号
RST
复位信号
XTAL1和XTAL2
外接晶振引脚
VCC
+5V电源
Vss
底线
P0.0~P0.3
接驱动控制端
P2.2
超声波模块的ECHO引脚
P2.3
超声波模块的TRIG引脚
§2.2避障模块的选择
方案一:
采用红外避障,红外避障的基本原理是发光管发出红外光,光敏接收管接收前方物体反射光,据此判断前方是否有障碍物。
根据反射光的强弱可以判断物体的距离,原理是接收管接收的光强随反射物体的距离而变化,距离近则反射光强,距离远则反射光弱。
目前使用较多是一种传感器——红外开关,它的发射频率一般为38KHz左右,探测距离比较短,且易受外界干扰。
方案二:
超声波避障,基本原理是通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道障碍物的距离。
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=340t/2)优点:
超声波检测障碍物的精度高,反映灵敏,受外界干扰小,计算简单、易于做到实时控制。
综合各方面考虑,本设计采用超声波避障。
该部分采用购买HC-SR04超声波测距模块,该模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达到3cm,模块包括超生波发射器,接收器与控制电路。
工作原理:
1)采用IO口TRIG触发测距,给至少给10us的高电平
2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平时间*声速(340m/s))/2;
如图所示,TRIG是触发控制信号输入端,接单片机的P2.3引脚,ECHO回响信号输出端接P2.2引脚。
图2.2超声波模块接线图
§2.3驱动模块的选择
方案一:
采用单片机的I/O口直接驱动电机,这样可以节省制作成本,但单片机驱动能力有限。
方案二:
驱动采用L298N驱动芯片,该芯片是双全桥步进电机专用驱动芯片,内涵4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥驱动器,接收标准TTL逻辑信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,驱动能力强,故采用该芯片设计驱动电路。
综合考虑,本设计采用L289N来设计驱动电路。
驱动采用L298N驱动芯片,该芯片是双全桥步进电机专用驱动芯片,内涵4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥驱动器,接收标准TTL逻辑信号,可驱动46V、2A以下的步进电机,且可以直接透
图2.3L298N硬件结构图
过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信,第1脚和第15脚可与电流侦测用电阻连接来控制负载的电路。
OUTPUT1、OUTPUT2和OUTPUT3、OUTPUT4之间分别接2个直流电机;INPUT1~INPUT4输入控制电位来控制电机的正反转;Enable则控制电机停转。
图2.4驱动电路
驱动电路中,EN1、EN2直接接高电平,1A1、1A2接单片机的P1.0和P1.1口控制电机M1,2A1、2A2接P1.2和P1.3口控制电机M2,1Y1和1Y2接电机M1,2Y1和2Y2接电机M2。
有续流二极管构成的“H桥”,作为L298N的辅助电路来实现直流减速电机的控制。
在这里面,二极管起到了续流的作用,迅速释放电机在停止过程中产生的反电动势,对电机进行保护。
§2.4电源方案
图2.5电源电路
电源供电部分,我使用了实训时自制的直流可调稳压电源,提供直流+12V电压,运用三线稳压器件7805,输出+5V电源。
由于7805简单易用、价格低廉,在大多电路中充分采用。
通过电解电容的隔离滤波作用,电源部分可输出+5V的直流电源。
电路图如上所示。
第三章软件程序流程图
§3.1主流程图
图3.1主流程图
如上图所示,在程序设计中,为了便于调试,方便找到程序问题的所在,程序采用在主函数中调用各个子函数的形式。
当启动一次超声波测距程序时,单片机会根据检测反馈回来的信息进行相应的处理,进而判断是否有障碍物,当障碍物的距离小于设定的安全距离时,单片机会发出相应的指令,控制驱动电路,对小车的行驶方向进行调整。
当小车前方无障碍物时,主程序会在一定的时间内自动启动一次超生波测距程序,若无障碍继续按原来的方向行驶。
如此循环,达到避障的目的。
§3.2模块程序设计说明
运用C语言编写程序,因为C语言是我所学专业的一门课程,并且在平时的制作中多次使用该语言,因此采用该语言编程相对容易一些。
在程序中我采用了两个计数器溢出中断,其中一个是T0计数器溢出中断,是用来计算障碍物的距离,如果障碍物的距离超出测距范围,利用该中断设置标志位。
另一个是T1计数器溢出中断,我利用该中断控制超声波发射的时间间隔,即对路面障碍物检测的时间间隔,来适时判断路面情况,改变小车的行驶方向,达到小车躲避行驶过程中遇到的障碍物。
§3.3超声波避障程序
3.2超声波时序图
以上时序图表明,只需提供一个10us以上的脉冲信号,该模块内部将发出8个40KHz周期电平并检测回波。
一旦检测到有回波信号则输出回响信号。
回响信号的脉冲宽度与所测的距离成正比。
由此通过发射信号到接收到回响信号的时间间隔可以计算得到距离。
具体程序如下:
StartModule()//发射一次超声波
{
TRIG=1;//
DelayUs2x(8);//延时20us
TRIG=0;
while(!
RX);//当RX为零时等待
TR0=1;//开启计数
while(RX);//当RX为1计数并等待
TR0=0;//关闭计数T0
Count();//计算
}
图3.3超声波检测流程图
§4.2驱动模块程序
L298N正反转对应输入控制端一览表
电机
旋转方式
控制端IN1
控制端IN2
控制端IN3
控制端IN4
输入PWM脉冲信号,改变脉宽可调速
ENA
ENB
M1
正转
高
低
高
反转
低
高
高
停止
低
低
高
M2
正转
高
低
高
反转
低
高
高
停止
低
低
高
图3.4驱动程序流程图
如图3.3所示,当在主程序中当计数器T1溢出中断响应时,会首先判断障碍物的距离是否小于设定的安全距离(被设计中为15cm),若大于安全距离,小车继续按原来的方向行驶,若小于安全距离,小车首先左转90度,停下并启动超声波避障程序再次对前方的路况进行障碍有无的检测,若无障碍物或有障碍但大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时,小车向右旋转180度,停止并再次启动超生波避障程序,对前方的路况进行检测,若无障碍物或有障碍物但距离大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时。
小车向右转90度,沿该方向行驶。
如此循环实现避障。
第四章电路调试
§4.1硬件调试
在每个元件在没焊上去时,先用万用表检测,它们是不是都正常的,像LED灯,有些可能是有损坏的。
其中,L298N在焊接时要特别的注意,由于元件有15个脚,且分成两排,管脚相互交错,给焊接造成一定的难度,因此在焊接前要对管脚进行一些处理,以方便焊接。
由于L298N管脚排列的特殊性,给PCB布图也带了一定的难度,自己水平有限未能布成单面板,有些遗憾。
该芯片价格昂贵,焊接时要特别注意管脚的连线一定要正确,否则会造成经济损失。
焊接完成后,我首先用万用表对线路,进行了检测,发现有漏焊的地方,改正后再次按原理图进行检测,直到一切正常,我对该模块进行了通电测试,经测试各功能正常,至此该模块电路制作完成。
单片机最小系统的焊接相对于驱动电路的焊接比较容易,以为在实训中多次焊接过该电路,但我还是很细心的按电路设计流程,画原理图、PCB版图、焊接电路、检测电路到通电测试。
完成了该最小系统的设计。
该设计过程中,要注意谐振电容的选择,焊接前一定要对该电容进行检测,确保谐振电容完好,否则将导致晶振不起振,单片机无法正常工作,振荡器输入分别由引脚18和引脚19来完成振荡部分。
51单片机的一个机器周期含有6个状态周期,而每个状态周期为2个振荡器周期,因此一个机器周期共有12个振荡周期,12MHz的振荡频率,一个振荡器周期为1/12微秒,一个机器周期为1微秒。
在硬件检测在遇到的问题有:
1、驱动板焊接走线有遗漏,用万用表的蜂鸣档,对电路进行全面检测,发现有2出走线没有连接,连接后,检测正常。
2、二极管记性接反了,驱动板中的二极管有8个,由于自己粗心,二极管有一个焊接反了,经目测发现该问题,改正后检测正常。
3、发光二极管损坏。
再给最小系统版通电检测时发现,电源指示二极管不亮,检测发现该发光二极管已损坏,更换后正常。
4、谐振电容有一个损坏,在排除发光二极管故障后,再次通电检测,发现最小系统不能正常工作,检测发现晶振两脚无电压,晶振未启振。
怀疑谐振电容有问题,卸下后检测发现,其中一个电容是坏的,更换该电容后,再次通电测试发现,晶振管脚有电压,烧入测试程序,工作正常,至此最小系统制作完成。
§4.2软件调试
软件调试是制作该课题一个难点,在调试采用分模块调试,首先调试超声波避障模块,该部分的那点是控制超声波的发射有接受,并要计算出障碍物的距离,起初我知识按超声波工作时序图进行编写,但总由于自己理解存在一定的错误,程序始终无法达到预期的目标,后来通过翻阅有关资料,在程序中加入了计数器溢出中断,经过多次调试,最终成功控制住了该模块。
其次开始调试驱动模块,该模块是该课题的核心,起初采用switch语句进行编写,但实际测试效果不能达到控制小车转向的效果。
多次尝试失败后,改用了if-else语句进行驱动程序的编写,由于是调试只写了实现左转的程序,烧入单片机后,实现了预想中的效果,接下来又加入右转的程序,再次调试发现,转向时间过长,本来要转90的,实际旋转了120度,不过让我高兴的是它能够转向了。
出现的问题只是延时的地方过长,反复修改延时的时间,最终达到了预想中的效果。
§4.3系统联调
将硬件调试和软件调试相结合,在电路原理图上先检测电路有没有短接,断路现象,可以用万用表检测电路中的电流、电压是否符合。
上电后,观察各个电源指示灯是否正常,用万用表检测各个主要测试点,看各个测试点电压是否正常。
正常后,将所编写的程序烧入单片机最小系统中,进行系统联调将,看是否能够达到预期效果。
在调试中发现,避障程序能够检测到障碍物的距离,但不能有效避开障碍物,仔细查看程序发现,避障程序再出里小车转向部分存在问题,进行修改后,再次进行系统联调,发现小车能避开障碍物,但仍不能达到预想的效果。
再次修改,再次系统联调,如此往复直至达到预期的效果。
§4.4实现功能
本设计,以单片机STC89C52RC为核心实现小车避障。
小车在行驶过程中自动检测障碍物,当障碍物的距离小于小车的安全行驶距离时,小车会首先向左转向90度,停止并再次启动超声波检测前方是否有障碍物,如果没有障碍物,小车沿该方向前进,若有障碍且障碍物距离小于安全距离,小车
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能 小车 设计