单片机原理及应用课程设计超声波测距器的设计.docx
《单片机原理及应用课程设计超声波测距器的设计.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计超声波测距器的设计.docx(18页珍藏版)》请在冰豆网上搜索。
单片机原理及应用课程设计超声波测距器的设计
前言
1.1超声波测距器的当前发展情况
超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。
应用范围十分的广泛。
超声波是指频率高于20KHz的机械波。
为了以超声波作为检测手段,必须产生超生波和接收超声波。
完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。
超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
2.方案论证
2.1提出方案
由于超声波的指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测的距离,设计比较方便,计算处理也比较简单,并且在测量精度方面也能达到日常使用的要求。
根据设计要求提出如下方案。
方案一:
选用AT89C51单片机作为主控制器,,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。
超声波测距器系统设计框图
方案二:
选用用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。
超声波测距器系统设计框图
2.2方案选择
2.2.1AT89C51与AT89S51的区别
1.引脚功能:
管脚几乎相同,变化的有,在AT89S51中P1.5,P1.6,P1.7具有第二功能,即这3个引脚的第二功能组成了串行ISP编程的接口。
2.编程功能:
AT89C51仅支持并行编程,而AT89S51不但支持并行编程还支持ISP再线编程。
在编程电压方面,AT89C51的编程电压除正常工作的5V外,另Vpp需要12V,而AT89S51仅仅需要4-5V即可。
3.烧写次数更高:
AT89S51标称烧写次数是1000次,实为1000-10000次,这样更有利开始学习者反复烧写,降低学习成本。
4.工作频率更高:
AT89C51极限工作频率是24MHZ,而AT89S51最高工作频率是33MHZ,(AT89S51芯片有两中型号,支持最高工作频率分别为24MHZ和33MHZ)从而具有更快的计算速度。
5.电源范围更宽:
AT89S51工作电压范围,达4-5.5V,而AT89C51在底于4.8V和高于5.3V的时侯则无法正常工作。
6.抗干扰性更强:
AT89S51内部集成看门狗计时器(WatchdogTimer),而AT89C51需外接看门狗计时器电路,或者用单片机内部定时器构成软件看门狗来实现软件抗干扰。
2.2.2方案确定
根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器。
3.超声波测距的原理
3.1超声波的介绍
3.1.1什么是超声波
超声波是指频率高于20KHz的机械波。
3.1.2超声波的特点
1、超声波在传播时,方向性强,能量易于集中。
2、超声波能在各种不同媒质中传播,且可传播足够远的距离。
3、超声与传声媒质的相互作用适中,易于携带有关传声媒质状态的信息
3.1.3超声波的应用
在全球,超声波广泛运用于诊断学、治疗学、工程学、生物学等领域。
1、工程学方面的应用:
水下定位与通讯、地下资源勘查等
2、生物学方面的应用:
剪切大分子、生物工程及处理种子等
3、诊断学方面的应用:
A型、B型、M型、D型、双功及彩超等
4、治疗学方面的应用:
理疗、治癌、外科、体外碎石、牙科等
3.2超声波测距器的原理
3.2.1超声波发生器
为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。
总体上讲,超声波发生器可以分为两大类:
一类是用电气方式产生超声波,一类是用机械方式产生超声波。
电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。
它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。
目前较为常用的是压电式超声波发生器。
本设计属于近距离测量,可以采用常用的压电式超声波换能器来实现。
3.2.2压电式超声波发生器原理
压电式超声波发生器实际上是利用压电晶体的谐振来工作的。
超声波发生器内部结构如图所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
3.2.3超声波测距原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=340t/2
超声波测距的原理一般采用渡越时间法TOF(time offlight)。
首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离
测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。
因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。
4.系统的组成
4.1硬件部分
主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。
采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。
单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。
计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。
4.2软件部分
主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序等部分。
5.系统硬件电路设计
5.1单片机系统及显示电路
单片机采用89S51或其兼容系列。
采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。
单片机用P1.0端口输出超声波转化器所需的40KHz方波信号,利用外中断0口检测超声波接受电路输出的返回信号。
显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。
单片机系统及显示电路如图5.1所示
5.2超声波发射电路原理图:
超声波发射电路原理图
压电超声波转换器的功能:
利用压电晶体谐振工作。
内部结构上图所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。
超声波发射转换器与接受转换器其结构稍有不同。
5.3超声波检测接收电路
采用集成电路CX20106A,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。
实验证明其具有很高的灵敏度和较强的抗干扰能力。
适当改变C4的大小,可改变接受电路的灵敏度和抗干扰能力。
超声波接收电路图
6.系统程序设计
超声波测距软件设计主要由主程序,超声波发射子程序,超声波接受中断程序及显示子程序组成。
C语言程序设计有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行的时间下面对超声波测距器的算法,主程序,超声波发射子程序和超声波接受中断程序逐一介绍。
6.1超声波测距器的算法设计
下图示意了超声波测距的原理,即超声波发生器T在某一时刻发出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声波接收器R所接受。
这样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器与反射物体的距离。
距离计算公式:
d=s/2=(c*t)/2
*d为被测物与测距器的距离,s为声波的来回路程,c为声速,t为声波来回所用的时间
声速c与温度有关,如温度变化不大,则可认为声速是基本不变的。
如果测距精度要求很高,则应通过温度补偿的方法加以校正。
声速确定后,只要测得超声波往返时间,即可求得距离。
在系统加入温度传感器来监测环境温度,可进行温度被偿。
这里可以用DS18B20测量环境温度,根据不同的环境温度确定一声速提高测距的稳定性。
为了增强系统的可靠性,应在软硬件上采用抗干扰措施。
不同温度下的超声波声速表
6.2主程序
主程序首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端P0和P2清0。
然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。
由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取20℃时的声速为344m/s则有:
d=(C*T0)/2=172T0/10000cm(其中T0为计数器T0的计数值) 测出距离后结果将以十进制BCD码方式LED,然后再发超声波脉冲重复测量过程。
主程序框图如下:
6.3超声波发生子程序和超声波接收中断程序
超声波发生子程序的作用是通过P1.0端口发送2个左右的超声波信号频率约40KHz的方波,脉冲宽度为12us左右,同时把计数器T0打开进行计时。
超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。
进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。
如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。
7.软硬件调试及性能
7.1调试
超声波测距仪的制作和调试,其中超声波发射和接收采用Φ15的超声波换能器TCT40-10F1(T发射)和TCT40-10S1(R接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距4~8cm,其余元件无特殊要求。
若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。
根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。
7.2性能分析
硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。
根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。
根据所设计的电路参数和程序,测距仪能测的范围为0.07~5.5m,测距仪最大误差不超过1cm。
系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。
8.结论
本设计采用AT89C51单片机作为计时及主控制器、用TCT40—l0Fl作超声波发射器、用TCT40—l0Sl和CX20106A构成超声波检测接收电路。
将相关控制编程,写入单片机,实现了以单片机控制的超声波测距器。
本超声波测距器采用硬件电路和软件控制相结合,电路结构简单,低成本,操作方便,工作稳定,测量精度高,可达0.01米。
可用于日常生活及工农业生产中距离的测量及位置监控。
例如管道长度、油井深度、液面高度,建筑施工各点定位等。
本超声波测距器只具有测量显示功能,没有反馈与控制功能。
其设计思想可以应用于智能安全系统。
例如,在车辆智能自动安全系统中,检测车辆左、右动、静态障碍物,并显示距离,至危险区域后与智能模糊控制器通信以采取最佳避让措施等。
参考文献
[1]余成波.传感器与自动检测技术[M].北京.高等教育出版社,2004:
124
[2]李全利.单片计原理及接口技术[M].北京.高等教育出版社,2004:
23
[3]张毅刚.单片机原理及应用[M].北京.高等教育出版社,2004:
31
[4]周航慈.单片机应用程序设计技术[M].北京.北京航空航天大学出版,2002:
11
附录
总电路图
程序清单
*中断入口程序*
ORG0000H
LJMPSTART
ORG0003H
LJMPPINT0
ORG000BH
LJMPINTT0
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
*主程序*
START:
MOVSP,#4FH
MOVR0,#40H;40~43H为显示数据存放单元(40为最高位)
MOVR7,#0BH
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP
MOV20H,#00H
MOVTMOD,#21H;T1为8位自动重装模式,T0为16位定时器
MOVTH0,#00H;65ms初值
MOVTL0,#00H;40KHz初值
MOVTH1,#0F2H
MOVTL1,#0F2H
MOVP0,#0FFH
MOVP1,#0FFH
MOVP2,#0FFH
MOVP3,#0FFH
MOVR4,#04H;超声波脉冲个数控制(为赋值的一半)
SETBPX0
SETBET0
STEBEA
CLR00H
SETBTR0;开启测距定时器
START1:
LCALLDISPLAY
JNB00H,START1;收到反射信号时标志位为1
CLREA
LCALLWORK;计算距离子程序
SETBEA
CLR00H
SETBTR0;重新开启测距定时器
MOVR2,#64H;测量间隔控制(约4*100=400ms)
LOOP:
LCALLDISPLAY
DJNZR2,LOOP
SJMPSTART1
*中断程序*
;T0中断,65ms中断一次
INTT0:
CLREA
CLRTR0
MOVTH0,#00H
MOVTL0,#00H
SETBET1
SETBEA
SETBTR0;启动计时器T0,用以计算超声波来回时间
SETBTR1;开启发超声波用定时器T1
OUT:
RETI
;T1中断,发超声波用
INTT1:
CPLVOUT
DJNZR4,RETIOUT
CLRTR1;超声波发送完毕,关T1
CLRET1
MOVR4,#04H
SETBEX0;开启接收回波中断
RETIOUT:
RETI
;外中断0,收到回波时进入
PINT0:
CLRTR0;关计数器
CLRTR1
CLRET1
CLREA
CLREX0
MOV44H,TL0;将计数值移入处理单元
MOV45H,TH0
SETB00H;接收成功标志
RETI
*延时程序*
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR6,DL2
DJNZR6,DL1
RET
*显示程序*
;40H为最高位,43H为最低位,先扫描高位
DISPLAY:
MOVR1,#40H;G
MOVR5,#0F7H;G
PLAY:
MOVA,R5
MOVP0,#0FFH
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
LCALLDLIMS
INCR1
MOVA,R5
JNBACC.0,ENDOUT;G
RRA
MOVR5,A
AJMPPLAY
ENDOUT;MOVP2,#0FFH
MOVP0,#0FFH
RET
TAB;DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
;共阳数码管0,1,2,3,4,5,6,7,8,9,不亮,A,—
*距离计算程序(=计算值×17/1000cm)近似
WORK:
PUSHACC
PUSHPSW
PUSHB
MOVPSW,#18H
MOVR3,45H
MOVR2,44H
MOVR1,#00D
MOVR0,#17D
LCALLMUL2BY2
MOVR3,#03H
MOVR2,#0E8H
LCALLDIV4BY2
LCALLDIV4BY2
MOV40H,R4
MOVA,40H
JNZJJ0
MOV40H,#0AH;最高位为0,不点亮
JJ0:
MOVAR0
MOVR4,A
MOVAR1
MOVR5A
MOVR3,#00D
MOVR2,#100D
LCALLDIV4BY2
MOV41H,R4
MOVA,41H
JNZJJ1
MOVA,40H;此高位为0,先看最高位是否为不亮
SUBBA,#0AH
JNZJJ1
MOV41H,#0AH;最高位不亮,次高位也不亮
JJ1:
MOVA,R0
MOVR4,A
MOVA,R1
MOVR5,A
MOVR3,#00D
MOVR2,#10D
LCALLDIV4BY2
MOV42H,R4
MOVA42H
JNZJJ2
MOVA,41H;次高位为0,先看次高位是否为不亮
SUBBA,#0AH
JNZJJ2
MOV42H,#0AH;次高位不亮,次高位也不亮
JJ2:
MOV43H,R0
POPB
POPPSW
POPACC
RET
*两字节无符号数乘法程序
MUL2BY2:
CLRA
MOVR7,A
MOVR6,A
MOVR5,A
MOVR4,A
MOV46H,#10H
MULLOOP1:
CLRC
MOVA,R4
RLCA
MOVR4,A
MOVA,R5
RLCA
MOVR5,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVA,R0
RLCA
MOVR0,A
MOVA,R1
RLCA
MOVR1,A
JNCMULLOOP2
MOVA,R4
ADDA,R2
MOVR4,A
MOVA,R5
ADDCA,R3
MOVR5,A
MOVA,R6
ADDCA,#00H
MOVR6,A
MOVA,R7
ADDCA,#00H
MOVR7,A
MULLOOP2:
DJNZ46H,MULLOOP1
RET
*四字节/两字节无符号数除法程序*
DIV4BY2:
MOV46H,#20H
MOVR0,#00H
MOVR1,#00H
DIVLOOP1:
MOVA,R4
RLCA
MOVR4,A
MOVA,R5
RLCA
MOVR5,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVA,R0
RLCA
MOVR0,A
MOVA,R1
RLCA
MOVR1,A
CLRC
MOVA,R0
SUBBA,R2
MOVB,A
MOVA,R1
SUBBA,R3
JCDIVLOOP2
MOVR0,B
MOVR1,A
DIVLOOP2:
CPLC
DJNZ46H,DIVLOOP1
MOVA,R4
RLCA
MOVR4,A
MOVA,R5
RLCA
MOVR5,A
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
RET;
END
本文来自网络,版权归原作者所有,请下载后,尽快删除。