超声测距模块的设计(常用于电子大赛)
1、 超声波测距的原理
超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声接收波换能器。超声测距大致有以下方法:① 取输出脉冲的平均值电压,该电压 (其幅值基本固定 )与距离成正比,测量电压即可测得距离;② 测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔t ,测距原理如图1-1所示,距离公式为s=ct/2,其中c 为声速。通过测量发射与接受装置之间的距离h , 利用直角三角
形可求得2
22/h s d )
(-=。因为s 》h ,则d≈s ,d=s= ct/2。本测量电路采用第二种方案。
图1-1 测距原理图
在空气中,常温下超声波的传播速度是334米/秒,但其传播速度v 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1℃,声速增加约0.6米/秒。声速与温度关系如表1-1所示。因此在测距精度要求很高的情况下,应通过对温度补偿的方法对传播速度加以校正。已知现场环境温度T 时,超声波传播速度V 的计算公式可近似如下:
V=331.5+0.607T
这样,只要测得超声波发射和接收回波的时间差t 以及现场环境温度T ,就可以精确计算出发射点到障碍物之间的距离。
表1-1 声速与温度关系表:
2、超声波测距模块的方案设计
该系统由超声波发射电路、超声波接收电路、LED 显示电路和串口通信等硬件电路以及相应的软件部分构成。整个系统由单片机SST89E564控制,超声波传感器采用收发分体式,分别是一支超声波发射换能器TCT40-16BT 和一支超声波接收换能器TCT40-16BR ,超声波测距系统框图如图1-4所示。
单片机是整个系统的核心部件,协调各部件的工作。启动测量时,由单片机发出一个控制信号去触发发射电路,使发射电路起振,驱动超声波发射器发出一串超声波脉冲,每次发射包含10个脉冲,同时启动单片机的计时器,开始计时。当这些脉冲达到被测目标时,发生反射,经空气传播被超声波接收器接收,此时计时器停止计时,这样就能够得到从发射到接收的时间差,再考虑到盲区,单片机通过计算就可以得出到障碍物之间的距离。
接收图1-4 超声波测距系统框图
3、超声波测距模块的硬件设计
一般作为学校,选择51系列的单片机是最符合实际需求的,实验方便,且数据处理量不是很大,所以,本次设计选定以51系列单片机为控制核心的SST89E564RD 单片机来进行。
3.1、SST89E564RD 单片机的特点
随着技术的发展,单片机开发手段也越来越先进,而价格却不断下降。当FLASH 型单片机被广泛应用后,采用软件模拟加写片验证成为一种经济实用的实验方法。而近年来很多单片机都具有了ISP 功能,只要一根下载线即可以编程,
不需要编程器。
美国SST公司推出的SST系列单片机更是集成了仿真功能,配合Keil软件,可是用户的目标板直接具有仿真功能,将单片机的易用性推向一个新的高度。
SST89E564RD是美国SST公司推出的一款内嵌89C52核的单片机,除具有89C52的所有资源外,还增加了768字节的XRAM(地址范围100H-2FFH);增加了64K Block0的Flash(地址范围:0000H-FFFFH),原89C52的8k Flash 为Block1,占用10000H-11FFFH的地址空间。出厂时SST89E564RD中已经固化与Keil连接的仿真软件SoftICE,该Firmware与Keil一起可将C语言或汇编语言生成的代码通过串口直接下载到Block0中,且可在线调试,该软件占用Block1的前4k和Block0的后1k Flash空间,调试时占用串口和定时器2。
SST89E564RD单片机的主要特性如下:
(1)8位8051兼容MCU核,内置大容量的Flash存储器,指令、开发工具和芯片封装等与Intel8051系列单片机完全兼容。
(2)SST89E564RD单片机晶振率最该可达40MHz。
(3)总共1kByte(256Byte+768Byte)的内部RAM。
(4)内置Flash存储器分为两个Block,一个为64kByte的Block0(地址范围0000H-FFFFH),另一个为8k Flash的Block1(地址范围10000H-11FFFH)。
(5)支持外部扩展程序存储器和数据存储器的地址范围均为64k。
(6)内置3个16位的定时/计数器。
(7)一个全双工增强的UART。
(8)最多可以有8个中断源,并可以设定为4个优先级。
(9)4个8位并行I/O口。
(10)可编程的看门狗。
(11)SPI串行接口。
(12)标准工作时,12个振荡周期为一个指令周期,并可将一个指令周期设置为6个振荡周期,从而使指令执行速度提高1倍。
(13)兼容TTL和CMOS逻辑电平。
(14)掉点检测。
(15)双DPTR寄存器。
(16)低功耗模式。
SST89E564RD单片机双列直插封装的引脚排列如图3-1所示。
图3-1 SST89E564RD的引脚排列图
SST89E564RD单片机具有在系统可编程(ISP)特性,单片机在用户系统上即可直接下载/烧录用户程序,不需要将单片机从电路板上拆下再用通用编程器编程,并且可以直接将用户程序代码下载到单片机进行仿真调试,查看运行结果,使用非常方便,因而可以省去购买仿真器和通用编程器。
SST89E564RD单片机在销售之前已经将ISP引导程序烧录进单片机内部,配合PC端的控制程序即可将用户的程序代码通过串口下载到单片机,不需要编程器,也不需要将单片机从电路板拔下来。
普通89C51单片机系列单片机的内部RAM只有128字节,89C52单片机系列单片机的内部RAM有所增加,为256字节。SST公司的SST89E564RD内部则有1k字节的RAM,在89C52单片机核原有的256字节内部RAM基础上另外扩展了768字节内部RAM(地址范围100-3FF),是否允许访问该768字节RAM 由新增特殊功能寄存器AUXM的EXTRAM位的值决定,该位为0允许访问内部扩展768字节的RAM,该位为1则禁止访问。关于内部1k字节的RAM是使用说明如下:
(1)对于低128字节的内部RAM(地址范围00-7F),可直接寻址或间接寻址。
(2)对于高128字节的内部RAM(地址范围80-FF),只能间接寻址。
(3)特殊功能寄存器SFR(地址范围80-FF),只能直接寻址。
(4)EXTRAM位清0,允许访问内部扩展的RAM,单片机复位后该位为0。
(5)EXTRAM位置1,禁止访问内部扩展的RAM,此时只能访问片外的RAM。
(6)写芯片内部扩展的768/256字节RAM。
(7)读芯片内部扩展的768/256字节RAM。
4、超声波发射电路设计
超声波的发射和接收是由超声波换能器来完成的,也就是我们俗称的探头。超声波的发射与接收可采用一体式的或独立式的,但是一体式的盲区问题比较严重,所以本次设计选择发射和接收探头分开的,具体将采用超声波发射换能器TCT40-16BT和超声波接收换能器TCT40-16BR。
命名规则:
●型号:TCT40-16BT或(R)
●类别:TC—压电陶瓷超声波传感器;T—通用性;T—发射/R—接收
●外径:-16代表Φ16mm
●外壳材料:铝
●外壳颜色:银色
具体参数:
●中心频率:40.0kHz±1.0 kHz
●输出电压: ≥115dB
●接收灵敏度:≥-65dB
●静电容量:2000pF±20%
●指向角:80°
●工作温度: -20~+70℃
超声波接收/发射换能器实物图如图3-4所示。
图3-4 超声波换能器实物图
超声波探头按其工作原理可分为压电式、磁致伸缩式、电磁式等,而以压电式最为常用。压电型超声波探头常用的材料是压电晶体和压电陶瓷,它是利用压
电材料的压电效应来工作的:逆压电效应将高频电振动转化成高频机械振动,从而产生超声波,可作为发射探头;而利用正压电效应,将超声振动波转化为电信号,可作为接收头,其结构如图3-5所示。
图3-5压电式超声波传感器结构
超声波发射电路,是为了让超声波发射换能器TCT40-16BT能向外界发出40 kHz左右的方波脉冲信号。40 kHz左右的方波脉冲信号的产生通常有两种方法:采用硬件如由555振荡产生或软件如单片机软件编程输出,本系统采用后者。编程由单片机P1.0端口输出40 kHz左右的方波脉冲信号,由于单片机端口输出功率不够,40 kHz方波脉冲信号分成两路,一路经一级反相器后送到超声波换能器的一个电极;另一路经两级反相器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器的两端,实际上构成了一个桥式电路,输入与输出的相位图如图3-4所示,再加上输出端上拉电阻R3,R4,一方面可以提高反向器MC14069UB输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。发射电路如图3-6所示。
图3-6 超声波发射电路
为了进一步验证超声波的发射波形的相位关系,特在特定的拐角对波形进行了测定,如图3-7所示,黄色(上面波形)为单片机P1.0口的波形,蓝色(中间波形)为6脚的波形,粉色(下面波形)为8脚的波形。
图3-7 相位关系图
MC14069UB六反相器芯片是双列直插封装,l、3、5、9、11、13是输入端;
2、4、6、8、10、12是输出端。7、14脚分别是工作电压的接地和输入。其引脚排列如图3-8所示,逻辑电路图如图3-9所示。
图3-8 MC14069UB引脚分布图
图3-9 MC14069UB逻辑电路图
这些反向器主要用于那些低功耗或高抗噪性的电路。为了减少传输延迟每一个反相器都是独立的。
工作特性:
●电源电压范围:3.0v-18v
●在额定温度范围内能够驱动两个低功耗TTL负载或一个低功耗的肖特基
TTL负载
●在所有的输入端有三重的二极管保护
●可用CD4069UB替代
5、超声波接收电路设计
上述TCT40-16BT发射的在空气中传播,遇到障碍物就会返回,超声波接收部分是为了将反射波(回波)顺利接收到超声波接收换能器TCT40-16BR进行转换变成电信号,并对此电信号进行放大、滤波、整形等处理后,这里用索尼公司生产的集成芯片CX20106,得到一个负脉冲送给单片机的P3.2(INT0)引脚,以产生一个中断。
CX20l06A是日本索尼公司生产的红外接收芯片,也适用于超声波接收。其采用单列8脚直插式,超小型封装。+5V供电,其内部方框图如图3-10所示:
图3-10 CX20106A内部方框图
以下是CX20l06A的引脚注释:
1脚:超声波信号输入端,该脚的输入阻抗约为40k Ω 。
2脚:该脚与GND之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R或减小C,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R=4.7 Ω ,C=3.3 μ F。
3脚:该脚与GND之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3μ F。
4脚:接地端。
5脚:该脚与电源端VCC接入一个电阻,用以设置带通滤波器的中心频率fn,阻值越大,中心频率越低。例如,取R=200kΩ时,f0≈42kHz,若取R=220kΩ,则中心频率f0≈38kHz。
6脚:该脚与GND之间接入一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。
7脚:遥控命令输出端,它是集电极开路的输出方式,因此该引脚必须接上一个上拉电阻到电源端,该电阻推荐阻值为22k Ω ,没有接收信号时该端输出为高电平,有信号时则会下降。
8脚:电源正极,4.5V~5V。
接收部分的电路如图3-11所示。
图3-11 超声波接收电路
可以看到,集成芯片CX20106在接收部分电路中起了很大的作用。CX20106是一款应用广泛的红外线检波接收的专用芯片,也适用于超声波,其具有功能强、性能优越、外围接口简单、成本低等优点,由于红外遥控常用的载波频率38 kHz 与测距的超声波频率40 kHz比较接近,而且CX20106内部设置的滤波器中心频率f0可由其5脚外接电阻调节,阻值越大中心频率越低,范围为30~60 kHz。故本次设计用它来做接收电路。CX20106内部由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整形电路构成。工作过程如下:接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适幅值的矩形脉冲,由滤波器进行频率选择,滤除干扰信号,再经整形,送给输出端7脚。当接收到与CX20106滤波器中心频率相符的回波信号时,其输出端7脚就输出低电平,而输出端7脚直接接到SST89E564的INT0引脚上,以触发中断。若频率有一些误差,可调节芯片引脚5的外接电阻R7,将滤波器的中心频率设置在40 kHz,就可达到理想的效果。
6、软件设计与系统调试
系统软件设计采用模块化设计,主要包括中断主程序、入口程序、定时器0中断程序、显示子程序、超声波发射子程序、延时子程序、距离计算子程序和报警子程序设计等。
7.1 软件程序及流程图
7.1.1 主程序流程图
主程序首先要对系统环境初始化,设置定时器T0工作模式为16位定时/计数器模式,置位总中断允许位EA并清计数器,然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传到接收器引起的直射波,需要延时0.1ms(这也就是超声波测距系统会有一个最小可测距离的原因)后才可打开外部中断0接收返回的超声波信号。由于采用的是24MHz的晶振,计数器每计一个数就是0.5μs,所以当当主程序检测到接收成功的标志位后,调用测距子程序,即可算得被测物与测距器之间的距离,最后显示在LED上,主程序流程图如图4-1所示。
图4-1 主程序流程图
7.1.2 发射程序与接收流程图
系统软件编制时应考虑相关硬件的连线,同时还要进行存储空间、寄存器以及定时器和外部中断引脚的分配和使用。本设计中P1.0引脚连接到推挽放大电路再连接到超声波发射传感器,P1.0引脚输出的将是软件方式产生的40 kHz方波,而P3.2(INT0)则被用来接收回波。定时器T1,T0均工作在工作方式1,为
参考文献
16位计数,T1定时器被用来开启一次测距过程以它的溢出为标志开始一个发射测量循环,T0定时器是用来计算脉冲往返时间,它们的初值均设为0。超声波发射子程序如下:
intt: mov r4,#10
inttloop: CPL VOUT ;40kHz
acall delay125us
DJNZ R4,inttloop ;超声波发送完毕,
ret
超声波的接收由接收子程序来执行,接收子程序如图4-2所示。首先初始化,其次发射超声波,接收端判断是否有回波,若时间大于30ms仍没检测到回波则重新发射超声波;若有回波,通过软件滤波,判断是否为回波信号,是回波,则读取时间,继续调用计算距离子程序,最后显示出测量的距离。
图4-2 接收子程序流程图
7.1.3 中断子程序及流程图
当超声波接收器收到返回的信号会给单片机一个外部中断,在程序中定义为外部中断0,INT0中断在程序中的作用是形成中断进行跳转进入中断子程序,能够实现我在程序设计上的思维,使整个程序符合逻辑设计。中断子程序流程图如图4-3所示。在程序中应注意进中断时变量的保存及出中断时变量的恢复。当
有外部中断时,将由硬件置位中断标志寄存器的EXINTF0或EXINTF1位(EXINTF0 或EXINTF1 位由硬件置位,由软件清零),为避免进入中断死循环,必须在退出中断子程序时用软件清除该标志位。系统在进入中断时会自动关中断,之后进入处理子程序。接收中断后,读取定时器值,设置标志位。部分程序如下:
PINT0: NOP
JB p3.2,pint0_exit
CLR TR0; 关计数器
CLR ET0
CLR EX0
MOV temp0,TL0;将计数值移入处理单元
MOV temp1,TH0
MOV TH0,#00H
MOV TL0,#00H
JNB p3.2,$
SETB rf;接收成功标志
pint0_exit: RETI
图4-3 中断子程序流程图
7.1.4 距离计算与显示子程序
由于超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样
参考文献
只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。
在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。
显示采用动态显示,显示流程图如图4-4所示,由P0口控制段选,P2.4—P2.7为位选信号,显示缓冲区定义为30H—33H,显示子程序如下:
DISPLAY: MOV R1,#30H
MOV R5,#80H ;位选初始代码
PLAY:
MOV P0,#00H ;P0口清0
MOV A,R5
MOV P2,A ;累加器A中的数值送P2口位选
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A ;累加器A中的数值送P0口段选
LCALL DEL1MS ;调1ms延时子程序
INC R1 ;R1加1,指向下一位
MOV A,R5
JB ACC.4,ENDOUT ;进位位为1则跳转
RR A
MOV R5,A
AJMP PLAY
ENDOUT: MOV P2,#00H
MOV P0,#00H
RET
;4位8段数码管各划的数字排列表(共阴)
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,79H
;0 1 2 3 4 5 6 7 8 9 E
图4-4 显示流程图
8、 PCB板的设计
一般而言,设计电路板最基本的过程可以分为以下3大步骤:(1)电路原理图的设计电路原理图的设计主要是用Protel99SE的原理图设计系统来绘制电路原理图。(2)产生网络报表。网络表可以从电路原理图中获得,同时Protel99SE 也提供了从电路板中提取网络表的功能。(3)印制电路板的设计。印制电路板的设计主要是利用Protel99SE的PCB设计系统来完成印制电路板图的绘制。
Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。
在了解和掌握了Protel99SE的功能及特性后,根据电路原理图设计了PCB 电路版图,具体设计如图8-5所示:
参考文献
图8-5 PCB印制电路板图
参考文献
[1 ] 申忠如. 申淼. 谭亚丽. MCS-51单片机原理及系统设计[M]. 西安:西安交通大学出版社,2008.
[2 ] 何立民. 单片机应用系统设计[M]. 北京:北京航空航天出版社,1990.
[3 ] 何希才. 新型集成电路及应用[M]. 北京:科学技术出版社,2001.
[4 ] 徐国华. 超声波测距系统的设计与实现[J]. 电子技术应用,1995.
[5 ] 丁鹭飞. 耿富录.超声原理( 第三版) [M]. 西安:西安电子科技大学出版社,2002.
[6 ] 张淑清. 姜万录等. 单片微型计算机接口技术及其应用[M]. 北京:国防工业出版社,2001.
[7 ] 余永权. 汪明慧,黄英. 单片机在控制系统中的应用[M]. 北京:电子工业出版社,2003.
[8 ] 邢增平. Protel99SE设计专家指导. 中国铁道出版社,2004.
[9 ] 李丽霞. 单片机在超声波测距中的应用. 电子技术,2002(6).
[10] 刘凤然. 基于单片机的超声波测距系统[J]. 传感器世界,2001年05期.
[11] ATMEL Corporation Datasheet. ULN2003A DARLINGTON TRANSISTOR ARRAY[S],2001
[12] Philips Semiconductors Datasheet. Low powerful dual voltage comparator LM393[S],2001
附录1 源程序
;///////////////////////////////////////////////////////
; USE BY :超声波测距器
; IC : SST89E56
; OSCCAL :XT (24M)
; display :共阴LED显示
;///////////////////////////////////////////////////////
;测距范围27CM-2M,堆栈在4FH以上,20H用于标志
;显示缓冲单元在30H-33H,使用内存34H、35H、36H用于计算距离;
VOUT EQU P1.0 ; 超声脉冲输出端口
SPEAK EQU p1.1 ; 蜂鸣器口
DIS1 EQU 30H ;显示缓冲区
DIS2 EQU 31H
DIS3 EQU 32H
DIS4 EQU 33H
temp1 equ 34h ;暂存定时器值
temp0 equ 35h
count equ 36h ;定时器中断次数计数
time0 equ 37h
time1 equ 38h
time2 equ 39h
rf bit 00h ;成功接收标志,1表示已成功接收;
;********************************************
;* 中断入口程序*
;********************************************
;
ORG 0000H
LJMP START
参考文献
ORG 0003H
LJMP PINT0
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;
;********************************************
;* 主程序*
;********************************************
ORG 0030H
START: MOV SP,#60H
MOV R0,#DIS1 ;30H-33H为显示数据存放单元(30H为最高位)
MOV R7,#04H
CLEARDISP: MOV @R0,#00H
INC R0
DJNZ R7,CLEARDISP
clr rf
MOV TMOD,#11H ;T1、T0为16位定时器
SETB IT0 ;外部中断0下降沿出发
MOV TH0,#00H
MOV TL0,#00H
SETB EA ;开总中断,但是into和t1的中断此时未开
START1: LCALL DISPLAY
mov th0,#00h ;清计数器
mov tl0,#00h
mov count,#00h
setb tr0 ;定时器开始工作
setb et0 ;允许定时器中断
acall intt ;发射超声信号
acall delay125us ;延时,避开发射的直达声波信号
SETB EX0 ;开启接收回波中断,允许接受
acall display ;测量间隔控制
acall display
acall display
acall display
mov a,count
CLR C
SUBB A,#2
JNC START1 ;count=2,说明测量时间超时,认为是一次无效测量。返回
JNB 00H,START1 ;收到反射信号时标志位为1
ACALL RECEIVE
LCALL WORK ;计算距离子程序
SJMP START1
;
;****************************************************
;*定时器0中断程序,定时器计满后中断一次,count+1
;****************************************************
参考文献
INTT1: CLR TR0
MOV TH0,#00H
MOV TL0,#00H
inc count
SETB TR0 ;启动计数器T0,用以计数
reti
;超声发射子程序
intt: mov r4,#10
inttloop: CPL VOUT ;40kHz
acall delay125us
DJNZ R4,inttloop ;超声波发送完毕,
ret
;延时子程序
delay125us: mov r7,#125
djnz r7,$
ret
;超声波接受中断子程序,接收后中断,读取定时器值,设标志位PINT0: NOP
JB p3.2,pint0_exit
CLR TR0 ;关计数器
clr et0
CLR EX0 ;
MOV temp0,TL0 ;将计数值移入处理单元
MOV temp1,TH0 ;
MOV TH0,#00H
MOV TL0,#00H
JNB p3.2,$
SETB rf ;接收成功标志
pint0_exit:
RETI
;
;****************************************************
;* 显示子程序*