超声波测距课程设计报告.docx
- 文档编号:23763154
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:35
- 大小:849.72KB
超声波测距课程设计报告.docx
《超声波测距课程设计报告.docx》由会员分享,可在线阅读,更多相关《超声波测距课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
超声波测距课程设计报告
课程设计说明书
题目:
超声波测距
院(系):
电子工程与自动化
专业:
自动化
学生姓名:
卢朋朋
学号:
0900320123
指导教师:
赵学军、龙超、李平
2011年11月11日
摘要:
在理解超声波测距原理的基础上,设计了基于AT89S52为核心控制器的超声波测距系统,考虑到温度对超声波传输速率的影响,用DS18B20温度传感器进行温度补偿。
用单片机产生40KZH去驱动压电传感器发射超声波,接收电路采用索尼公司集成芯片CX20106对回波进行处理。
LCD显示电路对数据进行实时显示。
关键字:
超声波测距、AT89S52、温度补偿DS18B20、LCD显示电路,CX20106
Abstract:
ultrasonicranginginunderstandingbasedonthetheoryofdesignasthecorecontrollerbasedonAT89S52devicesofultrasonicrangingsystem,consideringthetemperatureofultrasonictransmissionrate,theinfluenceofthetemperaturesensorDS18B20withtemperaturecompensation.Producedbysinglechip40KZHtodrivepiezoelectricsensorsemitultrasonicreceivingcircuitusingSONYCX20106integratedchipstoechoforprocessing.LCDdisplaycircuitforreal-timedatashow.
引言:
常用的超声波频率为几十KHZ-几十MHZ。
由于超声波指向性强,因而常于距离的测量。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人,汽车安全,海洋测量等上得到了广泛的应用。
本设计提供一种液晶显示测距装置,该装置利用了发射接收一体化的超声波传感器和微处理器。
采用超声波传感器分时工作于发射和接收,利用声波在空气中的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物到超声波测距器之间的距离。
距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。
尽管测距有多种方式,比如,激光测距,微波测距,红外线测距和超声波测距等。
但是,超声波测距不失为一种简单可行的方法。
虽然超声波测距电路多种多样,甚至已有专用超声波测距集成电路。
但是,有的电路复杂,技术难度大,有的调试困难,有的元件不易购买。
本文介绍的电路,成本低廉,性能可靠,所用元件易购,并且利用测距原理,结合单片机的数据处理,使测量精度提高,电路实现容易,无须调试,工作稳定可靠。
第一章:
课程设计概述
1课程设计概述
1.1课程设计题目
使用超声波传感器,实现距离的测量,显示精确到1毫米
1.2主要仪器设备
示波器1台
直流稳压电源1台
数字万用表1块
PC机1台
第二章:
设计原理
2.1超声波测距原理
超声波传感器分机械方式和电气方式两类,它实际上是一种换能器,在发射端它把电能或机械能转换成声能,接收端则反之。
本次设计超声波传感器采用电气方式中的压电式超声波换能器,它是利用压电晶体的谐振来工作的。
它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。
在超声波电路中,发射端输出一系列脉冲方波,脉冲宽度越大,输出的个数越多,能量越大,所能测的距离也越远。
超声波测距的方法有多种:
如往返时间检测法、相位检测法、声波幅值检测法。
本设计采用往返时间检测法测距。
其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。
测试传输时间可以得出距离。
假定l为被测物体到测距仪之间的距离,测得的时间为t/s,超声波传播速度为v/m·s-1表示,则有关系式
(1) l=vt/2
(1) 在精度要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式
(2)对超声波传播速度加以修正,以减小误差。
(2) 式中,T为实际温度单位为℃,C0为绝对温度时的速率,是常数。
t为往返时间差。
在本系统中利用AT89S52中的定时器T2的输入捕获中断测量超声波的传输时间,利用DS18b20测量环境温度,从而提高环境温度
2.2系统的工作原理
系统的工作是由软件和硬件的配合过程。
先由单片机产生40kHz频率的方波信号经过压电换能器(超声波发射头)将信号发射出去及发射超声波,同时该时刻启动输入捕获中断开时计时。
该信号遇到障碍物反射回来在此称为回波。
同时,压电换能器(超声波接收头)将接收的回波及接收超声波经过集成芯片CX20106进行处理送给单片机。
最后进行LCD液晶显示,超声波测距系统设计框图如下图所示。
单片机AT89S52
LCD液晶显示
温度采集
超声波发射
超声波接收
无线控制
±5V电源
第三章:
系统的硬件设计
硬件电路主要分为单片机系统及显示电路、超声波发射电路、超声波接收电路和DS18b20温度控制电路等部分组成
3.1AT89S52单片机
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程
Flash存储器。
使用Atmel公司高密度非易失性技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
·8位字长的CPU
·可在线ISP编程的8KB片内Flash存储器
·256B的片内数据存储器
·可编程的32根I/O口线(P0~P3)
·4.0-5.5V电压操作范围
·3个可编程的16位的定时/计数器
·双数据指针DPTR0和DPTR1;
·具有8个中断源、6个中断矢量、2级优先权的中断系统
·可在“空闲”和“掉电”两种低功耗方式运行;
·3级程序锁定位
·全双工的UART串行通信口
·1个看门狗定时器WDT
·具有断电标志位POF
·振荡器和时钟电路的全静态工作频率为0-30MHZ
·与MCS-51单片机产品完全兼容
单片机正常工作时,都需要有一个时钟电路,和一个复位电路。
本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路
复位电路
在电路图中,电容的的大小是10uF,电阻的大小是10k。
所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。
对于AT89S52单片机只要其RESET管脚出现2US以上的高电平就足以使单片机复位。
所以,上面的电路完全可以使单片机复位。
时钟电路:
计算机工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲
是由单片机控制器中的时序电路发出的。
单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。
为了保证各部件间的同步工作。
单片机内部电路就在惟一的时钟信号控制下严格的按时序进行工作。
要给单片机提供时序要有相
关的硬件电路,即振荡器和时钟电路。
因此选择了内部时钟方式。
利用蕊片内部的振荡器,然后在引脚XTAL1和XTAL两端跨接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路如上图所示,外接晶振时,C1和C2值通常选择为30PF左右。
C1,C2对频率有微调作用。
晶体的频率范围可在1.2~12MHZ之间选择。
在实际连接中,为了减少寄生电容,更好地保证振荡器稳定。
可靠地工作,振荡器和电容应尽可能安装得与单片机蕊片靠近。
3.2超声波发射电路
编程由单片机P3.6端口输出40kHz左右的方波脉冲信号,由于单片机端口输出功率不够,40kHz方波脉冲信号分成两路,送给一个由74LS04组成的推挽式电路进行功率放大以便使发射距离足够远,满足测量距离要求,最后送给超声波发射换能器以声波形式发射到空气中。
发射部分的电路如下图所示。
单片机输出的40KHZ的方波经过由NPN三极管组成的开关电路是为了提高40KHZ脉冲的功率、防止外部因素的干扰。
3.3超声波接收电路
CX20106是一款红外线检波接受的专用芯片,常用于电视机红外遥控接收器
使用CX20106A作为超声波接收处理的典型电路。
(当CX20106A接收到40KHz的信号时,会在第7脚产生一个低电平下降脉冲,这个信号可以接到单片机的P1.1引脚作为输入捕获中断信号输入)
使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。
其总放大增益80db。
以下是CX20106A的引脚注释。
下面是CX20106A集成电路的内部结构图
1脚:
超声信号输入端,该脚的输入阻抗约为40kΩ。
2脚:
该脚与地之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。
增大电阻R1或减小C1,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。
但C1的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R1=4.7Ω,C1=1μF。
3脚:
该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3μf。
4脚:
接地端。
5脚:
该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。
例如,取R=200kΩ时,f0≈42kHz,若取R=220kΩ,则中心频率f0≈38kHz。
6脚:
该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。
7脚:
遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22kΩ,没有接受信号是该端输出为高电平,有信号时则产生下降。
8脚:
电源正极,4.5~5V。
电路采用集成电路CX20106A。
这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38kHz与测距超声波频率40kHz较为接近,可以利用它作为超声波检测电路。
实验证明,其具有很高的灵敏度和
较强的抗干扰能力。
适当改变C1的大小,可改变接收电路的灵敏度和抗干扰能力。
R1和C1控制CX20106A内部的放大增益,R2控制带通滤波器的中心频率。
一般取R1=4.7Ω,C1=1μF。
其余元件按图4取值。
US_R1为超声波接收头,当收到超声波时产生一个下降沿,接到单片机的外部中断INT0上。
当超声波接收头接收到40kHz方波信号时,将会将此信号通过CX20106A驱动放大送入单片机的外部中断0口。
单片机在得到外部中断0的中断请求后,会转入外部中断0的中断服务程序进行处理,在移动机器人的避障工作中,可以在中断服务程序设定需要单片机处理的最短距离,比如0.5m。
对于距离大于0.5m的障碍物,可以不做处理直接跳出中断服务程序;对于距离
小于或等于0.5M.
超声波接收电路原理图
3.4LCD液晶显示电路
3.4.1LCD1602引脚说明
3.4.2LCD1602电路原理图
D0~D7接单片机P2口,RS、RW、E分别接P03,P04,P05;用于产生控制信号控制液晶的LCD的显示工作;P2口用于传送数据或指令
为使显示屏能具有满意的亮度,在+5V和-5V之间接一个电位器,用于调节VEE的电压。
VEE的电压一般取0~-5V。
3.4.3LCD1602指令说明
3.4.4LCD1602的数据控制
控制器内部设有一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM
3.3.4.1数据指针的设置
3.3.4.2读数据
LCD1602的读时序如图3.3.4.1所示。
从图中可以看出:
R/W=1时,执行读操作,在E信号的上升沿开始执行读出,把LCD1602内的RAM内容读出到数据总线DB0~DB7上。
这时如果RS=1,则读出的是显示数据:
如果RS=0,则读出的是指令数据。
图3.3.4.1
3.4.4.3写数据
LCD1602的写时序如图3.3.4.2所示。
写时序和读时序的区别在于R/W信号为低电平,即R/W=0。
这时,必须先把写入的数据由外部单片机送入数据总线DB0~DB7,然后在能动信号E的下降沿时,把数据从DB0~DB7写入到模块的显示数据存储器RAM中。
同样,在RS=1时,写入的是数据;RS=0时,写入的是指令。
图3.3.4.2
3.3.4.4其它设置
3.5温度补偿DS18b20
图3.4
由于超声波的传播速度v会受温度、湿度、压强等的影响,其中温度的影响尤为严重。
因此在测量精度要求高的场合,应通过温度补偿对超声波的传播速度进行校正,以减小误差。
本系统采用DALLAS公司的DSl8820数字式温度传感器进行温度测量,它所测量的温度值用9位二进制数直接表示,这些值通过DSl8820的数据总线直接输入CPU,无需A/D转换,而且读写指令、温度转换指令都是通过数据总线传入DSl8820,无需外部电源。
DSl8820数字温度传感器与AD590、LM35等温度传感器相比,具有相当的测温范围和精度,温度测量精确、不受外界干扰等优点。
硬件结构如图3.4所示
3.6系统总的原理图
3.7系统总的PCB图
第四章:
系统软件部分设计
单片机控制发射电路发射超声波,然后打开输入T2捕获中断对反射回来的回波信号进行检测;当检测到回波成功标志位时,调用读取温度程序,对超声波的传输速率进行温度补偿,把定时器里面的数值转换成时间,利用公式计算出距离;本程序选择9个数据为一组进行处理,然后对着9组数据进行排序,去掉最大值和最小值后对余下的数据求平均值处理
4.1流程图
主程序流程图:
输入捕获中断流程图:
4.2AT89S52主程序中要完成的工作
1.调用系统初始化函数对系统进行初始化,调用中断,LCD1602,DS18b20初始化函数;
2.调用子函数读取当前的温度值和温度显示子函数对当前温度进行显示
3.调用发射40KHZ函数,打开输入捕获中断对反射回来的回波进行检测
4.调用数据处理子函数,对测的距离数据进行处理并显示
4.3软件模块设计
4.3.1LCD显示函数
写指令函数:
voidwr_com(unsignedchar);
写数据函数:
voidwr_dat(unsignedchar);
液晶初始化:
voidlcd_init(void);
特定的位置写特定的字符:
voiddisplay_string(unsignedchar,unsignedchar*);
4.3.2DS18b20测温函数
18b20复位函数:
voidds1820rst(void);
读数据函数:
unsignedchards1820rd(void);
写数据函数:
voidds1820wr(unsignedchar);
读取温度值函数:
unsignedintread_temp(void);
温度显示函数:
voidds1820disp(void);
4.3.3定时中断函数
定时中断初始函数:
voidinit_interrupt(void);
T2中断函数:
voidTimer2(void)interrupt5
4.3.4超声波数据处理函数
对测回的数据进行排序:
voidpai_xu(void);
第五章系统的调试
4.1单片机的程序仿真
由于proteus仿真库里面没有超声波发射和接收探头和集成芯片CX20106A芯片,所以只对温度和产生40KHZ的部分进行了仿真
系统的仿真电路图
40KHZ方波的波形图
4.2AT89S52单片机系统电路调试
AT89S52最小系统包括晶振和复位电路,按键电路,LCD显示,以及ISP下载接口。
做出电路板后,就开始调试单片机;首先用万用表测一个电路板导通性;经过一番的检查,所有的线路的都是通的,焊接没有问题。
接着就对单片机上电,开始下载口的调试时,很悲剧,这块板不能够下载程序;首先检查了地线和电源线没有问题,然后检查下载口电路,没有问题;接着有把晶振换了一个,也是不能下载;看了一篇博文讲了晶振电容如果选的太小的话,晶振起振不起来;最后把自己板上的22pf电容换成了30pf的电容;果然,单片机可以下载程序了。
接着就把lCD1602也调试了;由于LCD1602液晶之前自己做过了,所以调试比较快!
LCD1602液晶只亮不显示字符从下几个方面检查:
1).背光度的调节2)1602的好坏3)1602程序中的写数据函数和写命令函数的时序检查;初始化函数的检查。
单片机调试好之后进行了超声波的发射和接收电路的调试。
4.3超声波发射和接收电路的调试
超声波发射电路调试:
首先用proteus仿真了一下,可以产生40KHZ的方波信号;超声波探头并没有发射出来超声波,有示波器观察了一下单片机管脚输出了40KHZ方波信号;可以肯定的问题出在了功率提高电路上。
然后测非门组成的功率推挽放大电路的输入端也没有40KHZ方波信号,得知问题在三极管上了,检查一下电路没有问题,于是换了一个三极管;果然问题解决了。
超声波接收电路调试:
当超声波接收探头接收到超声波时,CX20106A的7管脚会出现一个下降沿脉冲。
把超声波探头对着障碍物时示波器检测到下降沿了,但是这个下降沿不怎么稳定,当物体的距离改变时,脉冲的占空比也会发生变化;这可以说明接收电路是可以稳定的;但是为什麽波形不稳定,检查了好久,也看了CX20106的datasheet电路没有接错;超声波很容易受干扰,把两探头之间加一个挡板,问题解决了,是发射头和接收头装得太近了;
4.4系统调试
各个部分的调试完成以后,对整个系统进行调试,从距离约20mm开始
具体记录的数据如下所示。
实际距离
测量距离
实际距离
实际距离
20
21
100
95
40
38
120
115
60
56
140
144
80
77
200
198
300
298
400
396
测试过程中的电路图
超声波很容受外界干扰;所以在程序中加了数据处理部分:
没测一组数据把他存到数据缓冲区,当缓冲区存满时,对里面的数据进行从小到大排序,然后去掉最小值和最大值对余下的数据求平均值。
5总结与改进展望
本次设计中,完成了包括资料收集,系统设计及仿真,程序编写,电路图与PCB板的绘制腐蚀焊接及调试的全过程,整个系统完成测试后,性能稳定,基本达到了预期的目标。
这次课程设计的测距精度和远度达到了要求;可以设计更好的发射电路提高发射功率,比如加个功率放大电路;也可以大功率的发射头。
接收电路可以选择自己用运放去搭建放大和滤波电路对回波信号进行处理,也可以在接收电路与与单片机接口电路加一层隔离比如用三极管,这样可以防止误触发中断。
软件部分也有待改进,可以滤波算法进去,提高系统的稳定性;另外温度对超声波传输速率影响的很大可以更精确温度测量电路;而DS18B20检测温度只能精确到0.0625℃,若要再进一步提升各种指标的话,最好换一个精度更高的温度检测手段。
6谢辞
本次设计能够完成得到了许多帮助,首先感谢赵学军老师,李平老师以及龙超老师的耐心指导,为我们指出了设计的各种不足指出,并一次次为我们解决了调试过程中出现的各种问题。
正是有了他们的指导,我的设计才得以顺利完成。
感谢一同进行设计的同学们,是他们在我对着板子一筹莫展地时候给我指出了可能的错误,在调试过程中给予我各种意见,并且测量数据时给予我各种帮助,没有他们的帮助,我的设计不能得以完善。
感谢老师的悉心指导,感谢束迎亚和汤雷在课程设计对我的帮助。
参考文献
[1]华成英,童诗白.模拟电子技术基础[M].北京:
高等教育出版社,2006.
[2]马淑华,王凤文,张美金.单片机原理与接口技术[M].北京:
邮电大学出版社,2007.
[3]谭浩强.C程序设计[M].北京:
清华大学出版社,2005.
#include
#include
#include"1602.h"
//*******端口定义区*********//
//sbitclk=P3^6;
sbitTX=P3^6;
sbitRX=P1^1;
sbitDQ=P0^0;//ds18b20与单片机连接口
//*****变量定义区******//
unsignedcharcapture_flag=0;
unsignedcharflag=0;
unsignedcharcounter;
unsignedcharcodestr1[]={"temperatu:
"};
unsignedcharcodestr2[]={"distance:
"};
unsignechardisdata[7]={'0','0','0','0','m','m','\0'}
unsignedintdistance_data[9];
unsignedcharoutcome_H,outcome_L;
unsignedcharj;
unsignedintTime;
unsignedintdistance;
unsignedcharcounter;
unsignedchardataT_disdata[5];
unsignedinttvalue;//温度值
unsignedchartflag;//温度正负标志
//****函数声明区*********//
voiddelay_20us(void);
voidinit_interrupt(void);
voidinit_time2(void);
voiddelay_18B20(unsignedint);
voidds1820rst(void);
unsignedchards1820rd(void);
voidds1820wr(unsignedchar);
unsignedintread_temp(void);
voidds1820disp(void);
voidinit_play(void);
voiddisplay(unsignedchar);
voidpai_xu(void);
voiddelay_20us()
{unsignedchar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超声波 测距 课程设计 报告