基于单片机的汽车防撞报警器方案设计书wj.docx
《基于单片机的汽车防撞报警器方案设计书wj.docx》由会员分享,可在线阅读,更多相关《基于单片机的汽车防撞报警器方案设计书wj.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机的汽车防撞报警器方案设计书wj
摘要:
本文是基于AT89C51单片机的汽车防撞报警器的设计,主要是利用超声波的特点和优势,将超声波测距系统和AT89C51单片机结合于一体。
该系统采用软、硬件结合的方法,具有模块化和多用化的特点。
关键字:
单片机防撞报警超声波
一、系统总体方案设计
二、超声波测距原理
超声测距从原理上可分为共振式、脉冲反射式两种。
由于应用要求限定,在这里使用脉冲反射式,即利用超声的反射特性。
超声波测距原理是通过超声波发射传感器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就停止计时。
常温下超声波在空气中的传播速度为c=340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=c*t/2=c*t0(2-1)
其中,t0就是所谓的渡越时间。
三、系统各组成单元设计
该超声波测距系统由超声波发射与接收电路、单片机硬件接口电路、显示报警电路组成,下面主要通过各个模块的各种方案比较,确定设计的最终方案。
该系统的核心部分采用性能较好的AT89C51单片机。
3.1发射与接收电路的设计方案
超声波发射接收电路如图3.1所示。
该电路简单实用,通过两极放大,增强接收信号,比较适合本设计需要。
测距系统中的超声波传感器采用压电陶瓷传感器,他的工作电压是40kHZ的脉冲信号,前方测距电路的输入端接单片机P1.0端口,单片机执行程序后,在P1.0端口输出一个40kHZ的脉冲信号,经过三极管T放大,驱动超声波发射头UCM40T,发出40kHZ的脉冲超声波,且持续发射200μs。
右侧和左侧测距电路的输入端分别接P1.1和P1.2端口,原理和前方测距相同。
图3.1超声波测距系统发射接收电路
由AT89C51单片机编程,执行程序后P1.0口产生40KHZ的脉冲信号,经三极管放大后来驱动超声波发射探头UCM40T,产生超声波。
接收头采用和发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大器两级放大后加至IC2。
IC2是带有锁定环的音频译码集成块LM567,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其锁定带宽。
调解R8在发射的载频上,则LM567输入信号大于25mv,输出端8脚由高电平越变为低电平,作为中断请求信号,送至单片机处理。
在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。
当收到超声波反射波时,接收电路输出端产生一个负跳变,在INTO或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。
发射电路电路图如图3.2所示:
图3.2系统发射电路
此电路由一个9V的电源,R1=3.6K欧,R2=360欧,三极管T一个,激励换能器T40-16一个。
其流程图如图3.3所示:
图3.3流程图
发射电路原理:
当单片机AT89C51,通过P1.0这个I/O口,发送一系列的脉冲,经过三极管T进行放大,从而使T40-16这个激励换能器发射出超声波。
接收电路如3.4所示:
图3.4接收电路图
其原理框图如下:
图3.5原理框图
此系统为了全方位测距,故有左、右、中三个测距电路,其电路都相同。
3.2显示报警单元方案设计
显示报警单元是经过超声波发射接收电路及单片机AT89C51处理后把信号转化为人为可以知觉的数字显示和报警响应,以进一步避免事故发生。
显示报警电路由显示和报警两部分电路组成,主要实现在出现紧急情况下的显示报警功能,以此提醒驾驶员。
3.2.1系统显示电路设计
显示器是一个典型的输出设备,而且其应用是极为广泛的,几乎所有的电子产品都要使用显示器,其差别仅在于显示器的结构类型不同而已。
最简单的显示器可以使LED发光二极管,给出一个简单的开关量信息,而复杂的较完整的显示器应该是CRT监视器或者屏幕较大的LCD液晶屏。
综合课题的实际要求以及考虑单片机的接口资源,采用串行方式显示的LED驱动输出设备。
由于全程显示的距离范围在4M之内,用3个LED数码管表示距离的cm数值。
在单片机应用系统中,发光二极管LED显示器常用两种驱动方式:
静态显示驱动和动态显示驱动。
所谓静态显示驱动,就是给要点亮的LED通以恒定的电流,即每一位LED显示器各引脚都要占用单独的具有锁存功能的I/O接口。
单片机只需要把要显示的字形段码发送到接口电路并保持不变即可,如果要显示新的数据,再发送新的字形段码。
因此,使用这种方法单片机中CPU开销小,但这种驱动方法需要寄存器、译码器等硬件设备。
当需要显示的位数增加时,所需的器件和连线也相应增加,成本也增加。
而所谓动态显示驱动就是给欲点亮的LED通以脉冲电流,即采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮,这时LED的亮度就是通断的平均亮度。
考虑各种因素,本设计选用动态驱动显示。
本设计选用8155芯片作为单片机应用系统扩展的I/O口。
8155的PA口作为LED的字形输出口,为提高显示亮度,采用8路反相驱动器74LS244驱动;PC口作为LED的位选控制口,采用共阳极的LED显示器,由于8段全亮时位控线的驱动电流较大,采用6路反相驱动器74LS06以提高驱动能力。
图3.6系统显示电路
3.2.2系统报警电路设计
系统报警电路由一个运算放大器、一个发光二极管和一个喇叭组成。
R25的阻值为1K,R26的阻值为10K。
对于二级运算放大,都采用F007芯片.两级放大电路均是负反馈接法,即反相比例运算电路.而反相比例运算电路中,输入信号从反相输入端输入,同相输入端接地.根据“虚短”和“虚断”的特点,即u_=u+,i_=i+=0.可得u+=0.而所谓“虚短”是由于理想集成运放Au0
。
所以可以认为两个输入端之间的差模电压近似为零,即Uid=u_=u+
0.即u_=u+,而u0具有一定值。
由于两个输入端间的电压为零,而又不是短路,故称为“虚短”。
而“虚断”是由于理想集成运放的输入电阻Rid
,故可以认为输入端不取电流,即i_=i+
0.这样,输入端相当于断路,而又不是断开,称为“虚断”。
而电路中,反相输入端与地端等电位,但又不是真正接地,这种情况称为“虚地”。
所以
iI=
iF=
=
,因为i_=0,iI=if,则可得u0=-
uI.故可将信号进行放大。
图3.7系统报警电路
当单片机AT89C51通过P1.0,P1.1,P1.2三个I/O口,发射出超声波的信号,即输出一个高电平给这三个I/O口,大约5V的电压,同时单片机计数器T0开始计时。
则信号经过三极管T1,T2,T3进行放大。
使电流达到T40-16的工作电流,从而发射出超声波。
当T40-16发射出去的超声波遇到障碍物时会被反射回来,这时接收器R40-16便会将反射回来的超声波接收,并转换成电信号,经过运算放大器的两极放大,将信号送给LM567的输入端,当LM567的输入端电流大于25mA时,其8号输出引脚会产生一个信号,使得单片机AT89C51产生一个中断。
这样,计数器便停止计数。
单片机把计得的时间差进行运算,根据S=170*t这个公式来计算车与障碍物的距离,并把运算结果以十进制的方式送到七段LED显示电路去显示。
如果距离小于0.5m,则单片机AT89C51便给P1.5口一个信号,使得报警电路工作,实现报警。
四、系统硬件及软件实现
4.1单片机硬件
4.1.1单片机 AT89C51
图4.1AT89C51单片机芯片
根据系统设计要求,各接口功能如下:
P1.0:
产生输出一个40KHZ的脉冲信号。
(用于前方测距电路)
P1.1:
产生输出一个40KHZ的脉冲信号。
(用于右侧测距电路)
P1.2:
产生输出一个40KHZ的脉冲信号。
(用于左侧测距电路)
INT0:
产生中断请求,接前方测距电路。
INT1:
产生中断请求,接前方测距电路。
P1.3:
接ICA3输入端,用于中断优先级的判断。
P1.4:
接ICA3输入端,用于中断优先级的判断。
P0.0:
用于显示输出,接显示器。
P0.1:
用于显示输出,接显示器。
P0.2:
用于显示输出,接显示器。
P0.3:
用于显示输出,接显示器。
P0.4:
用于显示输出,接显示器。
P0.5:
用于显示输出,接显示器。
P0.6:
用于显示输出,接显示器。
P0.7:
用于显示输出,接显示器。
P2.7:
接报警电路
P2.0:
接报警电路
P2.1:
接报警电路
XTAL1:
接外部晶振的一个引脚。
在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。
它采用外部振荡器时,些引脚应接地。
XTAL2:
接外部晶振的一个引脚。
在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。
当采用外部振荡器时,则此引脚接外部振荡信号的输入。
RST:
AT89C51的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。
4.1.28155芯片介绍
图4.28155芯片
8155引脚功能:
AD7~AD0(19~12脚):
三态地址/数据引出线;
CE(8):
片选信号线,低电平有效;
RD(9):
存储器读信号线,低电平有效;
WR(10):
存储器写信号线,低电平有效;
ALE(11):
地址及片选信号锁存信号线,高电平有效;
IO/M(7):
I/O接口与存储器选择信号线,高电平表示选择I/O接口,低电平表示选择存储器;
PA7~PA0(28~21):
A口输入/输出线;
PB7~PB0(36~29):
B口输入/输出线;
PC5~PC0(5、2、1、39、38、37):
C口输入/输出线或控制信号线;
T/IN(3):
定时器/计数器输入端;
(T/OUT)(6):
定时器/计数器输出端;
RESET(4):
复位,高电平有效,复位后三个I/O口均为输入功能。
4.1.3探头UCM介绍
压电陶瓷超声波换能器(超声波传感器)体积小,灵敏度高、性能可靠、价格低廉,是遥控、遥测、报警等电子装置最理想的电子器件、用此换能器构成的超声波遥控开关,可使家电产品、电子玩具加速更新换代,提高市场竞争能力。
表2.1传感器特性参数
型号
UCM—T40K1
UCM—R40K1
结构
开放式
开放式
发射距离
8—10M
8—10M
使用方式
发射
接收
谐振频率
40KHZ±1KHZ
40KHZ±1KHZ
频带宽
2KHZ±0.5KHZ
2KHZ±0.5KHZ
灵敏度
≥—70dB/V/ubar
≥—70dB/V/ubar
外形尺寸
∮16mm×22.5mm
∮16mm×22.5mm
温度范围
—20℃~+60℃
—20℃~+60℃
相对湿度
20±5℃时达98%
20±5℃时达98%
使用注意事项:
两接线脚焊接时间不宜过长,以免器件内之焊点溶化脱焊及造成底座与接线脚之间松动。
不宜与腐蚀性物质接触。
4.2系统软件结构
在系统硬件构架了超声波测距的基本功能之后,系统软件所实现的功能主要是针对系统功能的实现及数据的处理和应用。
根据第二节所述系统硬件设计和所完成的功能,系统软件需要实现以下功能:
一、信号控制
在系统硬件中,已经完成了发射电路、接收电路、检测电路、显示电路、门限检测的设计。
在系统软件中,要完成增益控制信号、门控信号、发射脉冲信号、峰值采集信号、远近控制信号的时序及输出。
二、数据存储
为了得到发射信号与接收回波间的时间差,要读出此刻计数器的计数值,然后存储在RAM中,而且每次发射周期的开始,需要对计数器清零,以备后续处理。
三、信号处理
RAM中存储的计数值并不能作为距离值直接显示输出,因为计数值与实际的距离值之间转换公式为:
S=0.5*V*T=0.5*V*(Tr*N)其中,T为发射信号到接收之间经历的时间,Tr为方波信号作为计数脉冲时计数器的时间分辨率,N为计数器的值。
在这个部分中,信号处理包括计数值与距离值换算,二进制与十进制转换。
四、数据传输与显示
经软件处理得到的距离送显示输出,用三位LED表示。
由于采用了单片机AT89C51并考虑整个系统的控制流程,整个系统软件都有AT89C51系列单片机汇编语言实现。
由于距离值的得出及显示是在中断子程序中完成的,因此在初始化发射程序后进入中断响应的等待。
在中断响应之后,原始数据经计数值与距离值换算子程序,二进制与十进制转换子程序后显示输出。
整个系统软件功能的实现可以分为主程序、中断服务程序几个主要部分。
4.2.1主程序
主程序是单片机程序的主体,整个单片机端系统软件的功能的实现都是在其中完成的,在此过程中主程序调用了子程序及中断服务程序。
程序首先完成初始化过程,然后是一个重复的控制发射信号的过程,即调用发射子程序几遍,而且每次发射周期结束都会判断在发射信号后延时等待的过程中是否发生了中断,即是否有回波产生来判断程序得流程。
流程图如图4.3所示。
图4.3主程序流程图
一、40kHz脉冲的产生与超声波发射
在脉冲产生前先对定时/计数器T0进行初始化,在这里选择的是工作方式1定时器模式,所以TMOD应该设定为01H。
接着用STEBTR0指令开启T0,在开启T0的同时开发发射超声波脉冲。
测距系统中的超声波传感器采用UCM40的压电陶瓷传感器,它的工作电压是40kHz的脉冲信号,这由单片机执行下面程序来产生。
PUZEL:
MOV14H,#12H;超声波发射持续200ms
HERE:
CPLP1.0;输出40kHz方波
NOP
NOP
NOP
DJZN14H,HERE
RET
前方测距电路的输入端接单片机P1.0端口,单片机执行上面的程序后,在P1.0端口输出一个40kHz的脉冲信号,经过三极管T放大,驱动超声波发射头UCM40T,发出40kHz的脉冲超声波,且持续发射200ms。
右侧和左侧测距电路的输入端分别接P1.1和P1.2端口,工作原理与前方测距电路相同。
这里省略,只研究正对方向的障碍物。
二、超声波的接收与处理
超声波的接受是由外部中断口INT0是否有中断脉冲产生来判断的。
定时子程序转回来的时候,要对中断进行初始化。
选定的是INT0口,工作方式为脉冲方式。
STEBEA;中断总允许
STEBEX0;INT0中断允许
STEBPX0;设置INT0为高优先级中断
STEBIT0;设置INT0为脉冲方式
HERE:
JMP$;等待中断
接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大器IC1A和IC1B两极放大后加至IC2。
IC2是带有锁定环的音频译码集成块LM567,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其锁定带宽。
调节R8在发射的载频上,则LM567输入信号大于25mV,输出端8脚由高电平跃变为低电平,作为中断请求信号,送至单片机处理。
前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。
部分源程序如下
RECEIVE:
PUSHPSW
PUSTACC
CLRACC
JNBP1.1,RIGHT。
P1.1引脚为0,转至右测距电路中断服务程序
JNBP1.2,LEFT。
P1.2引脚为0,转至左测距电路中断服务程序
RETURN:
SETBEX1。
开外部中断INT1
POPACC
POPPSW
RET1
三、数据读取和储存
为了得到发射信号与接收回波间的时间差,要读出T0计数器的计数值,然后存
储在RAM中,而且每次发射周期的开始,需要对计数器清零,以备后续处理。
RECEIVE0:
PUSHPSW
PUSHACC
CLREX0;关外部中断0
MOVR7,TH0;读取时间值
MOVR6,TL0?
CLRC
MOVA,R6
SUBBA,#0BBH;计算时间差
MOV31H,A;存储结果
MOVA,R7
SUBBA,#3CH
MOV30H,A
SETBEX0;开外部中断0
POPACC
POPPSW
RETI
四、计算超声波传播时间
T0中读取出来的时间差数据并不能作为距离值直接显示输出,因为时间差值与实际的距离值之间转换公式为:
S=0.5*V*T。
其中,V为声音在常温下的传播速度,T为发射信号到接收之间经历的时间,在这个部分中,信号处理包括计数值与距离值换算,二进制与十进制转换。
4.2.2显示子程序和蜂鸣报警子程序
考虑到提高系统资源的利用率,显示采用动态显示法实现。
采用8155芯片作为单片机应用系统的扩展I/O口。
8155的PA口做为LED的字形输出口,PC口做为LED的位选控制口,采用共阴显示接法。
将计算好的距离数据设置显示缓冲区起始地址,显示缓冲区中被显示的字符的字形码的地址偏移量预先制表放入。
流程图及部分源程序如下:
图4.4子程序流程图
DISP:
MOVDPTR,#7F00H;指向8155控制口
MOVA,#0DH;8155初始化
MOVX@DPTR,A
MOVR7,#01H;从右边第1位显示器开始
MOVR1,#30H;显示缓冲区首地址送R1
LOOP:
MOVDPTR,#7F03H;指向8155控制口地址
MOVA,R7;位控码初值
MOVX@DPTR,A
MOVDPTR,#7F01H;指向8155段控制口地址
MOVA,@R1;取待显示数据
MOVDPTR,#TAB;取字形段码表首地址
MOVXA,@A+DPTR;查表获取字形段码
INCR1;指针指向下一缓冲单元
MOVA,R7
JBACC.5,RETURN;判断是否到最高位?
返回
RLA;不到,左移一位
MOVR7,A
AJMPLOOP;继续扫描
RETURN:
RET
TAB:
DB0C0H,OF9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H
DB8EH,0BFH,8CH,0FFH
五、系统误差分析及改进
本文将从引起超声测距误差的原因入手,分析温度对超声波声速的影响,回波检测对时间测量的影响和超声波传感器所加电压对测量精度和范围的影响。
5.1误差产生原因分析
5.1.1温度对超声波声速的影响
空气中传播的超声波是由机械振动产生的纵波,由于气体具有反抗压缩和扩张的弹性模量,气体反抗压缩变化力的作用,实现超声波在空气中传播。
因此,超声波的传播速度受气体的密度、温度及气体分子成份的影响
即:
(5-1)
其中B为气体的弹性模量,r为气体的密度。
气体弹性模量,由理想气体压缩特性可得:
B=g·r,其中g为定压热容与定容热容的比值,空气为1.40,P为气体的压强。
气体的压强为:
(5-2)
其中,R为普适常量8.314kg/mol,T为气体温度K(绝对温度),M为气体分子量,空气为28.8×10-3kg/mol。
所以
(5-3)
由公式6-3可知,超声声速与空气的温度有密切关系。
例如:
20℃时,T=293.15,CS=344.2m/s;40℃时,T=313.15,CS=355.8m/s;-20℃时,T=253.15,CS=319.9m/s;从上面的计算可以看出,温度对超声波在空气中的传播速度有明显的影响。
当需要精确确定超声波传播速度时,必须考虑温度的影响。
5.1.2回波检测对时间测量的影响
超声波从超声传感器发出,在空气中传播,遇到被测物反射后,再传回超声传感器。
整个过程,超声波会有很大的衰减。
其衰减遵循指数规律。
设在距离超声接收器x处有被测物,则空气中传播的超声波波动方程描述为:
A=A(x)cos(ax+kt)(5-4)
其中A为超声传感器接收的振幅;A0为超声传感器初始振幅;α为衰减系数;x为超声波传播距离;w角频率;k为波数。
衰减系数α=b·f。
其中b为空气介质常数,f为超声波频率。
由此可见,超声波频率越高,其衰减越快。
同时超声波频率的过高会产生较多的副瓣,引起近场区的干涉。
但是,超声波频率越高,指向性越强,这一点有利于距离测量。
由于超声回波随距离的增加而变得十分微弱,所以在设计超声接收电路时,要设计较大放大倍数(万倍级)和较好滤波特性的放大电路,使回波易于检测。
5.1.3超声传感器所加脉冲电压对测量范围和精度的影响
制作超声传感器的材料分为磁致伸缩材料和压电材料两种。
超声测距常用压电材料传感器,例如TR40压电超声传感器。
超声传感器外加脉冲电压的幅值会影响压电转换效率。
当压电材料不受外力时,其应变S与外加电场强度E的关系为:
S=d·E(5-5)
其中d为应变电场常数。
超声传感器外加的脉冲电压影响压电材料的电场强度,从而影响其应变量和超声转换的效率,进而影响超声波幅值。
这些会直接影响超声波的回波幅值。
所以,为提高压电转换效率,提高超声测距精度和范围,应尽量提高超声传感器外加脉冲电压的幅值。
5.2针对误差产生原因的系统改进方案
在实际应用中,为了方便处理,超声波常调制成具有一定间隔的调制脉冲波信号。
测距系统一般由超声波发送、接收、时间计测、微机控制和温度测量五个部分组成。
如何提高测量精度是超声测距的关键技术。
其提高测距精度的措施下:
(1)合理选择超声波工作频率、脉宽及脉冲发射周期
据经验,超声测距的工作频率选择f=40kHz较为合适:
发射脉宽一般应大于填充波周期的10倍以上即:
T>0.25s,考虑换能器通频带及抑制噪声的能力,选择发射脉宽1ms;脉冲发射周期的选择主要考虑微机处理数据的速度,速度赶快,脉冲发射周期可选短些。
(2)在超声波接收回路中串入增益调节(AGC)及自动增益负反馈控制环节
因超声接收波的幅值随传播距离的增大呈指数规律衰减,所以采用(AGC)电路使放大倍数随测距距离的增大呈指数规律增加的电路,使接收器波形的幅值不随测量距离的变化而大幅度的变化,采用电流负反馈环节能使接收波形更加稳定。
(3)提高计时精度,减少时间量化误差
如采用芯片计时器,计时器的计数频率越高,则时间量化误差造成的测距误差就越小。
例如:
单片机内置计时器的计数频率只有晶振频率的十二分之一,当晶振频率为6MHz时,计数频率为0.5MHz此时在空气中的测距时间量化误差为0.68mm;当晶振频率为12MHz时,计数频率为1MHz,此时测距时间量化误差为0.34mm。
若采用外部硬件计时电路,则计数频率可直接引用单片机的晶振频率,时间量化误差更小。
(4)补偿温度对传播声速的影响
超声波在介质中的传播速度与温度、压力等因数有关,其中温度的影响最大,因此需要对其进行补偿。
有文献表明,按下式计算声速可以达到较高的精度:
在空气中,
m/s;
在海水中,C=1450+4.21t-0.037t·t+1,14(S-35)+0.175Pm/s
式中:
t—摄氏温度;S—水盐度,按千分比计算;P—海水