基于AT89S51单片机的智能超声波避障小车.docx
《基于AT89S51单片机的智能超声波避障小车.docx》由会员分享,可在线阅读,更多相关《基于AT89S51单片机的智能超声波避障小车.docx(11页珍藏版)》请在冰豆网上搜索。
基于AT89S51单片机的智能超声波避障小车
目录
摘要:
1
1总体方案概述2
2总体电路原理图2
3各模块功能介绍3
3.1超声波测距模块3
3.2数码管显示模块3
3.2.1数码管显示原理3
3.2.2显示部分C源程序的编写4
3.2.3数码管实时显示距离5
3.3步进电机控制模块5
3.4语音提示模块6
3.5速度自控模块7
3.6信号提示模块8
3.7单片机控制模块8
4系统软件设计9
5原件清单10
6应用前景11
参考文献12
基于AT89S51单片机的智能超声波避障小车
摘要:
现今发达的交通在给人们带来便捷的同时也带来了许多的交通事故。
发生交通事故的因素有很多。
当然,如果我们的汽车能够更加智能,就是说事先能预测并显示前面障碍物离车的距离,当障碍物距离很近时汽车会自动采取一些措施避开障碍物,这样就能够在很大程度上避免这些事故的发生。
在本论文中,我们将会看到能够实现这一功能的智能小车。
关键字:
超声波;测量;避障;单片机;语音
1总体方案概述
本小车使用一台AT89S51单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用数码管实时的显示出来,在小车与障碍物的距离小于安全距离(用软件设定)时,小车会发出“在距您车前方x(数码显示的实时距离)米的地方有一障碍物,请您注意避让”的语音提示,并且拐弯,以避开障碍物,同时会点亮相应侧边的发光二极管作为提示信号。
在避开障碍物后,小车会沿直线前进。
本系统设计的简易智能小车分为几个模块:
单片机控制系统、超声波路面检测统、前进、转弯控制电机以及方向指示灯系统。
它们之间的相互关系如下图1所示。
图1智能小车简要原理框架图
2总体电路原理图
图2总体电路图
3各模块功能介绍
3.1超声波测距模块
首先利用单片机输出一个40kHz的触发信号,把触发信号通过TRIG管脚输入到超声波测距模块,再由超声波测距模块的发射器向某一方向发射超声波,在发射时刻的同时单片机通过软件开始计时,超声波在空气中传播,途中碰到障碍物返回,超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机,此时单片机就立即停止计时。
时序图如图3所示。
由于超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离,即:
S=VT/2,通过单片机来算出距离。
图3超声波模块时序图
3.2数码管显示模块
3.2.1数码管显示原理
数码管有一位、双位、四位等几种。
而不管将几位数码管连在一起,数码管和显示原理都是一样的,都是靠点亮内部的发光二极管来发光。
数码管的内部电路结构如图4所示:
从(a)可看出,一位数码管的引脚数是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚。
而它们的公共端又分为共阳极和共阴极。
图4的(b)和(c)分别为共阳极和共阴极数码管的原理图。
图4数码管内部原理图
本小车的数码管采用的是4位共阳极数码管。
所谓“共阳”就是指其内部的8个发光二极管的阳极全部接在一起,而它们的阴极是独立的,通常在设计电路时一般把阳极接VCC,当我们给数码管的任一个阴极加低电平时,对应的那个发光二极管就点亮了。
当使用多位一体数码管时,它们内部的公共端是独立的,而负责显示什么数字的段线全部都是连在一起的,独立的公共端可以控制多位数码管中哪一位点亮。
通常我们把公共端叫做“位选线”,连在一起的段线叫做“段选线”。
3.2.2显示部分C源程序的编写
由于在本电子钟中4位数码管的段选线是直接接在单片机的P0口的,所以我们首先应该计算出显示各个数字所对应的P0口输出的二进制编码。
例如如果要显示一个“0”,对照图4的(a)图,我们需要点亮数码管中的a、b、c、d、e、f,而g和dp不点亮,故a、b、c、d、e、f、g、dp对应的二进制编码就为:
00000011。
再对照数码管段选线与单片机连接的顺序就可得要赋给单片机P0口的值应为10100000,转换为十六进制就是a0。
同理可以得到其它数字对应的十六进制编码:
ucharcodetable[10]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28};
ucharcodetable_dot[10]={0x80,0x9e,0x42,0x0a,0x1c,0x09,0x01,0x9a,0x00,0x08};//带小数点的数字段码表
图5指示灯与数码管显示电路
3.2.3数码管实时显示距离
用单片机控制四位共阳7段数码管来动态显示出测量距离。
在总体电路图中是通过单片机的P1I/O口来控制数码管的段选,通过P3.0到P3.3四个I/O口来控制四位数码管的位显示,具体的显示是通过单片机的软件来控制数码管的数据显示,把单片机计算出来的数据距离实时的显示出来。
3.3步进电机控制模块
此模块是用来作为小车前进的动力和控制小车的避障。
图6步进电机驱动模块原理图
步进电机是通过脉冲来驱动的,其步距角和转速只与输入的脉冲频率有关,频率越快,其转速越快,因此,只需要控制驱动步进电机的脉冲频率来控制步进电机的工作,而步进电机的驱动脉冲可以通过单片机来输出。
但由于步进电机工作时需要较大的工作电流,因此需要用步进电机驱动芯片来驱动,如图6所示,我们用ULN2803芯片来驱动步进电机,并且用单片机的P0I/O口来给ULN2803芯片输入不同频率的脉冲,再通过ULN2803来驱动步进电机。
本小车使用的是两个四相五线的步进电机来驱动。
我们知道,四相五线步进电机共有五根线,其中红色的接电源的正极,剩下的四根分别接在了ULN2803芯片的四个输出端,其对应的输入端则接在了单片机的P1.0~P1.3端口,要使电机工作,则只需让四个I/O口依次输出高电平。
电机励磁表如表1所示:
励磁顺序
A
A
B
B
1
1
0
0
0
2
0
1
0
0
3
0
0
1
0
4
0
0
0
1
表1电机励磁表
小车的前面两个轮子分别用两个步进电机来驱动,当两个步进电机的转速一样的时候,车子将沿直线前进,而两个步进电机的转速不一样的时候,车子就会拐弯,例如,左边的步进电机转速比右边的快的话,车子将向右边拐弯,只要控制好两个步进电机的转速比和不同转速的时间,就可以精确的控制小车的避障行为。
3.4语音提示模块
如图7,此模块是用来提供语音提示的,当小车距离障碍物距离(这个距离可以自行设定)很近时,小车的控制系统会发出“在距您车前方x米的地方有一障碍物,请您注意避让”的语音提示。
图7语音模块原理图
此功能是用ISD1760语音芯片来实现,预先给语音芯片录入“在距您车前方”,“米的地方有一障碍物,请您注意避让”,“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”等语音信息,在通过单片机程序来控制语音芯片的定点放音,来实现语音提示。
由总体电路图,用单片机的P2.2到P2.5四个I/O口来控制ISD1760语音芯片的定点放音。
ISD1760工作原理:
如图7所示,通过REC键来进行录音,录音时要一直按住REC键,录完一段语音后松开REC键,按动PLAY键可以对刚才的录音播放出来;VOL键可以加减音量,每按动一次VOL键,声音就增大一级,由于只有8级音量调节,所以在第9次按动VOL键时,声音又回到了最小音量;ERASE键可以对已经录入的语音进行擦除,短按此键可以擦除上一段录音,长按此键可以擦除所有录音;通过SS、SCLK、MISO、MOSI脚与单片机进行SPI通信,单片机就是通过这几个脚实现对ISD1760的定点放音。
3.5速度自控模块
此模块的功能是通过按键自行输入一个速度后,小车就会按照输入的速度进行直线前进,直到遇到障碍物。
通过S2、S3来输入设定的速度,此时是通过数码管来显示输入的数字,设定结束后,小车就会按照此速度前进,不过这只是一个象征性的速度,实际前进速度并不是输入的速度,而是以速度的快慢来反映这一功能的。
3.6信号提示模块
此功能就是相当于汽车的转向灯和刹车灯。
把L2、L3、L4、L5四个发光二极管分别安装在小车的四个角上,当小车在拐弯时相应侧边的发光二极管点亮,并且闪动;当小车在减速时小车后面的发光二极管点亮且闪动。
3.7单片机控制模块
图8控制模块
如图8,此模块是小车的最重要部分,它控制着超声波测距模块、数码管显示模块、步进电机控制模块、语音提示模块、速度自控模块和信号提示模块的工作。
单片机通过计时器记录超声波发射和接受的时间差,来计算出小车距离障碍物的距离,控制P1口的高低电平来控制数码管显示,通过输出不同频率的脉冲来控制步进电机的工作,通过SPI协议与ISD1760语音芯片进行通信,来控制语音芯片的定点放音,实现语音提示功能。
图6:
单片机最小系统
4系统软件设计
本设计系统软件采用模块化结构,由主程序﹑定时子程序、电机驱动子程序﹑中断子程序、显示子程序﹑调速子程序﹑算法子程序构成。
主程序流程图如图8所示。
其中:
避障中断服务子程序完成对超声波探测器产生的外部中断进行处理,如果超出预定的危险距离就左转进行避障。
遥控中断服务子程序完成对遥控信号产生的外部中断进行处理,对不同的遥控信号产生相应的控制信号。
在定时中断服务子程序,完成定时与里程的计算。
图9流程图
5原件清单
序号
元件名称
元件
数量
参数
1
AT89S51单片机
U1
1
——
2
电解电容
C1
1
10uf
3
电解电容
C5,C7,C8,C10,C11,C16
6
4.7uf
4
瓷片电容
C2,C3
2
20pf
5
瓷片电容
C4,C6,C9,C12,C13,C14,C15
7
0.1uf
6
弹性按键
ERASE1,PLAY1,REC1,S1~S7,VOL1
11
——
7
ISD1760
U2
1
8550(2N3960)
8
电源插座
J1
1
PWR2.5
9
发光二极管
L2,L3,L4,L5,L6,L7
6
——
10
LED数码管
U3
1
4位共阳
11
三极管
Q1,Q2,Q3,Q4
4
8550(2N3960)
12
电阻
R1~R10,R14~R18
14
470kΩ
13
电阻
R19~R22
4
4.7kΩ
14
电阻
R10~R13
4
10kΩ
15
电阻
R23
1
80kΩ
16
ULN2803
U4
1
——
17
晶振
Y1
1
11.0592MHz
18
电机接口
P1,P2
2
排针
19
超声波模块接口
P5
1
排针
20
驻极体接口
P3
1
排针
21
扬声器接口
P4
1
排针
6应用前景
本智能小车系统最诱人的前景就是可用于未来的智能汽车上了。
当驾驶员因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用。
如果汽车偏离车道或距障碍物小于安全距离时,汽车就会发出报警,提醒驾驶员注意,如果驾驶员没有及时作出反应,汽车就会自动减速或停靠于路边。
这样的小车还可以用于月球探测等的无人探月车,帮助我们传达月球上更多的信息,让我们更加的了解月球,为将来登月做好充分准备。
这样的小车在科学考察探测车上也有广阔的应用前景。
在科学考察中,有许