《基于单片机的超声波测距及温度补偿设计与实现(共17页).doc》由会员分享,可在线阅读,更多相关《基于单片机的超声波测距及温度补偿设计与实现(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 期末课程设计学 院: 软件学院 _ _专 业: 软件工程 _ _年 级: 2009级 _ _课 程: 单片机应用技术 _ _ 姓 名: 郭汉杰 _ _ _学 号: 8 _ _二一二 年 六 月专心-专注-专业基于单片机的超声波测距及温度补偿设计与实现摘 要 本文介绍了基于单片机STC90C516RD+的超声波测距系统的设计方案与软硬件实现。采用温度传感器DS18B20 采集温度数据,液晶显示屏LCD1602C 显示温度数据及来回波的时间,当环境温度变化较大时,提取测得的温度,根据不同的温度对超声波测距系统的声速进行修正。测距时接收到回波,点亮绿色发光二极管;当没有回
2、波时,定时器溢出,点亮红色发光二极管。本文给出了系统总体框架、硬件电路、软件设计和程序流程图,并在硬件平台上实现了所设计的功能。关键词 STC90C516RD+;超声波测距;温度补偿;温度传感器;液晶显示器一、 引 言1.1 超声波测距系统概述随着社会的发展,超声波测量及控制变得越来越重要。本文采用单片机STC90C516RD+设计了超声波测距及温度补偿系统。单片机STC90C516RD+能够根据温度传感器DS18B20所采集的温度数据来修正测距系统中的声速,从而使超声波测得的距离更准确。同时,当温度高于设定的温度时,单片机启动蜂鸣器发出报警,并点亮绿色发光二极管;当温度低于设定的温度时,蜂鸣
3、器停止报警。所有测距和温度数据均通过液晶显示器LCD1602 显示出来。当收到回波时,测距成功,并在屏幕上现实来回波的时间及距离,并可看到动态变化的当前温度和来回波时间;当未收到回波时,定时器溢出,测距失败,在屏幕上显示出错。1.2 本设计任务和主要内容制作超声波测距系统,并外加温度补偿使测距更精确。前期制作超声波发送与接收电路,经过调试正常可用后,编写相应的超声波程序,完成对于整个测距系统的控制。设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。以数字的形式显示测量距离。超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间
4、来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用11.0592MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P3.4端口输出低电平,通过硬件电路产生超声波换能器所需的40kHz的方波信号,利用外中断1口监测超声波接收电路输出的返回信号。显示电路采用简单实用的LCD1602。1.3 系统软硬件的
5、调试超声波测距仪的制作和调试都比较简单,其中超声波发射和接收采用16的超声波换能器T/R40-16(T为发射,R为接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距48cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得合适的接收灵敏度和抗干扰能力。硬件电路制作完成后,使用外加电源调试,用示波器检测振荡电路输出端是否有一个40KHz的方波。并可检查CX20106第7引脚在收到回波时是否产生低电平。调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以修改超声波发生子
6、程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测的范围为6150cm,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。二、 系统主要硬件电路设计2.1 系统硬件结构系统的硬件主要由单片机主机系统和超声波测距系统组成。其中单片机主机系统用到了单片机、液晶显示LCD1602、独立键盘、温度传感器DS18B20、蜂鸣器、LED发光二极管等;超声波测距系统则包括产生40KHZ的振荡电路(使用集成芯片CD4011和74LS04组成),超声波发送探头,超声波接收探头及超声波
7、接收芯片CX20106组成。2.2 单片机主机系统1) 单片机控制模块控制模块是整个设计方案的核心,它控制了温度的采集、处理与显示、超声波发送接收电路的启动及温度补偿。本文选用STC90C516RD+作为控制器件。其最突出的优点是片内Flash 为16K,可方便地擦写100万次以上,价格低廉,而且其指令丰富,编译工具多,仿真环境好。因此被广泛地应用于各种控制领域。2) 温度数据采集模块温度由DALLAS 公司生产的一线式数字温度传感器DS18B20 采集。DS18B20 测温范围为-55C+125C,测温分辨率可达0.0625C,被测温度用符号扩展的16 位补码形式串行输出。CPU 只需一根端
8、口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20 内部有一个9 字节的高速存储器用于存储温度值。其中前两个字节是测得的温度数据,第1 字节的内容是温度的低八位,第2 字节是温度的高八位,第3 和第4 字节是温度上限 TH 与温度下限 TL 的易失性拷贝,第5 字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新,第6、7、8 这三个字节用于内部计算,第9个字节是冗余检验字节,可用来保证通信的正确性。当温度转换命令发出后,经转换所得的温度值以二字节补码形式存放在此存储器的第1 和第2 个字节。单片机可通过单线接口读到该数据,
9、读取时低位在前,高位在后,其中高5 位是符号位,中间7 位是整数位,最低4 位是小数位。DS18B20 最大的特点是单总线数据传输方式,因此对读写的数据位有着严格的时序要求。时序包括:初始化时序、读时序、写时序。每一次命令和数据的传输都是从单片机启动写时序开始,如果要求DS18B20 回送数据,在进行写命令后,单片机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20 的时序及命令请参考文献。温度数据采集模块中温度传感器DS18B20 的DQ端接P2.6。3) 液晶显示LCD1602C:LCD1602C 是2 行16 个字符的字符型LCD 显示器,它由32 个字符点阵块组成,
10、每个字符点阵块由57 或510 个点阵组成,可以显示ASCII 码表中的所有可视的字符。它内置了字符产生器ROM (Character Generator ROM,CGROM)、字符产生器RAM (Character Generator RAM, CGRAM)和显示数据RAM(Data Display RAM, DDRAM)。CGROM 中内置了192个常用字符的字模,CGRAM 包含8 个字节的RAM,可存放用户自定义的字符,DDRAM 就是用来寄存待显示的字符代码。DDRAM 地址与显示位置的对应关系以及LCM1602 的指令与读写时序可参考文献。显示模块LCD1602C 的DB0DB7
11、数据端口接AD0AD7,数据命令选择端RS 接P2.0,读写选择端接P2.1,使能信号接P2.2,被光控制接P2.5,LCD1602C 上的VO、RST 接电源+5V,GND 接地。4) LED发光二极管:5) 蜂鸣器:6) 独立式键盘:2.3 超声波测距的设备1) 超声波测距系统的硬件电路设计:本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用STC90C516RD+,经济易用,便于编程。硬件设计上为减轻处理器负担,不采用软件方法,而使用硬件电路产生40KHZ的方波驱动超声波传感器。2) 超声波发射电路:发射电路主要由集成芯片与非门CD4011、反相器7
12、4LS04和超声波发射换能器T构成,单片机P3.4端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。发射电路图如下:压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电
13、晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。3) 超声波检测接收电路:接收电路图:超声波接收处理电路采用集成电路CX20106。CX20106为红外接收专用集成电路,在此利用CX20106作为超声波传感器接收信号的放大检波装置,亦取得良好的效果。CX20106采用8脚单列直插式塑料封装,内含前置放大、限幅放大、自动偏置、通带滤波、峰值检波、积分比较及施密特整形输出等电路。CX20106的总放大增益约为80 dB,以确保其7脚输出的控制脉冲序列信号幅值在正常范围内。只要CX20106接收到与其中心频率相符
14、的超声波信号时, 7脚就输出低电平。7脚输出的脉冲下降沿接单片机INT1口。三、 系统的软件设计3.1 系统控制流程超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),本文控制程序采用C语言编程。主程序调用了5个主要的子程序,分别是LCD 显示程序、按键扫描及处理程序、温度采集程序、超声波发送子程序、报警程序。LCD 显示程序,用于温度和距离等数据的实时显示;按键
15、扫描及处理程序,实现按键识别、按键输入及相关处理;温度采集程序负责把DS18B20所采集的现场温度读入到指定的数组中;超声波发送子程序,在P3.4引脚发出一个低电平,使硬件电路产生40KHZ的方波,从而驱动超声波发射端;报警程序,对当前距离与设定的报警距离进行比较,若低于设定值,则蜂鸣器开始报警。本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。系统软件的功能又可分为两大类:一是监控软件,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件,它是用来完成各种实质性的功能如测量、显示等功能。每一个执行软件也就是一个小的功能执
16、行模块。本文将各执行模块一一列出,各执行模块规划好后,就可以规划监控程序了。两软件分为部分,主程序和中断服务程序,如下图。主程序完成初始化工作、各路超声波发射和接收顺序的控制。定时中断服务子程序完成超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。3.2 超声波测距仪的算法设计主程序首先是对系统环境初始化,设置定时器T1工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口使能端P1.5置位。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可
17、测距离的原因)后,才打开外中断1接收返回的超声波信号。由于采用的是11.0592 MHz的晶振,计数器每计一个数时间约为1s,当主程序检测到接收成功的标志位后,将计数器T1中的数(即超声波来回所用的时间)按公式计算,即可得被测物体与测距仪之间的距离,设计测试时取20时的声速为344 m/s则有:d=(ct)/2=172*T1/10000cm (其中,T1为计数器T1的计算值。)声速c与温度有关,如温度变化不大,则可认为声速是基本不变的。若测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返时间,即可求得距离。在系统加入温度传感器来监测环境温度,可进行温度被偿。这里用
18、DS18B20测量环境温度,根据不同的环境温度确定一声速提高测距的稳定性。为了增强系统的可靠性,可在软硬件上采用抗干扰措施。不同温度下的超声波声速表:测出距离后结果将以十进制送往LCD1602显示一段时间,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离,主程序采用C语言编写。主要子程序及主程序:void display(uint t_emp) /显示距离 uint q,b,s,g; q=t_emp/1000; b=(t_emp%1000)/100; s=(t_emp%100)/10; g=t_emp%10; write_1602com(0x80+0x40+9); writ
19、e_1602dat(numq); delay(5); write_1602dat(numb); delay(5); write_1602dat(nums); delay(5); write_1602dat(numg); delay(5);write_1602dat( );delay(5);write_1602dat(C);delay(5);write_1602dat(M);void alarm(void) /报警 if(S=0&temp=100&temp=200&temp300)speed=0.01745;S=time*speed-2;display(S); alarm(); ledg=1;d
20、elay(10);ledg=0;EA=1; delay(10); 四、 结束语本文详细讲述了系统设计方案,并给出了相关程序流程。本设计应用性比较强,简单使用,可以应用在倒车雷达、机器人或小车避障等方面。另外,如果把本设计方案的电源电压提升,则可以测得更远的障碍,若使用防水型超声波探头,则可以进行水下探测,将具有更大的应用价值。设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。以数字的形式显示测量距离。超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,
21、另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用11.0592MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P3.4端口输出超声波换能器所需的40kHz的方波信号,利用外中断1口监测超声波接收电路输出的返回信号。显示电路采用简单实用的LCD1602。超声波发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P3.4端口输出的低电平信号,40kHz的方波信
22、号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振
23、板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的TR标志。超声波检测接收电路主要是由集成电路CX20106A组成,它是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz较为接近,可以利用它制作超声波检测接收电路。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电容的大小,可以改变接收电路的灵敏度和抗干扰能力。超声波测距仪的软件设计主要由主程序、超声波发生
24、子程序、超声波接收中断程序及显示子程序组成。我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编程。为增强程序的可读性,实际中采用了C语言近似计算的方法,通过多次试验测量校正软件误差。主超声波测距仪主程序利用外中断1检测返回超声波信号,一旦接收到返回超声波信号(即INT1引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T1停止计时。如果当计时器溢出时还未检测到超声波返回信号,则定时器T1溢出中断将外
25、中断1关闭。超声波测距的算法设计原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。在启动发射电路的同时启动单片机内部的定时器T1,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。 在元件及调制方面,由于采用的电路使用了很多集成电路。外围元件不是很多,所以调试没有很大困难。一般只要电路焊接无误,稍加调试应该会正常工作。电路中除集成电路外,对各电子元件也无特别要求。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得合适的接收灵敏度和抗干扰能力。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。