基于超声波的液位测距系统设计讲解.docx
《基于超声波的液位测距系统设计讲解.docx》由会员分享,可在线阅读,更多相关《基于超声波的液位测距系统设计讲解.docx(35页珍藏版)》请在冰豆网上搜索。
基于超声波的液位测距系统设计讲解
摘要
本文是利用超声波测距的原理而设计的一种液位测距系统。
该系统采用STC12C5A08S2单片机为核心控制器,并为超生测距模块提供触发控制信号,在发射超声波的同时,启动单片机的内部定时器开始计时,超声波在空气中传播遇到障碍物后反射回波,超声波接收电路检测到回波信号时停止计时,则根据公式:
S=Vt/2即可计算出液位距离。
文中设计的系统着重解决了超声波测距的时间计算和温度补偿问题。
其中通过温度传感器将温度值采集到单片机中,经过一定的数值修正即可得到当时温度值下的超声波传播速度V。
本文采用了硬件和软件相结合的设计方法,在软件方面,采用了汇编语言进行程序编写。
在数据处理上充分利用汇编语言的查表优势,建立了速度修正值表和数码管显示值表,可以便捷、明了地进行数据处理和显示。
关键词:
超声波测距STC12C5A08S2温度补偿液位测距系统
TitleDesignofliquidlevelbasedonultrasonicdistancemeasurementsystem
Abstract
Thisarticledesignsaliquidlevelmeasurementsystemwhichisbasedontheprincipleofultrasonicdistancemeasurement.ThesystemtakesSTC12C5A08S2asthecoreofthesystemcontroller.TheSCMprovidescontrolsignalsforultrasonicdistancemeasurementmodules,andstartsthemonolithicintegratedcircuitinternaltimertoworkwhileemittingultrasonic.Ultrasonicreflectionechoafterthecommunicationobstaclesintheair,andtheSCMstopstimingwhentheechosignalisdetectedbytheultrasonicreceiver.Accordingtotheformula:
S=Vt/2,theliquidleveldistanceiscalculated.
Thesystemisdesignedtofocusonthetimeandtemperaturecompensationofultrasonicdistancemeasurement.ThetemperaturevalueiscollectedintheSCMthroughthetemperaturesensor,undergoingacertainnumericalcorrectiontogettheultrasonicwavepropagationvelocityunderthetemperature.Thisarticleusesacombinationofhardwareandsoftwaredesign.Insoftware,weuseassemblylanguagetoprogram.FulluseofAssemblylanguagereferencetableadvantagesindataprocessing,weestablishedthespeedcorrectiontableandthedigitaldisplayvaluestablewhichcanbeconvenientandclearfordataprocessinganddisplay.
Keywords:
Ultrasonicdistance-measuring;STC12C5A08S2;Temperaturecompensation;Liquidlevelmeasurementsystem
1引言
1.1测距在工业方面的应用
在现代工业现场,测距技术的应用可以说是无处不在。
在水利水电、污水处理领域,利用测距技术可对水面高度实现实时监测。
在冶金、物料液位、管道等不宜直接接触的场合,非接触式测量技术发挥了重要作用。
激光测距技术作为非接触式测量技术的一种,可以实现对工业生产线上的物料传送定位、电梯的运行监测、移动机器人的测距定位等。
在车载导航、石油、化工等领域,超声波测距技术都得到了广泛的应用。
1.2现有的测距方法及其优缺点
最早的测距技术大多是基于机械传动工作原理的测距,随着工业控制的需求,慢慢过渡到机电一体化式测距,而随着系统集成性的需要正朝着智能式测距发展。
其中作为机械式测距技术的代表,机械钢带式液位计优点是结构简单、价格低廉,但是机械传动部件较多,安装、维护比较困难,且只限于测液位。
非接触式测距技术因其独特的优势已经广泛应用于工业现场控制。
现在典型的非接触测距方法有雷达探测、激光探测、CCD探测和超声波测距等方法。
其中激光具有穿透力强、强度高等特点适合在恶劣天气如大雾天或远距离测距系统中使用,成本较高。
而CCD测距不需要信号发射器,主要利用光电耦合器将光信号转化为电信号,所得模拟信号经A/D转换电路后转化为便于处理的数字信号。
全过程需要采集大量的信息,计算量大。
相比之下,超声波测距因其独特的优势适合短距离的测距系统,特别是在工业现场不易人们直接接触的场合发挥了很大的作用。
超声波主要应用于车辆导航、物料定位、建筑工地以及空气中和水下目标的探测、定位等场合。
从上世纪八十年代开始,国外就开始利用微电子技术和计算机等高科技成果,带动液位测量技术的发展。
就目前为止,工业中运用的液位测量方式就有几十种,比如常见的有压电式、应变式、电容式等。
这些方法同早期的机械测量相比,运用比较简单,但大都采用了如压力值、电气量等中间量来反映液位值,增加了测量误差。
而超声波测距却可实现精确测距,改善了系统的精度。
因此,无论是工业现场控制,还是人们的日常生活中,超声波的应用已经很成熟。
1.3超声波测距的原理及优点
超声波测距模块主要有超声波发射和接受两部分,给定的触发信号经过放大电路放大后产生超声波,并开启定时/计数器计时;当超声波在传播途中遇到障碍物后反射回波,测距模块接收电路检测到反射回波时就停止计时。
通过查表获取声速在当时温度的修正值V,从定时/计数器中获取传播时间t,即可根据公式S=Vt/2计算出测试点到障碍物之间的距离S。
由于超声波在空气中的方向感很强,探测距离很远,基于超生波的测距被广泛应用,而且其数据处理比较简单,利用软件编程即可实现计算机实时控制,通过温度补偿更是可以大大提高测量精度,基本上可以满足工业现场控制要求。
超声波液位测量采用高速高性能的单片机为微控制器不仅能够实现定点连续测量液位,还可以提供需要的信号进行远距离控制。
与价格昂贵、系统复杂的激光测量系统相比,超声波测距成本较低、系统可靠性高。
应用于工业现场的超声波测距系统大多没有复杂的传动、运动部件,安装、维护时比较方便,尤其是在气体或液体中测量时超声波测距系统性能表现出较大的优越性。
比如在工业或生活污水处理现场中,超声波测距技术就得到了很好的应用。
1.4课题研究的意义
在石油、化工、渠道、污水处理等领域的过程控制当中,经常要对管道、仓储进行液位的实时监测。
尤其是在石油、化工和污水处理等领域,工业现场的环境很恶劣,若采用接触式测量,则各种腐蚀性液体、气体等会损坏传感器探头而影响测量精度和可靠性。
在这种环境下,非接触式测量成为人们的首选,而超声波测距因为系统可靠性高、不易受环境因素(如磁场、腐蚀性气体或液体等)影响,能够满足一般工业精度要求,得到了很广泛的应用和发展。
随着技术的发展和需要,新型的、智能化超声波测距逐渐得到应用,因此,通过超声波液位测距系统设计,掌握超声波测距原理的应用及液位测距系统硬件电路的设计,通过编程实现液位测距功能,可以让我们更加熟悉一个系统设计的流程及应具备的基本知识,提高我们的实战能力和经验。
2总体方案论证
文中利用超声波测距的原理设计了一套液位测距系统。
利用超声波在空气中传播遇到障碍物后反射回波,并通过回波接收电路检测回波信号,用t表示超声波从发出到检测到回波信号的时间,V为超声波在空气中的传播速度,则可计算出液位的距离S=Vt/2。
采用硬件设计和软件设计相结合的方式,选用单片机为微控制器,超声波发射和接收器分别通过相应电路与单片机相连,这样就可以通过单片机来控制超声波的发射和接收,并利用单片机的内部定时器/计数器计算超声波的传输时间t。
对于超声波的传播速度V的温度补偿问题,可以通过温度传感器与单片机连接,实时测得温度值并通过公式V=331.5+0.607T来修正速度V[13]。
文中设计系统的控制框图(如图2.1)。
图2.1系统控制结构框图
2.1系统方案简化
为了系统设计的简单化,在超声波发射和接受这块进行了简化,经过比较和文献资料的查阅,选用HC—SR04超声波测距集成模块代替复杂的超声波发射、接收和检波电路,这样系统控制就简单的多。
只需要单片机提供一定的电平触发信号,HC—SR04模块就会自动发射、接收和检测回波信号。
简化后的系统控制框图(如图2.2)。
图2.2系统控制结构简化框图
2.2系统软件设计说明
系统的软件部分是使用keil软件编程,程序采用汇编语言编写。
充分利用汇编语言查表的优势,在程序中建立了超声波传播速度修正值表和4位共阴数码管显示值表,从而大大简化了数据处理和显示。
单片机通过P1.3、和P1.4口控制超声波测距模块的触发和接收回波信号。
对于超声波传播时间t的计算,利用单片机的内部定时器/计数器通过软件编程来实现。
在发射超声波的同时启动定时器T0,当接收到回波信号时关闭T0停止计数。
事先设置单片机工作频率为11.0592MHz,则计数一次代表1US。
最终的速度计算结果通过P0口输给数码管显示部分。
数码管的选通与控制是通过P2口经74HC138译码器来实现。
3系统硬件电路设计
该超声波液位测距系统硬件电路主要有四大部分组成,主要是HC—SR04超声波测距集成模块、温度传感器、单片机和数码管显示部分。
本章将分别从这四大部分进行设计和说明,包括器件的选型和模块的电气连接等。
3.1HC—SR04超声波测距模块简介
HC—SR04超声波测距模块主要包括超声波发射器、超生波接收器和相关的控制电路。
该模块主要是利用超声波的测距原理,适用于2cm~450cm的非接触测量。
该模块有4个引脚,分别是VCC、Trig、Echo、GND,实物图(如图3.1)。
其中VCC是电源端,接DC5V电源,GND是接地端,Trig为触发控制信号的输入端,在试验中接单片机的P1.3口,Echo是回波信号输出端,接单片机的P1.4端口。
图3.1HC—SR04实物图
3.1.1HC—SR04主要电气参数介绍
电气参数
HC—SR04超声波测距模块
工作电压
DC5V
工作电流
15mA
最远射程
450cm
最近射程
2cm
输入触发信号
10us的TTL脉冲
输出回响信号
输出TTL电平信号,与射程成比例
3.1.2超声波测距模块工作时序图
HC—SR04模块工作时只需要单片机的P1.3口送一个不低于10us的高电平触发信号,模块内部会自动循环发出8个40KHz的脉冲,且模块的回响信号输出端会自动检测回波信号,当检测到回响信号时该端口会输出一个高电平信号,该高电平信号的持续时间与检测距离成比例。
其工作时序图(如图3.2所示)。
图3.2工作时序图
3.2单片机的选型(STC12C5A08S2)
作为液位测距系统的核心控制部分,单片机担负着给HC—SR04超声波测距模块发送触发信号和超声波的传输时间计时、温度值采集、距离计算及结果输出等功能。
经过资料的查阅和对比,最终选择价格便宜、性能稳定、低功耗的STC12C5A08S2单片机。
选择该型号单片机的另一个重要因素是在导师的实验室有许多现成的该型号单片机,这样就节省了系统设计的额外成本。
3.2.1STC12C5A08S2简介
STC12C5A08S2是STC公司生产的一种单片机,是增强型8051单片机的一种,兼容传统51单片机的指令系统。
STC12C5A08S2采用双列直插式封装共40管脚,有8K的Flash存储空间,两个16位的定时器T0、T1。
以下是STC12C5A08S2单片机的引脚功能图3.3及相关介绍。
图3.3STC12C5A08S2单片机管脚图
(1)电源端:
40管脚是VCC端,连接供电电源+5V。
20管脚是GND端,工作时接地。
(2)时钟电路端XTAL2和XTAL1引脚:
XTAL1是内部时钟电路反相放大器输入端,接外部晶振的一个引脚。
当直接使用外部是时钟电源时,XTAL1作为外部时钟源的输入端(STC12C5A08S2应用技术手册)。
XTAL2则是内部时钟电路反相放大器的输出端,和外部晶振的另一端相连,当直接使用外部时钟电源时,此引脚可悬空,此时XTAL2实际将XTAL1输入的时钟进行输出(STC12C5A08S2应用技术手册)。
(3)串口部分:
在此着重介绍在系统设计中用到的P0、P1、P2口相关串口。
P0.0—P0.7
P0口可以作为标准的8位输入/输出口,此时内部有弱上拉电阻而无需外接上拉电阻。
P0口也可以分时作为数据/地址复用总线。
在本系统中P0口用作数据输出口,对应数据的AD0-AD7。
P1.0—P1.7
P1口是8位标准的I/O口,部分管脚有扩展功能。
在本系统中利用P1.7口连接温度传感器的信号输入端。
P2.0—P2.7
P2口内部也有弱上拉电阻,可以作为输入/输出口,也可以作为8位地址总线使用。
在本系统设计中,就是利用P2.0、P2.1、P2.2分别连接74HC138地址译码器的A、B、C端进行地址的扩展和选通。
3.2.2单片机最小应用系统
一个单片机的最小应用系统包涵如下几个部分:
工作电源、接地、复位电路、晶振电路等。
该系统中单片机的所用晶振为11.0592MHz,因此只需利用STC12C5A08S2单片机的第一复位功能键即可。
当系统工作频率大于12MHz时需采用STC12C5A08S2的第二复位功能键,在此不做详细介绍。
至于晶振电路部分,采用的是可以更换晶振的电路设计,在本系统中所采用晶振频率为12MHz。
STC12C5A08S2单片机的最小应用系统的电路图(如图3.4)。
图3.4STC12C5A08S2单片机最小应用系统电路图
3.3显示电路的设计
系统的显示采用的数码管显示电路,测量的距离结果用4位共阴极的数码管显示。
数码管的a、b、c、d、e、f、g、dp分别对应一个发光二级管,其中dp代表小数点。
每个数码管都有一个公共的外部选通端COM,当选择共阴极连接时,8个发光二级管的阴极都连接到COM端。
在系统中,单片机的P0.0—P0.7口分别对应连接每个数码管的a、b、c、d、e、f、g、dp的阳极,当相应P0口输出高电平时相应的发光二级管就会亮,从而显示出对应的数值。
在利用单片机的数码管显示时有两种显示方式可选,即数码管的动态显示和静态显示。
而本系统主要采用的是动态显示的方式。
相比较与数码管的静态显示,采用动态显示可以省掉繁琐的电路连接,可以直接通过74HC138译码器分别与相应数码管的公共端COM相连,再利用人的视觉差逐个选通每个数码管显示相应数字,这样动态的扫描显示,在人眼看来就会是连续的稳定显示了。
显示模块的电路图(如图3.5)。
图3.5数码管显示电路原理图
3.4温度传感器的选型
温度值的多少直接影响超声波的传播速度V的值,能够实时准确地采集温度值就可以解决超声波测距中的温度补偿问题。
所以选择合适的温度传感器可以使系统的硬件电路更简单化,从而提高测距系统的性能稳定性。
3.4.1温度传感器的类型及特点
人们对温度传感器的研究和应用起步较早,现在技术已经相当成熟。
在不同的工业应用场合会有不同工作原理的传感器的应用。
温度传感器大致有如下几个类型:
热电阻式传感器、热电偶式传感器、半导体集成模拟温度传感器、半导体集成数字温度传感器等几种。
热电阻式温度传感器:
其工作原理是利用导体或半导体的的电阻值随温度变化而变化的特性来测量温度的[9]。
主要特点是测量精度高,响应速度快,性能稳定。
但是线路电阻的变化会导致温度测量的偏差,需要额外的补偿电路来消除偏差。
热电偶式温度传感器:
其主要是基于热电效应原理来工作的,具有测量范围广、精度高、结构简单、使用方便等优点[9]。
半导体集成模拟温度传感器:
利用晶体二极管或三极管PN结的结电压随温度变化的原理来工作的,主要优点是具有较好的线性度,而且反应很灵敏,测温范围也很广,可以测到-50--150°C[9]。
无论是上述哪种原理的温度传感器,其主要都是将温度信号转化为可以测量的电信号,再经过相应的信号放大电路放大到合适值范围,再经A/D转换将测量信号转化为数字量显示出来。
与这些温度传感器相比,半导体集成数字传感器因自带A/D转换部分而是应用电路设计更趋简单。
目前DS18B20数字式温度传感器是应用最广泛的数字式传感器之一。
3.4.2数字式DS18B20温度传感器简介
DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器。
DS18B20温度传感器使用比较方便,可以直接从读出数字温度值,并且可根据实际应用的需要通过简单的编程实现9—12位的数字值读数方式[6]。
DS18B20只有3个管脚:
1电源线,2信号线,3接地线。
它的通信只需单根信号线联结。
在本设计系统中它的信号通信端跟单片机的P1.7口相连,其接线图如下图3.6所示。
图3.6温度传感器连线图
4系统软件设计
本系统软件部分设计包括主程序、子程序(时间计算、速度计算)和显示子程序组成。
编程语言选择的是汇编语言,能够做到直接控制硬件电路,且能精确计算程序运行时间。
在数据处理上虽不能做到高精度,但充分利用了汇编语言编程的易于查表的优势,建立了时间值和速度修正值表,并且在编程时做了一定的简化处理,旨在重点掌握系统的工作原理及控制流程。
4.1主程序设计
主程序先是对单片机环境的初始化,设置定时器T0的工作方式为16位的计数器模式,并对其做清零处理。
接着就是对显示单元清零,即对输出P0口清零;然后调用声速V修正值子程序得到超声波传播速度后调用距离计算子程序计算距离S;最后是显示子程序的调用。
输出显示结果后延时一段时间再次重启超声波测距模块进行下次测量。
主程序流程图如图4.1所示。
图4.1主程序流程图
4.2子程序设计
4.2.1温度采集程序设计
单片机上电复位后,需对传感器DS18B20执行复位命令并开始采集温度数值。
其工作流程大致如下:
上电启动后通过单片机初始化DS18B20,然后检测设备是否存在,若存在则发送ROM命令,然后发送温度转换命令获取温度值。
温度采集程序流程图如下图4.2所示。
图4.2温度采集程序流程图
主要程序如下:
DQBITP1.7;DS18B20的数据口位P1.7
TPHDATA20H;存放温度值的高字节
TPLDATA21H;存放温度值的低字节
ORG0
JMPReset
ORG100H
Reset:
LCALLDS18B20_Reset;设备复位
MOVA,#0CCH;跳过ROM命令
LCALLDS18B20_WriteByte;送出命令
MOVA,#044H;开始转换
LCALLDS18B20_WriteByte;送出命令
JNBDQ,$;等待转换完成
LCALLDS18B20_Reset;设备复位
MOVA,#0CCH;跳过ROM命令
LCALLDS18B20_WriteByte;送出命令
MOVA,#0BEH;读暂存存储器
LCALLDS18B20_WriteByte;送出命令
LCALLDS18B20_ReadByte;读温度低字节
MOVTPL,A;存储数据
LCALLDS18B20_ReadByte;读温度高字节
MOVTPH,A;存储数据
JMP$
;**************************************
DelayXus:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR7,DelayXus
RET
;**************************************
;复位DS18B20,并检测设备是否存在
;**************************************
DS18B20_Reset:
CLRDQ;送出低电平复位信号
MOVR7,#240;延时至少480us
LCALLDelayXus
MOVR7,#240
LCALLDelayXus
SETBD;释放数据线
MOVR7,#60;等待60us
LCALLDelayXus
MOVC,DQ;检测存在脉冲
MOVR7,#240;等待设备释放数据线
LCALLDelayXus
MOVR7,#180
LCALLDelayXus
JCDS18B20_Reset;若没有检测到设备,则继续等待
RET
;**************************************
;从DS18B20读1字节数据
;**************************************
DS18B20_ReadByte:
CLRA
PUSH0
MOV0,#8;8位计数器
ReadNext:
CLRDQ;开始时间片
MOVR7,#1;延时等待
LCALLDelayXus
SETBDQ;准备接收
MOVR7,#1
LCALLDelayXus
MOVC,DQ;读取数据
RRCA
MOVR7,#60;等待时间片结束
LCALLDelayXus
DJNZ0,ReadNext
POP0
RET
;**************************************
;向DS18B20写1字节数据
;**************************************
DS18B20_WriteByte:
PUSH0
MOV0,#8;8位计数器
WriteNext:
CLRDQ;开始时间片
MOVR7,#1;延时等待
LCALLDelayXus
RRCA;输出数据
MOVDQ,C
MOVR7,#60;等待时间片结束
LCALLDelayXus
SETBDQ;准