基于51单片机的自动避障感光小车Word下载.docx
《基于51单片机的自动避障感光小车Word下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的自动避障感光小车Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
![基于51单片机的自动避障感光小车Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/93477f8a-760b-43e1-b035-23402b4027ec/93477f8a-760b-43e1-b035-23402b4027ec1.gif)
2方案设计与论证
根据要求,确定如下方案:
把买来的玩具电动车进行改装,在车上安装一个单片机最小系统,车体上安装一个避障系统和一个感光系统,通过感光系统来大致确定光源的方向,使小车自动向目标光源行进。
避障系统用来检测障碍物与小车的距离,当避障系统检测到障碍物时会向单片机发送信号,单片机控制小车执行动作,进而避开障碍物。
然后小车再次调用感光系统,如此循环直到小车到达光源前停车。
2.1主控系统
根据设计要求,此设计属于多输入量的复杂程序控制问题。
因此,拟定了以下两种方案并进行了综合的比较论证,具体如下:
方案一:
采用CPLD作为处理器。
CPLD[2]可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。
该芯片处理速度快,但本设计不需要复杂的逻辑功能,对数据的处理速度的要求也不是很高,且从使用及经济的角度考虑放弃了此方案。
方案二:
采用51单片机作为整个系统的核心,80C51单片机共包括以下几个部分[3]微处理器、程序存储器、数据存储器、定时器与计数器、串行口中、并行I/O口以及中断系统和特殊功能寄存器等,它采用特殊功能寄存器对各功能部件进行集中控制;
此外,其所构成的最小系统结构简单,且可靠性高。
用其控制行进中的小车,可实现各项要求。
所以我选定了80C51单片机作为本设计的主控核心。
51单片机[4]具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计已经足够了,综合考虑各方面,选择80C51作为主控芯片。
2.2电机驱动模块
方案一:
采用电阻网络调节电动机的分压,来实现对电机的控制。
但电阻网络只能实现有级调速,并且数字电阻器件价格都相对来说比较高。
而一般的电动机电阻分压会降低效率并且实现起来也是非常困难的。
采用PWM调速技术。
通过单片机控制调节占空比可实现电动机的精确调速,这种电路由于工作在晶体管的饱和和截止状态下,效率非常高,H型桥式电路[5]可实现对两电机的分别调速进而可实现小车的转弯。
它的工作效率高并且稳定性好。
现市面上有很多这类芯片,我选择L298N。
L298N[6]内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,可驱动46V、2A以下的电机。
图1为L298N的引脚图。
图1L298N的引脚
PWM调速技术调整连续、调速域比较大并且可以频繁的进行动作变化。
所以我们采用方案二作为电机驱动模块。
2.3电源模块
方案一:
采用实验室的电源通过稳压器供电,其优点是可稳定的提供5V电压,但占用资源相对较大,并且不能在户外使用。
采用4支1.5V电池单电源供电,但6V的电压太小不能同时给单片机与两电机供电。
方案三:
采用8支1.5V电池分别给单片机与电动机各提供6V电压,此时方案二的问题就解决了,所以方案三最合适。
2.4避障模块
采用红外传感器,目前主要采用红外反射式传感器。
红外反射式传感器[7]通过红外线的发射与接收引起电流的变化进而影响电压然后向主控系统发送信号,其优点主要是反应速度快并且电路简单,但它也具有非常严重的缺点,它受光线灰尘的影响大。
在本设计中若采用此方案则需要对障碍物做一定的规范,因此我们提出了方案二。
采用超声波传感器,由于超声波指向性强,在介质中传播距离远,能量消耗慢并且具有频率高、波长短、绕射现象小等诸多优点故而超声波已经广泛应用于社会各个行业中。
超声波传感器[7]前面的障碍物通过将超声波传感器发射端发射的超声波反射到超声波传感器的接收端,进而检测到障碍物。
由于超声波传感器对外界环境有很强的适应能力,对被测物可以精确定位并且对障碍物没有特殊要求,所以我选择方案二。
2.5感光模块
采用光敏二极管和A/D转换电路来确定目标光源的大致方向。
由于光敏二极管具有光敏特性,所以当有光照时,形成光电流,它会随光的强度的增大而增大。
它的输出是电压变化量,通过与单片机的连接,进而控制小车,确定光源的大致方向。
但是它也有严重的缺点,当光源移动时光它的反应过于敏感,所以小车不能正确判断目标光源的方向。
所以我们提出了方案二。
采用光敏电阻和电压比较器来确定目标光源的大致方向。
由于光敏电阻的阻值会随着光照强度的增大而减小,我们可以通过电压比较器转换的输出信号来控制单片机,进而小车可以自己对光源进行定位。
光敏电阻虽然不如光敏二极管灵敏,但其稳定性比光敏二极管要好很多并且经电压比较器输出后的数据线性良好,以满足设计要求。
所以我们采用方案二。
2.6自动停车模块
采用热敏电阻。
本设计采用的光源是白炽灯。
它在工作时能够产生大量的热,热敏电阻的阻值会随着离光源距离的变化而变化,当小车行进到光源前一定距离时热敏电阻上的电压会达到某个值,通过比较器控制小车靠近光源时自动停车。
但热敏电阻制作的停车模块对热不是很敏感,所以放弃此方案。
利用光敏电阻的感光效应。
将中间光敏电阻的电压值与一固定的小电压值通过电压比较器比较。
当小车离光源越近时,光敏电阻的电压值会越来越小,直到比固定电压值还小,此时电压比较器的输出会发生变化,进而通过单片机控制小车自动停车。
3硬件设计
3.1总体设计
本智能小车在后边两只轮子上分别安装一个直流电机,前边按一个万向轮,它既可以起支撑作用又对小车的转弯有一定的帮助。
调节后面两电机的转速差从而达到小车转弯的目的。
将三对超声波传感器分别安装于车体前方及车体两侧,当超声波传感器没有检测到障碍物时,小车通过光敏电阻感光来确定光源的方向,然后通过单片机控制小车向光源前进。
当车体左边的超声波传感器检测到障碍物时,单片机控制右轮停止,实现左转;
当车体右边的超声波传感器检测到障碍物时,单片机控制左轮停止,实现右转;
当车体前面的超声波传感器检测到障碍物时,单片机控制车右转。
3.2驱动电路
电机驱动一般采用H桥式驱动电路[8],L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机单片机,通过调节信号的占空比来控制两个电机的转速,驱动原理图如图2所示。
图2L298N驱动原理图
3.3超声波避障模块
超声波模块采用HC—SR04超声波模块[10],这个模块可四米以内的障碍物,测距精度非常也不错,非常适合小车的障碍物检测。
模块包括超声波发射器、接收器与控制电路产品应用领域:
机器人避障、物体测距、液位检测、公共安防、停车场检测。
测试距离=(高电平时间*声速(340m/s))/2。
此模块非常容易操作,它通过超声波的发射与接收的时间差可计算出障碍物离小车的距离,当距离小于5cm时,此时小车进入障碍区,超声波传感器向单片机发射信号,小车执行对应动作,避开障碍物。
3.4光敏电阻感光模块
在小车上安装自制的光敏电阻码盘[11]来接收白炽灯的光线,正中一个光敏电阻,在它两边60度角处各装一个光敏电阻,用黑纸裹住光敏电阻,以防外界光线干扰。
将三个光敏电阻的端电压分别接入电压比较器LM339的三个电压比较端[12],进而比较哪个光敏电阻的电压最小当正中光敏电阻的电压最小时,小车直行;
当左边光敏电阻的电压最小时,小车左拐;
当右边光敏电阻的电压最小时,小车右拐。
这样就可实现小车的自动导航。
LM339的引脚如图3所示。
图3LM339引脚
3.5停车模块
将小车正中光敏电阻的端电压与一已知小电压(此电压需要实验取得)入电压比较器的电压比较端,当小车距离白炽灯一定距离时,电压比较器的输出值[13]将会出现一个由0变为1的突变,向单片机发出信号控制小车停车。
4软件设计
4.1主程序流程图
本设计实现功能的主流程图如图4所示。
NY
Y
N
Y
图4主程序流程图
4.2避障功能设计
本设计在避障功能设计的流程图如图5所示。
开始
N
图5避障功能流程图
部分程序:
#include"
reg51.h"
typedefunsignedintuint;
typedefunsignedcharuchar;
sbitp1_0=P1^0;
//前面超声波传感器
sbitp1_1=P1^1;
//左边超声波传感器
sbitp1_2=P1^2;
//右边超声波传感器
sbitp2_0=P2^0;
//驱动电机
sbitp2_1=P2^1;
sbitp2_2=P2^2;
sbitp2_3=P2^3;
sbitena=P2^4;
sbitenb=P2^5;
voiddelay(uintcount)//延时1ms
{uintj;
while(count--!
=0)
{
for(j=0;
j<
72;
j++);
}
}
voidZhiXing()
{p2_0=0;
p2_1=1;
p2_2=0;
p2_3=1;
voidZuoZhuan()
p2_1=0;
voidYouZhuan()
p2_3=0;
voidStop()
{
p2_0=0;
voidmain()
inti;
ena=enb=1;
while
(1)
if(p1_0==0&
&
p1_1==0&
p1_2==0)
{
ZhiXing();
}
elseif(p1_0==1&
{
YouZhuan();
}
elseif(p1_0==0&
p1_1==1&
p1_2==1)
ZuoZhuan();
else
Stop();
}
4.3感光功能设计
图6感光功能流程图
感光功能设计的流程图如图6所示。
部分程序:
#include<
reg51.h>
intrins.h>
string.h>
math.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitp2_0=P2^0;
sbitp2_1=P2^1;
sbitp2_2=P2^2;
sbitp2_3=P2^3;
sbitena=P2^4;
sbitenb=P2^5;
sbitp1_3=P1^3;
sbitp1_4=P1^4;
{
uintj;
while(count--!
for(j=0;
j++)
voidhoutui()
p2_0=1;
p2_2=1;
voiddelay(intz)//延时1ms
{
inty;
while(z--)
for(y=0;
y<
120;
y++);
voidganguang(void)//感光函数
if(p1_3==1&
p1_4==0)//正中光敏电阻的电压最小,小车执行前
ZhiXing();
}
elseif(p1_3==0&
p1_4==0)//左边光敏电阻的电压最小,小车执行左转
ZuoZhuan();
elseif(p1_3==1&
p1_4==1)//右边光敏电阻的电压最小,小车执行右转
YouZhuan();
}
5系统的仿真与调试
5.1概述
仿真我们使用的是protues,并通过KeilC对C程序进行汇编,将得到的hex文件注入80C51芯片中,最终实现系统各对功能的仿真,检测设计是否达到了预期效果。
KeilC操作步骤:
首先建立工程,然后在所建工程下建立文件,具体操作:
project-newproject--file-newfile,最后在新建文件中输入程序进行编译连接,查看程序是否正确,是否生成hex文件。
操作界面如图7所示。
图7KeilC操作界面
Protues操作步骤:
打开界面,在元件库中选出所需器件,根据设计原理连接器件,然后写入由KeilC生成的hex文件,进行模拟仿真。
操作界面如图8所示
图8protues操作界面
5.2避障功能的仿真
由于超声波传感器模块给单片机的输入信号是数字信号,当进入障碍区输入1,反之输入0,所以在仿真中我采用开关来代替超声波传感器模块。
当开关闭合时没有检测到障碍,开关断开时小车进入障碍区。
避障模块的仿真图K1、K2、K3分别代表前方、左边、右边的超声波传感器模块。
当K1、K2、K3均闭合时,小车未遇到障碍物,两电机顺时针转动,小车前进,如图9;
当K1断开时,前面的超声波传感器检测到障碍物,左电机顺时针转动右电机停止,小车右转,如图10;
当K2断开时,左边的超声波传感器检测到障碍物,左电机顺时针转动右电机停止,小车右转,如图11;
当K3断开时相当于右边的超声波传感器检测到障碍物,右电机顺时针转动左电机停止,小车左转,如图12。
图9未检测到障碍物
图10前面超声波检测到障碍物
图11左边超声波传感器检测到障碍物
图12右边超声波传感器检测到障碍物
此次仿真基本达到设计要求,避障功能会最终调节小车三个超声波传感器都检测不到障碍物,然后小车前进。
5.3感光模块的仿真
由于光敏电阻的阻值会随着光照强度的增大而变小,由电压比较器原理得:
当光源位于不同的位置时,其输出信号会不同,进而可通过单片机控制电机的转动情况。
在仿真中,LDR1的入射光为4.0,,LDR2的入射光为2.0,LDR3的入射光为1.0时,表示光源在小车左边,仿真结果为右轮转动,左轮停止,小车左转,如图13所示;
当LDR1的入射光为1.0,,LDR2的入射光为2.0,LDR3的入射光为4.0时,表示光源在小车右边,仿真结果为左轮转动,右轮停止,小车右转,如图14所示;
LDR1的入射光为1.0,,LDR2的入射光为4.0,LDR3的入射光为1.0时,此时表示光源在小车正前方,仿真结果为两轮同时转动,小车前进,如图15所示。
图13光源在小车左边
图14光源在小车右边
图15光源在小车正前方
此次仿真基本达到了预期效果,光源位于不同位置时,可实现小车的自动感光,调整车头朝着光源前进。
6总结
本设计以80C51为控制核心,依靠超声波传感器来检测障碍物,通过光敏电阻罗盘来确定光源方向的避障寻光智能小车,该小车开始运动后,先通过感光系统调整车头基本对着光源,小车前进,然后当小车遇到障碍物时,小车可自动调节车上的三个超声波模块均检测不到障碍物,小车继续前进,感光与避障循环使用,直到小车走到光源前停车。
此次设计通过模拟仿真基本完成了设计要求。
通过此次设计使我系统的学习了单片机的基础知识,并了解了超声波传感器还学到了PWM调速技术,但本次设计还有很多不足:
(1)在避障功能上,没有考虑到多个传感器同时检测到障碍物的情况;
(2)在感光功能上,由于光敏电阻罗盘上只安装了三个电阻,所以无法精确定位光源的方向;
(3)在驱动电路上,没有对电机的转速的改变进行控制。
我认为本设计是非常具有研究价值的,希望在以后的日子里继续努力,把小车的不足进行弥补,并努力提高系统的可靠性及稳定性。
参考文献
[1]寸晓非.基于16位单片机的智能小车设计[J].荆门职业技术学院学报2008,23(3).
[2]周淑娟.基于单片机智能寻迹小车的设计方案[B].工业设计与职业教育2011,09
(2).
[3]叶伟慧.80C51单片机智能小车设计分析[A].计算机光盘软件与应用2012(7).
[4]张俊谟.单片机中级教程-原理与应用[M].北京:
北京航空航天大学出版社,2006,10.
[5]杨丽风等.单片机原理与接口技术[M].北京:
清华大学出版社,2007,2.
[6]史洪宇.基于单片机的多功能智能小车的设计[B].仪表技术2010(12).
[7]谭广通.基于超声波的移动测距洗系统的设计[A].电子世界2012(12).
[8]王晓明.电动机的单片机控制[J].学术期刊2012,13(15).
[9]王文华.基于80C51的智能小车设计[A].山西电子技术2010(4).
[10]黄崇富,刘勇.基于单片机超声波避障智能寻迹运物小车系统设计[A].金山2012(11).
[11]龙贵铃,徐磊.基于单片机的智能车避障的实现[A].计算机与数字工程2011(3).
[12]V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J],2002.
[13]Taylor.D.Nonlinearcontrolofelectricmachines:
anoverview,IEEEControlSystMag[M],1994,14.
AutomaticObstacleAvoidanceandSensorCar
Basedon51MCU
Abstract:
51MCUisaeightbitandquitepowerfulMCU,moreimportantisthatitisveryeasytooperate,soitiswidelyusedbypeople.ThedesignisbasedonSCMcontrol51andtheuseofultrasonicsensorstodetectobstaclesontheroad,throughthePWMtechnologytocontrolthespeedofthebacktworounds,thenthecarturnaroundtheobstacles.Aincandescentlampasthetargettothecar,itdeterminethedirectionofthelightsourceusingphotosensitiveresistancecompass,finallyreachingthetargetposition.Thecarwithautomaticdirectionusing80C51tocontroltheautomaticobstacleavoidanceandautomaticparking.DrivingcircuitoftrolleymainlydependsontheL298N.Thewholesystemofthecircuitstructureissample,reliableandhighperformance.
Keywords:
MCU;
ultrasonicsensors;
80C51;
L298N
致谢
经过两个月的努力我的毕业设计基本完成了,由于经验的缺乏以及自身知识的欠缺,本次设计并没有达到完美的效果,只是完成了智能小车的基本功能。
在论文的写作过程中,我得到了郭雄英老师的许多指导和帮助。
她在我从论文的选题、设计方案、软件设计到论文的修改、定稿等方面都做了精心的指导,使我不仅顺利