基于单片机的测距系统设计文档格式.docx
《基于单片机的测距系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的测距系统设计文档格式.docx(36页珍藏版)》请在冰点文库上搜索。
2.距离要求显示;
3.探测距离0.5m—10m;
4.工作温度-20—45℃。
2.2系统方案论证
超声波测距原理是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差T,然后求出距离S=CT/2,式中的C为超声波波速。
限制该系统的最大可测距离存在4个因素:
超声波的幅度、反射的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。
接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。
为了增加所测量的覆盖范围、减小测量误差,可采用多个超声波换能器分别作为多路超声波发射或接收的设计方法。
2.2.1方案1
本系统主要是基于单片机的测距系统,在系统的设计当中要以单片机为核心器件,分为超声波发射电路和超声波检测接收电路、显示及报警四部分。
超声波测距电路的设计框图如图2.1所示:
图2.1超声波测距电路的设计框图
本方案采用单片机作为控制系统,用单片机产生8个40kHz的超声波,脉冲持续时间为0.2ms左右,时隔59.8ms反复进行。
此脉冲信号作为计时的起始脉冲,由单片机输出的端口的高频脉冲经过74LS04六反相器功率放大、升压后与超声波探头产生共振,使超声波探头工作,则超声波由超声波发射头发射出去。
接收电路由超声波接收器、CX20106A集成电路组成。
使用CX20106A集成电路对接收探头收到的信号进行放大、滤波。
当CX20106A接收到反射40kHz的信号时,会在第7脚产生一个低电平下降脉冲,这个信号可以接到单片机的外部中断引脚作为中断信号输入,停止计数器T0计数,并读取T0计数值存储。
显示用4位共阳极LED数码管,声光报警是用发光二极管和蜂鸣器组成的,单片机输出一定频率的脉冲驱动蜂鸣器发出报警声,同时点亮发光二极管。
系统中采用的是压电式超声波发生器,这个发生器实际上是利用压电晶体的谐振来工作的。
超声波传感器由两个压电晶片和一个共振板组成。
发射超声波时,压电传感器中的压电晶片受发射电脉冲激励后产生共振,并带动共振板振动,便产生超声波。
接收超声波时,两电极间未外加电,共振板接收到超声波,将压迫压电晶片作振动将机械能转换为电信号。
2.2.2方案2
原理框图如图2.2所示。
图2.2方案原理框图
本方案主要是对方案1的发射和接收电路做了改动,在本方案中的发射电路是由单片机I/O口编程输出40kHz的方波,持续时间为0.2ms,每隔59.8ms左右再发一次,常温下超声波在空气中的传播速度为340米/秒,这样决定了仪器的最大探测距离为
。
直接由单片机产生40kHz的超声波,在发射电路中,由于单片机的P1口作为I/O口使用时吸电流能力小,所以外接一个三极管来提高其输出电流的能力,保证40kHz的脉冲有一定的功率。
在接收端方案二采用FPS4091接收组件,需要将红外接收管PH302换为超声波接收头。
因为在距离较远时,回波信号很弱,使用此接收组件,可以在有效的测距范围内保证接收到的信号其输出达到TTL电平避免了为达到几十万倍的放大量而采用多级运放组成的调试困难的高增益放大电路,十分便于制作,且电路无需调试。
2.2.3方案比较
通过分析上述两个方案,可以发现他们的主要区别在超声波的接收和发射部分,方案一的发射电路采用74LS04六反相器来驱动40kHz的超声波,而方案二采用直接通过对单片机的编程由I/O口直接产生40kHz的超声波,方案一虽然增加了六反相器,但这能保证超声波一定能发射出去,提高驱动能力。
在接收部分方案一采用CX20106A集成电路,使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。
而方案二采用FPS4091接收组件,结构虽然简单且不用调试,容易实现,但是大大的增加了投入费用,这与我们的实际情况不符,同时FPS4091接收组件在市场上不是很容易买到,尤其是小批量的购买很难。
2.2.4结论
通过方案比较,方案一更加节省资金,容易实现,与我们的实际情况相符,因此确定选择方案一为最终实施方案。
2.3元器件的选择
在整个的系统设计当中,元器件的选择是否适合本设计的需求,对于系统设计的成功与否起着相当重要的作用,所以在系统的设计过程中,一定要慎重地选择所要用的元器件。
在本系统中,单片机采用AT89C52,具有较高的数据存储空间;
晶体振荡器采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差;
超声波传感器选择T/R40-16(T发射/R接收);
LED七段数码管选用简单实用的四位LED共阳数码管,位码采用PNP三极管8550驱动;
超声波发射电路采用六反相器74LS04构成的推挽形式将方波信号加到超声波传感器两端,以提高超声波的发射强度;
超声波检测接收电路主要采用CX20106A集成电路。
第3章系统硬件电路的设计
本系统是利用超声波技术来实现其测距的功能,它不仅包含硬件电路的设计,也包含了软件程序的编程。
下面就先以硬件电路的设计加以说明。
3.1系统硬件电路的设计思想
本系统主要是用单片机来实现的测距电路的设计,按照设计的要求,主要是根据超声波测距原理,以AT89C52单片机控制系统为核心来设计本系统。
以下是对超声波测距系统的各部分电路的说明:
1、AT89C52单片机最小系统是本系统设计的核心部分。
它的主要作用是:
①发射40kHz的方波信号用来驱动超声波传感器发生超声波信号;
②利用计数器T0对超声波从发射到返回所用的时间进行计数;
③利用外部中断0口来检测超声波回波信号;
④根据所测出的时间及有关参数来计算距离;
⑤控制有关参数的输入与显示。
2、显示电路的作用是采用动态扫描法使4位LED共阳数码管实时显示。
3、超声波发射电路的作用主要是将单片机发射过来的40kHz的方波信号放大加到超声波发射传感器两极,用以驱动超声波传感器发生超声波信号。
4、超声波检测接收电路的作用主要是对接收到的超声波回波进行放大和整形,将其转换成单片机中断信号。
5、声光报警电路的作用主要是根据有关参数及设计要求使系统按要求发出相应的报警信号。
3.2系统硬件电路的设计
本系统的硬件电路主要分为单片机最小系统、显示电路、超声波发射电路、超声波检测接收电路及声光报警电路五部分。
3.2.1单片机最小系统电路
单片机最小系统电路是整个硬件电路中非常重要的一部分。
单片机系统主要起控制电路中的各部分能够按照设计要求正常工作的作用,在本电路中单片机采用AT89C52,采用了12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。
单片机AT89C52最小系统电路如图3.1所示:
图3.1单片机AT89C52最小系统电路
1、单片机AT89C52
AT89C52是一种低功耗、高性能的含有8K字节快闪可编程/擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造。
芯片上的FPEROM允许在线或采用通用的非易失存储编程器对程序存储器重复编程。
AT89C52的内部有256个字节的RAM,地址范围是00H-FFH,但实际提供给用户使用的只有128个字节(00H-7FH),另128个字节(80H-FFH)是特殊寄存器区。
除ROM和RAM外,芯片内部还有三个16位的定时器/计数器,在本系统中定时器T0用来测量超声波的传输时间。
51系列单片机引脚与封装如图3.2所示:
图3.251单片机引脚与封装图
AT89C52的主要性能如下:
⑴与MCS-52微控制器产品系列兼容;
⑵片内有8K字节的可在线重复编程快闪擦写存储芯器(FlashMemory);
⑶编程所需的所有时序和电压,均不需外部电路供给;
⑷存储器可循环写入/擦除1000次;
⑸存储数据保存时间为10年;
⑹宽工作电压范围:
Vcc可由2.7V到6V;
⑺全静态工作:
可由0Hz到16MHz;
⑻程序存储器具有3级锁存保护;
⑼128×
8位内部RAM;
⑽32条可编程I/O线;
⑾三个16位定时器/计时器;
⑿中断结构具有5个中断源和2个优先级;
⒀可编程全双工串行通道;
⒁空闲状态维持低功耗和掉电状态保护存储内容。
2、时钟电路
常用的时钟电路设计有两种方式,一种是内部时钟方式,另一种为外部时钟方式,本系统采用的是内部时钟方式。
51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2.。
这两个引脚跨接石英晶体振荡器和微调电容。
这里晶振的振荡频率为12MHz,电路中的电容C6、C7选为30pF。
3、复位电路
本系统设计是的上电自动复位电路,上电自动复位是通过外部复位电路的电容充电来实现的,当电源接通时只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
3.2.2显示电路
在本系统的显示电路的设计中主要采用的是4位共阳LED数码管,根据LED数码管内部发光二极管的连接方式,数码管结构可以分为共阳极型和共阴极型两种,共阳极型的内部发光二极管是由阳极连在一起接高电平。
由于P0口输出电压很低,无法驱动数码管点亮,所以要加上拉电阻,一般选择10kΩ上拉电阻。
同时数码管额定工作电压范围为1.2—1.5V,工作电流为10mA,要加限流电阻,根据公式:
所以此处限流电阻选择380
显示电路如图3.3所示:
图3.3显示电路
3.2.3超声波发射电路
超声波发射电路主要由六反相器74LS04组成的推挽电路和超声波发射传感器构成。
超声波发射电路如图3.4所示。
单片机P1.0端口向外输出超声波脉冲信号,该信号一路经一级反相器后送到超声波换能器的一个电极,另一路经两极反相器后送到超声波换能器的另一个电极。
用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。
输出端采用两个反相器并联,用以提高驱动能力。
其中的上拉电阻R1、R2一方面可以提高反相器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。
图3.4超声波发射电路
1、反相器
在本系统的超声波发射电路中采用的反相器是六反相器74LS04芯片,其引脚结构如图3.5所示:
图3.5芯片74LS04引脚结构
由其引脚结构可知,7脚接地,14脚接电源,剩下12个管脚可分为六个反相器,其中A为输入端,Y为输出端,例如:
1A输入,1Y输出。
2、超声波传感器
超声波传感器是利用晶体的压电效应和电致伸缩效应,将机械能与电能相互转换,并利用波的特性,实现对各种参量的测量。
人们能听到声音是由于物体振动产生的,它的频率通常在20Hz-20kHz范围内,超过20kHz称为超声波,低于20Hz的称为次声波。
常用的超声波频率为几十kHz-几十MHz。
超声波是一种在弹性介质中的机械振荡,它的波形有纵波、横波、表面波三种。
质点的振动与波的传播方向一致的波称为纵波;
质点的振动与波的传播方向垂直的波称为横波;
质点的振动介于纵波与之间,沿着表面传播,振幅随着深度的增加而迅速衰减的波称为表面波。
横波、表面波只能在固体中传播,纵波可在固体、液体及气体中传播。
2.1传播速度
超声波的传播速度与介质的密度和弹性特性有关,与环境条件也有关。
在液体中传播速度为C=
式中p为介质的密度;
为绝对压缩系数。
对于固体,其传播速度为C=
式中,E为固体的弹性模量;
u为介质的泊松比。
在气体中,超声波的传播速度与气体种类、压力及温度有关,在空气中传播速度为C=331.5+0.607t(m/s)式中,t为环境温度,单位为0C。
2.2反射和折射
超声波在通过两种不同介质时,会产生反射和折射现象,有如下的关系:
=C1/C2式中C1、C2为超声波在两种介质中的速度;
为入射角,b为折射角。
2.3传播中的衰减
随着超声波在介质中传播距离的增加,介质吸收能量使超声波强度有所衰减。
若超声波进入介质的强度为I0,通过介质后的强度为I,则他们之间的关系为:
I=I0e-Ad式中,d为介质的厚度,A为介质对超声波能量的吸收系数。
介质的密度越小,衰减越快,频率高时则衰减更快。
因此,在空气中常采用频率较低的超声波,而在固体、液体中则采用频率较高的超声波。
利用超声波的特性,可做成各种传感器(包括超声波的发射和接收),配上不同的电路,可制成各种超声波仪器及装置,应用于工业生产、医疗、家电等行业中。
在本系统的设计中就是利用压电式超声波传感器,该超声波传感器是利用压电晶体的谐振来工作的。
超声波传感器的内部结构如图3.6所示。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器了。
同时要注意的是超声波发射换能器与接收换能器在其结构上稍有不同,在使用中一定要分清楚器件上的符号标志。
图3.6超声波传感器的内部结构
本系统所采用的是T/R40-16型超声波传感器。
下面就对T/R40超声波传感器进行一些简单介绍:
1超声波传感器型号代码
例如T/R40-16型超声波传感器的型号代码如图3.7所示。
图3.7T/R40-16型超声波传感器型号代码
⑵超声波传感器外部结构如图3.8所示。
图3.8超声波传感器的外形结构示意图
⑶超声波传感器内部结构如图3.9所示。
图3.9超声波传感器的内部结构示意图
⑷超声波传感器的性能指标如表3.1所示。
要想很好地运用超声波传感器,还要了解它的各项性能指标,超声波传感器的性能指标如表3.1所示:
表3.1超声波传感器性能指标
超声波型号
T/R40-10
T/R40-12
T/R40-16
中心频率
40士1kHz
发射声压
大于107dB
大于112dB
大于115dB
接收灵敏度
>
-74dB/v/ubar
-67dB/v/ubar
-64dB/v/ubar
-6dB指向
100deg
80deg
50deg
电容
1100士25%pF
2500士25%pF
2400士25%pF
⑸超声波传感器特性曲线
①声压电平特性曲线如图3.10所示。
图3.10声压电平特性曲线
②灵敏度特性曲线如图3.11所示。
图3.11灵敏度特性曲线
由这些特性曲线图可知,T/R40超声波传感器在输入频率为40kHz时,各种特性都呈现出最佳状态,因此为了得到最佳效果必须使单片机输出方波的频率为40kHz。
3.2.4超声波检测接收电路
超声波检测接收电路主要是由红外线检波接收的专用芯片CX20106A以及超声波接收传感器R构成的,其电路图如图3.12所示。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,而且CX20106A的载波频率可以通过其5脚与电源所接的电阻大小调整到40kHz,所以可以利用它制作超声波检测接收电路。
用CX20106A接收超声波(无信号时输出高电平),具有很高的灵敏度和较强的抗干扰能力。
以集成片CX20106A的7脚做为指今输出端,利用单片机外中断0口监测超声波接收电路输出的返回信号;
CX20106A的5脚与电源之间所接电阻R7的大小决定着它本身的带通滤波器的中心频率
的大小,在本系统中选择R7的阻值为200k
,此时的中心频率
=40kHz;
超声波接收传感器R接在CX20106A的1脚与地所接电容C5的两端,根据测量范围要求不同,可适当更改接于超声波接收传感器R电极两端的电容C5的大小,以改变接收电路的接收灵敏度和抗干扰能力。
图3.12超声波检测接收电路
红外线检波的专用芯片CX20106A是8脚单列直插式塑封结构,其各引脚功能如表3.2所示,它的主要功能是对接收到的超声波信号进行放大、滤波。
它主要是由前置放大器、限幅放大器、带通滤波器(BPF)、峰值检波器和波形整形器等组成。
其主要特点如下:
(1)低电压供电(Vcc=5V),低功耗(Vcc=5V时,典型功耗为9mV)。
(2)带通滤波器在集成电路内部,滤波特性由5脚和电源之间外接电阻的阻值来决定,可不必进行调整,带通滤波器的频率范围为30~60kHz,由于没有使用电感,可免受磁场的影响。
(3)能和PIN光电二极管直接相连。
(4)集电极开路输出,能直接与TTL或CMOS电路相连。
表3.2CX20106A的各引脚功能
引脚
符号
功能
电压(V)
1
IN
信号输入端,输入阻抗为40±
5kΩ
2.5
2
C2
该脚和地之间接有RC串联网络,用来确定前置放大器的频率特性和增益.若电阻大、电容小,则增益低,反之则高。
但电容不易过大,否则瞬间响应速度会降低
3
C3
该脚和地之间连接检波电容,电容量大为平均值检波;
若电容量小,则为峰值检波,瞬间响应灵敏度高,但检波输出脉冲的脉宽变动大,易造成遥控误动作
1.5
4
GND
接地端
5
该脚为带通滤波器的中心频率设置端,其与电源所接的电阻用来设置带通滤波器的中心频率
:
当R=200kΩ时,
当R=220kΩ时,
=38kHz
1.4
6
C4
该脚为积分电容连接端,所接电容的标准值为330pF。
若电容量大,则受外部噪波干扰增强,而且输出脉冲的低电平持续时间增加,遥控距离变短
1.0
7
OUT
指令输出端,是集电极开路输出端,该脚与电源之间连接22kΩ电阻,输出脉冲的低电平标准为0.2V
5.0
8
Vcc
供电电源端,电压为5±
0.3V
3.2.5声光报警电路
本系统的电路设计要求测量距离小于0.5米时电路发生声光报警。
在本系统的设计当中应用单片机程序控制电路发生报警,通过单片机输出低电平触发的,选择了发光二极管以及蜂鸣器作为该报警电路的主要元器件,声光报警电路如图3.13所示:
图3.13声光报警电路
第4章系统程序的设计
本系统的软件设计主要由主程序、定时器T1中断服务子程序、外部中断INT0中断服务子程序、距离计算子程序、初始化子程序、显示子程序、延时子程序等组成。
我们知道C语言程序有利于实现较复杂的算法,汇编语言程序容易精细计算程序运行的时间,而超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以为了有利于程序结构化和容易计算出距离,程序采用C语言编写。
下面就对主要的程序加以说明。
4.1系统的算法设计
根据超声波测距的原理,即超声波发生器T在某一时刻发出超声波脉冲信号,超声波遇到被测物体后反射回来,被超声波接收器R接收到。
这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。
距离的计算公式为:
S=CT/2
其中的S为被测物体与测距器之间的距离,C为声速,T为声波来回所用的时间。
设计时取超声波20℃时的声速为344m/s。
所以,只要测出超声波往返的时间,即可求得距离。
由于超声波也是一种声波,其声速C与温度有关,在使用时,如果温度变化不大,则可认为声速是基本不变的,在本系统的设计中取20℃时的的声速为344m/s。
声速确定后,只要测得超声波往返的时间,即可求得距离。
4.2系统软件的设计
系统软件编制时应考虑相关硬件的连线,同时还要进行存储空间、寄存器以及定时器和外部中断引脚的分配和使用。
本设计中P1.0引脚连接到74LS04推挽放大电路再连接到超声波发射传感器,P1.0引脚输出的将是软件方式产生的超声波脉冲信号,而P3.2(INT0)则被用来接收回波。
定时器T1,计数器T0均工作在工作方式1,为16位计数,T1定时器被用来开启一次测距过程以它的溢出为标志开始一个发射测量循环,T0计数器是用来计算脉冲往返时间,T0的初值设为0。
4.2.1主程序的设计
系统初始化后就启动定时器T1从0开始计数,此时主程序进入等待,当到达60ms时T1溢出进入T1中断服务子程序;
在T1中断服务子程序中将启动一次新的超声波发射,此时将在P1.0引脚上开始产生超声波脉冲信号,同时开启计数器T0计数,为了避免直射波的绕射,需要延迟1ms后