1绪论
超声波流量检测技术是近年来迅速发展起来的新技术,它利用超声波在流体中传播所载的流体流速信息来测量流体流量。与传统的涡街、电磁等流量计相比,超声波流量计具有非接触、无压损、精度高、造价低、结构简单、测量范围宽等特点。尤其是超声波流量计体积小、造价与口径无关,它解决了工业测量中大口径测量设备制造、运输困难和造价高的突出问题,使它特别适合临时管道、大口径管道的流量测量,在工业供水系统中得到了广泛应用。
1.1 流量计的发展概况
几千年前,人们为适应农业灌溉和水利建设的需要,已开始关注流量测量问
题,古埃及出现了堰的雏形,我国都江堰在那时也已经知道利用宝瓶口岩壁上所刻“水则”,来观察水位,以进行控制。
18世纪以来,人们对流量测量的研究水平不断提高,各种流量测量理论和测量装置层出不穷。1738年,瑞士人丹尼尔·伯努利以伯努利方程为基础,利用差压法测量水流量;后来意大利人文丘里研究用文丘里管测量流量,并于1791年发表了研究结果;1886年,美国人赫谢尔用文丘里管制成测量水流量的实用装置。20世纪初期到中期,原有的测量原理逐渐成熟,人们开始探索新的测量原理。自1910年起,美国开始研制测量明渠中水流量的槽式流量计。1922年,帕歇尔将原文丘里水槽改革为帕歇尔水槽。1911一1912年,美籍匈牙利人卡门提出卡门涡街的新理论。1945年,科林用交变磁场成功地测量了血液流动的情况。由于经济生产落后,直到二十世纪50年代,工业中使用的主要流量计也只有孔板、皮托管、浮子流量计三种。二十世纪60年代以后,测量仪表开始向精密化、小型化等方向发展。此外,具有宽测量范围和无活动检测部件的实用卡门涡街流量计也在70年代问世。微型计算机的广泛应用,进一步提高了流量测量的能力,如激光多普勒流速计应用微型计算机后,可处理较为复杂的信号。近30年来,后研制出并投入使用的流量计有速度式流量计、容积流量计、动量式流量计、电磁流量计、超声波流量计等几十种新型流量计。目前国外投入使用的流量计有100多种,随工业生产的自动化、管道化的发展,流量计在整个仪表生产中所占比重越来越大。
我国开展近代流量测量技术的工作比较晚,早期所需的流量仪表均从国外进
口,直到20世纪30年代中期才出现光华精密机械厂所制造的家用水表,50年代有了新成仪表厂所开发的文丘里管流量计,60年代开始涡轮、电磁流量计的生产,时至今日,我国已成一个相当规模从事流量测量技术与仪表研究开发和生产的产业。但是我国现有产品的品种、规格、精确度和可靠性尚不能满足国内市场的需求,一些新型的流量计的技术水平与国际先进水平有较大的差距。随着国内市场的国际化,我国流量仪表工业面临着更加严峻的挑战。因此,开展高性能流量计的研究、开发及产业化,对促进我国流量仪表行业的发展,增强产品的国际竞争力,具有十分重要的意义。
1.2 超声波流量计的发展概况
超声波流量计(Ultrasonicflo~cter)是一种向流体发射超声信号,在其受到流体
流动影响之后再接收此超声信号并将检测结果用于流量测量的计量器具。 H1928年德国人研制成功了第一台超声波流量计,但此流量计仅限于研究阶段;直到1955年,一种基于声循环法的MAxsoN超声波流量计开始用于测量航空燃油l3],超声波流量计从研究阶段进入应用阶段。前苏联在这方面的研究是独立进行的,其第一台超声波流量计出现在1956年。1958年A.L.H一ERDRIcH等人发明折射式探头,进一步消除由于管壁的交混回响所产生的相位失真,为管外夹装提供理论依据。20世纪70年代,由于集成电路技术的发展,超声波流量计克服了精确度低、响应慢、稳定性与可靠性差等致命弱点,使实用的超声波流量计得以发展。80年代超声波流量计出现了射束位移法,多普勒法,相关法及噪声法等。90年代以后,随着单片机、DSP、FPG、CPLD等技术的发展,超声波流量计向高性能和智能化方向快速发展,超声波流量计开始进入工业测量领域。
近10年来,由于数字信号处理、超声换能器材料、声道配置以及流体动力学等学科研究水平的提高,超声流量测量技术取得了长足进展,显示了强劲的技术优势,发展势头迅猛。目前超 声波流量计正在向高精度、多功能、智能化、低功耗、低成本方向发展。
国外的超声波流量计研究机构和生产厂家多在美国、欧洲和日本,他们的产品精度高、可靠性好,但价格昂贵。目前,国外超声波流量计生产厂商主要包括美国的Daniel、Controlotron,德国的Elster、Kemel,荷兰的xnst~ent,日本的Toshiba、Fuji等公司。
我国的超声波流量计研究工作起步较晚,通过广大科技工作者的不懈努力和引进外国先进技术,国产的超声波流量计也开始批量生产并投入使用。目前,国内从事超声波流量计的研究与制造的厂商主要有唐山的汇中、美伦、惠斯特,大
连索尼卡、海峰、铭锐等公司。
1.3 选题依据及研究意义
随着工农业的发展,对流体流量和总量的计量及测试提出了越来越多、越来越高的要求。在注重节省能源,提高经济效益和产品质量的今天,流量计量与测试的重要性就更加突出并为越来越多的人所认识。特别是随着现代工业生产的飞速发展,人们对流量测量的要求越来越高,对流量测量技术和仪表的研究和开发也不断深入,流量测量方法和仪表的种类也越来越多。尤其是在近些年来,流量测量技术和仪表已经得到了长足的发展。超声波流量计是20世纪70年代随着IC技术迅速发展才开始得到实际应用的一种非接触式仪表。
近几年来,随着电子技术、数字技术和声楔材料等技术的发展,利用超声波脉冲测量流体流量的技术发展很快。基于不同原理,适用于不同场合的各种形式的超声波流量计已相继出现,其应用领域涉及到工农业、水利、水电等部门,正日趋成为流量测量工作的首选工具[2]。目前应用较多的超声波流量计测量方法主要有时差法、多普勒效应法、相关法、噪声法、波束偏移法等,其中时差法应用最为普遍。超声波流量计的时差测量法是基于超声波在具有流速的媒质里传播时,其传播时间(速率)会随着媒质流速的变化而变化的原理来实现媒质流速测量的方法。
时差法的关键是对于时间测量的高精度,近几年来,随着集成电路的高速发展,高速时间计数处理芯片不断出现,使得几十皮秒的测量精度变得可能,这也对时差法超声波流量计的发展产生了极大的推动。
1.4 本设计的主要工作
本文围绕堰式超声波流量计测量技术的实现,详细地分析和叙述了系统硬件和软件各部分的组成和设计原理。本文内容由以下5部分组成:
(1)分析了超声波工业水表的发展现状及工作原理,并说明了超声波测流量的优点。
(2)超声波工业水表的发射电路设计;
(3)超声波工业水表的接收电路设计以及显示电路设计; (4)超声波工业水表的软件设计;
(5)总结论文完成的内容,并针对不同的场合提出了改进方案。
2方案论证与设计
2.1 系统方案选定
2.1.1 采用单片机来控制的超声波工业水表
采用单片机来控制的超声波工业水表是先由单片机产生一个信号,经过信 号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,记下顺流是的时间和逆流的时间,根据时间算出流速。 F原理框图如2.1所示:
图2.1 采用单片机来控制的超声波测距仪
2.1.2 采用CPLD来控制的超声波工业水表
采用CPLD来控制的超声波工业水表,主要是在软件上运用VHDL(Very High Speed Integrated Circuit Hardware Description Language)编写程序使用MAX+plus II软件进行软硬件设计的仿真和调试,最终实现测距功能。使用本方案的优点在于在超声波测距仪设计中采用的是MAX7000s系列中的EPM7128SLC84-15的CPLD器件,其最高频率可达175.4MHz,可用于组合逻辑电路、时序逻辑电路、算法、双端口RAM等的设计。充分利用了其多达128个宏单元、68pin可
编程I/O口,使该器件可以将分频功能、计数功能、显示编码功能、振荡功能全部集于一体。又因其延时平均的特点,保证了测速结果精度高、响应速度快。缺点是方案中需要一块FPGA,一块双口RAM,还需要一块用来存储波形数据的EEPROM,那么设计的成本较高。同时在FPGA中还要用硬件描述语言(VHDL语言)编写程序来实现硬件电路功能。由于EPM7128SLC84-15的算法复杂,所以在软件实现起来编程也复杂。
2.1.3 采用锁相环频率合成技术
采用锁相环频率合成技术,也可以实现我们所需要的超声波工业水表。具体方案如下:首先通过频率合成技术产生超声波所需要的频率,在通过信号线将采用锁频率相合成技术得到的频率引到超声波的发射头上,这样就可以实现超声波测距。它的优点就是工作频率可调,也可以达到很高的频率分辨率;缺点是要求使用的滤波器通带可变,实现很困难。它的原理如图2.2所示。
图2.2锁相环频率合成技术总框图
2.2 系统总体原理框图
基于单片机的超声波工业水表。用单片机控制超声波的发射、接受电路以及进行数据处理,再用液晶显示屏进行数据的显示。
由单片机产生一个信号,经过信号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,算出顺流和逆流的时间,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发流量管速度(s),即:,其中,D为换能器与障碍物之间的距离,C为波声传播速度,T为超声波发射到返回的时间间距。
本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89C52单片机,配置时钟电路,复位电路构成单片机最小系统,由模拟电路和数字电路构成超声波发射、接收模块。由键盘,LCD显示构成人机对话通道,构
成由单片机最小系统来控制的超声波工业水表,其结构框图如图2.3所示。
图2.3 系统构框图
3系统硬件设计
3.1 超声波概述
3.1.1 超声波
超声波是指振动频率高于20KHz的机械波,它可以在气体、液体、固体或固液混合体中传播。与一般声波相比,它的振动频率高,波长短,具有束射特性,可以定向传播,具有很高的穿透能力,在流体中传播时,随着传播距离的增加,能量会逐渐衰减。
3.1.2 时差法超声波流量计的基本原理
当超声波在流动的介质中传播时,相对于固定坐标系统(例如管道中的管壁)来说,
其传播速度与在静止介质中的传播时有所不同,其变化值与介质流速有关。由于超声波脉冲在顺流和逆流中的传播速度不同,其在介质中的传播时间也不同。时差法就是根据超声波脉冲在顺流和逆流中的时间差来计算介质流速的,其基本原理如图3.1所示
图3.1时差法原理图
图中换能器A、B为两个超声波换能器,均可以发射或接收超声波信号,采
用外夹式安装在圆形管道两侧,介质流动方向如图所示,管道直径为D,超声波传播方向与介质流动方向夹角为θ,若超声波在静止介质中的传播速度为C,则超声波顺流传播时间tAB和逆流传播时间tBA分别为:
tAB=
θ
+r (3.1)
tBA=
θ
+r (3.2)
其中,D为管道直径,C为超声波在介质中的声速,V为介质流速,t为声路延时,包括超声波在管壁中的传播时间和信号在电路中的延迟时间。
由式(3.1)和式(3.2)可以得到超声波在介质中顺、逆流传播的时间差
2DVcosθ∆t=
(3.3)
22-CVcosθ
∆t=tBA-tAB
通常C2>>V2cosθ,式。。可以简化为:
2DVcosθ∆t≈
C
=2
2
(3.4)
有式可得介质流速V:
V
∆tsinθ
2Dcosθ
(3.5)
3.1.2时差法超声波工业水表原理的改进
由于超声波在介质中的传播速度与温度、压力等参数有关,如果直接使用式(3.5)会给仪表校准带来很多实际困难,并且在实际测量中也不能准确地测量流体的流速和流量。在实际应用中,通常使用改进的计算方法,去掉公式中的超声波声速,从而准确实现精确的流量测量。具体方法如下:
首先将式(3.1)、式(3.2)修改为:
C+Vcosθ=
tAB-r
(3.6)
C-Vcosθ=
(3.7) tBA-r
有式(3.6)(3.7)可计算流体流速V:
D∆tV==
2tAB-rtBA-rcosθtAB-rtBA-rsin2θ
D∆ (3.8)
但是,通过式(3.8)计算得到的流速与实际流速殊并不一致,在实际应用中通常需要乘以一个流速修正系数K:
VA
K= (3.9)
V
VA=KV
2
(3.10)
q=VA (3.11) 4
由式(3.11)可以得到流体的瞬时流量q。
本方法避免了求解声速C的困难,也避免了温度对测量结果的影响,可以得到较准确稳定的测量结果。由于电路和声路都不可避免地带来一定的延时,所以流量计系统实际测量得到的时间都包含各种时间延迟,在实际计算时需要将其减去。另外,得到介质流速后还可以求出介质中超声波的传输速度C:
D⎛11⎫C=+ ⎪ (3.12)
2sinθ⎝tAB-rtBA-r⎭
由于声速与介质种类以及现场的压力、温度都有关,声速还可以诊断测量中出现的一些问题,用于仪表的自检。
3.2 控制模块电路的设计
单片机最小系统电路由时钟电路,复位电路,键盘电路加显示电路构成。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片
机可为您提供许多较复杂系统控制应用场合。
接石英晶体和微调电容;当使用外部时钟时,用于拉外部的时钟脉冲信号。
RST复位信号:当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。
VSS:地线 VCC:+5V电源
3.2.2 P3口的第二功能如表3.1所示
表3.1 P3口的第二功能
3.2.3 AT89C52的总线结构
AT89C52的管脚除了电源、复位、时钟接入、用户I/O口部分P3外,其余管
脚都是为实现系统扩展而设置的。这些管脚构成了三总线形式,即:
1. 地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接地址外围为64K字节。16位地址总线由P0经地址锁存器提供低8位地址(A0~A7);P2口直接提供高8位地址(A8~A15)。
2. 数据总线(DB):数据总线宽度为8位,由P0口提供。
EA、3. 控制总线 (CB):由部分P3口的第二功能状态和4根独立控制线RESET、
ALE、PSE组成。AT89C52结构框图如图3.3所示。
图3.3 AT89C52结构框图 3.3 时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地作。单片机内部有一个高增益反相放大器,其输入端为芯片引脚X1,其输出端为引脚X2。而在芯片的外部,X1和X2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,只要在单片机的X1和X2引脚外接晶体振荡器就构成了自激振荡器并在单片机内部产生时钟脉冲信号。电容器C1和C2的作用是稳定频率和快速起振,本次毕业设计电容采用33pf,晶振用12MHZ.时钟振荡电路如图3.4所示。
图3.4时钟振荡电路图
3.4 复位电路
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这状态开始工作。通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的在此设计中,采用的按键复位电路。本设计选用第二种上电复位与按键均有效的各单位电路。按键复位电路如图3.5所示.本设计选用第二种上电复位与按键均有效的各单位电路。
图3.5 按键复位电路
3.5 单片机键盘电路
键盘电路是很多设计中很重要的组成部分。它主要是输入设备。
单片机应用系统中键盘有独立式和行列式两种。
独立式键盘:独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。
行列式键盘:行列式键盘键数比较多,从按一个键到键功能被执行主要包括两项工作:一是键的识别,即在键盘中找出被按的是那一个键,另一项是键功能 的实现,第一项是接口电路来实现的,而第二项是通过执行中断服务程序来实现的。具体来说,键盘借口应完成以下操作功能:
(1)键盘扫描,以判断是否有键按下。
(2)键识别,以来确定闭和键的行列位置。
(3)产生闭和键的键码。
(4)排除多键,串键以及抖动。
本次设计中采用的是独立式键盘,键盘电路图如图3.6所示.
图3.6 独立式键盘图
3.6 LCD显示器
LCD显示器是利用液晶经过处理后能改变光线的传输方向特性实现显示信息的。液晶显示器具有体积小、重量轻、功耗极低,显示内容丰富等特点,在单片机应用系统中得到了日益广泛的应用。液晶显示器按其功能可以分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可以显示数字、字符和符号等。而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果。字符形液晶显示模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。它是由若干个5*7或者是5*11等点阵符位组成的,每个点阵字符位都可以显示一个字符。点阵字符位之间,有一定点距间隔,这样就起到了字符间距和行距的作用。要使用点阵型LCD液晶显示器,必须要有相应的LCD控制器、驱动器来对LCD液晶显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储的写入的命令和显示字符的点阵。现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块LCM。使用时只要向LCM送入相应的命令和数据就可以显示所需的信息。目前市面上常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符液晶显示模块。这些LCM虽然显示字数各个相同,但是都具有相同的输入输出界面。
3.6.1 字符型液晶显示模块RT-1602C的引脚功能
RT-1602C采用标准的16脚接口,各引脚情况如下:
第1脚:VSS,电源地;
第2脚:VDD,+5V;
第3脚:VL,液晶显示偏置电压;
第4脚:RS,数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
第5脚:R/W读/写选择,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址;当RS为低电平R/W为高电平时可以读忙信号;当RS为高电平时R/W为低电平时可以写入数据。
第6脚:E,为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。 第7至14脚:D0至D7,为8位双向数据线。
第15脚:BLA,背光源正极
第16脚:BLK,背光源负极
3.6.2 字符型液晶显示模块RT-1602C的内部结构
液晶显示模块RT-1602C的内部结构可以分为三部分:一、LCD控制器,二、为LCD驱动器,三、LCD显示装置。如图3.7所示。
图3.7 晶显示模块RT-1602C的内部结构图 控制器采用HD44780,驱动器采用HD44100。HD44100是集控制器、驱动器于一体,专用于字符显示控制驱动集成电路。HD44100是作扩展显示字符位的。HD44780是字符型液晶显示控制器的代表电路。
HD44780集成电路的特点:
1. 可选择5*7或5*10点字符。
2. HD44780不仅可以作为控制器,而且还具有驱动16*40点阵液晶像素能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动,HD44780可控
制的字符高达每行80个字,也就是5*80=400点,HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具有驱动16*40点阵LCD的能力(即单行16个字符或两行8个字符)。如果在外部一HD44100外扩展多40路/列驱动,则可驱动16*2LCD。
3. HD44780的显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM全部内藏在芯处内。HD447803有80个字节的显示缓冲区,分两行,地址分别为00H-27H,40H-67H,它们实际显示地址的顺序跟LCD的型号有关。
这些字符有阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符教都有一个固定的代码。如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H),可以看出英文字母的代码与ASCII编码相同。要显示“1”时,只需将ASCII码31H存入DDRAM指定的位置,显示模块将在相应的位置把数字“1”的点阵字符图形显示出来,我们就能看到数字“1”了。
4. HD44780具有8位数据和4位数据传输两种方式,可与人4/8位CPU相连。
5. HD44780具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。
显示电路如图
3.8:
图3.8显示电路
3.7 超声波发射接收模块
超声技术是一门以物理学、电子学、机械及材料科学为基础、应用十分广泛的通用技术之一。目前,超声波技术广泛应用于冶金、船舶、机械、医疗等各个工业部门,例如超声清洗、超声焊接、超声加工、超声检测和超声医疗等方面,
并取得了很好的社会效益和经济效益。因此,我国对超声波技术及其传感器的研究十分活跃。在国民经济中,对提高产品质量、保障生产安全和设备安全运行、降低生产成本、提高生产效率等具有重要的意义。
超声波具有聚束、定向及反射、散射、透射等特性。按超声振动辐射大小不同大致可分为:利用超声波使物体或物件发生变化的功率效应,称之为功率超声;利用超声波获取若干信息,称为检测超声。这两种超声的应用,同样需要借助于超声波传感器(或称为换能器、或探头)来实现。
一般说来,人们可听到的声音频率范围大约为20Hz~20kHz,即为可听声波。超过此频率范围的声音,即20Hz以下的声音称为低频声波,20kHz以上的声音称为超声波。一般说话的频率范围为100Hz~8kHz。
超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强,利用这种性质就可制成超声波传感器,系统中就是利用了高频超声波反射能力强的特点,来实现距离的测量。另外,超声波在空气中传播的速度较慢,一般为340 m/s,这就使得超声波传感器的使用变得非常简单。
超声波是高于听觉频率阈值的机械振动,超声波在声场(被超声所充满的空间)传播时,如果超声波的波长与声场的尺度相比,远小于声场的尺度,超声波就像处在一种无限介质中,超声波自由地向外扩散;反之,如果超声波的波长与相邻介质的尺寸相近,则超声波受到界面限制不能自由地向外扩散。
3.7.1 超声波的三种形式
超声波在介质中可产生三种形式的波:横波——质点振动的方向垂直于波的传播方向;纵波——质点振动方向与波的传播方向一致;表面波——质点振动介于纵波与横波之间,沿物体表面传播。横波只能在固体中传播;纵波能在固体、液体和气体中传播;表面波能在固体、液体中传播,随深度的增加其衰减很快。为了测量各种状态下的物理量,多采用纵波。超声波的频率越高,与光波的某些性质越相似。超声波与其他声波一样,波速与介质密度和弹性特性有关。
3.7.2 超声波的物理性质
(1) 超声波的反射和折射
当超声波传播到两种特性阻抗不同介质的分界面上时,一部分声波被反射,另一部分透射过界面,在相邻介质内部继续传播,这种现象称为声波的反射和折射。
如果声波斜入射到两固体介质界面或两粘滞弹性介质界面时,一列斜入射的
纵波不仅会产生反射纵波和折射纵波,而且还产生反射横波和折射横波,这种现象称为超声波的波型转换。
(2) 超声波的衰减
超声波在一种介质中传播时,其声压和声强按指数函数规律衰减。例如,若衰减系数为1dB/mm,声波穿透1mm则衰减1dB;声波穿透20mm,1dB/mm×20mm=20dB,即衰减90%。
(3) 超声波的干涉
如果在同一种介质中传播频率相同、振动方向相同两列及以上的声波,就会产生波的干涉现象。由于超声波的干涉,在辐射器的周围将形成一个包括最大和最小的超声场。
3.7.3 超声波传感器
能将(交流)电信号转换成机械振动而向介质中辐射(发射)超声波,或将超声场中的机械振动转换成相应的电信号的装置称为超声波传感器(或称为超声波换能器、超声波探头)。超声波传感器一般都是可逆的,既能发射也能接受超声波。
超声波探头按其结构可分为直探头、斜探头、双探头、液浸探头和聚焦探头等。超声波探头按其工作原理又可分为压电式、磁致伸缩式、电磁式等。最常用的是压电式探头
本设计采用压电式探头传感器MA40S2R/S,其特性见下表:
表3.2 超声波传感器MA40S2R/S的特性
3.7.4 超声波发射电路
超声波传感器探测物体的方法又可分为直接方式和反射方式两类。该设计采用直接方式如图3.9所示。
图3.9超声波发射原理图
多谐振荡器的工作原理:
多谐振荡器是能产生矩形波的一种自激振荡器电路,由于矩形波中除基波外还含有丰富的高次谐波,故 称为多谐振荡器。多谐振荡器没有稳态,只有两个暂稳态,在自身因素的作用下,电路就在两个暂稳态之 间来回转换,故又称它为无稳态电路。
由555定时器构成的多谐振荡器如图1所示,R1,R2和C是外接定时元件,电路中将高电平触发端(6脚) 和低电平触发端(2脚)并接后接到R2和C的连接处,将放电端(7脚)接到R1,R2的连接处。
由于接通电源瞬间,电容C来不及充电,电容器两端电压uc为低电平,小于(1/3)Vcc,故高电平触发 端与低电平触发端均为低电平,输出uo为高电平,放电管VT截止。这时,电源经R1,R2对电容C充电,使 电压uc按指数规律上升,当uc上升到(2/3)Vcc时,输出uo为低电平,放电管VT导通,把uc从(1/3)Vcc 上升到(2/3)Vcc这段时间内电路的状态称为第一暂稳态,其维持时间TPH的长短与电容的充电时间有关 。充电时间常数T充=(R1+R2)C。
超声波信号由单片机产生,信号经过三极管后驱动超声波换能器发送超声波,途中碰到障碍物就立即返回。否则认为没有探测到物体。此电路有两个三极管构成推拉式驱动电路,三极管工作在开关状态。当信号线来一个低电平时,三极管Q1导通,Q1的集电极高电平, Q2导通,Q2的集电极为低电平,从而使
超声波换能器工作。在此电路图中的电容(C1)起隔直耦合作用。
3.7.5 超声波接收电路
超声波接收电路的电路图如图3.10所示。
图3.10超声波接收原理图
此电路由信号放大部分,检波部分,电压比较部分和信号保持部分组成,收到的信号经过两级放大,再通过倍压式峰值检波电路检波,得到一个基本稳定的信号,再通过与电压比较器比较,若信号电压大于参考电压,则输出高电平,若低于参考电压则输出为低电平,若输出高电平,则RS触发器触发,输出高电平,且一直保持下去,直到单片机给出控制信号,触发器回到低电平状态。
超声波从发射到接收时间间距的测量,是由单片机内部的计数器(如T0)来完成的 。超声波从发射到接收的时间间隔的测量, 是由单片机内部的计数器(如T0) 来完成的。在CPU 停止发送脉冲群后, 由于电阻尼, 换能器不会立即停止发送超声波, 在一定时间内仍然发送。这段时间的存在使系统不能够测量比较近的物体, 形成所谓的“盲区”, 需要对盲区时间产生的信号进行屏蔽, 不同性能的超声波换能器的盲区有所差异, 以一个通道工作的时序为例进行说明, 如图
3.11所示。
图3.11 一个通道的工作时序
3.8 总电路图
超声波工业水表总电路图见附录一
4系统软件设计
4.1 软件设计方法及仿真软件介绍
超声波工业水表的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离),又要求精细计算程序运行时间(超声波测距),所以控制程序可采用C语言和汇编语言混合编程。
超声波工业水表的仿真软件是用prote 99 SE,这是一块非常强大的软件,对于本次毕业设计中非常重要,本论文的复位电路,时钟电路,显示电路,超声波的接受和发射电路,就是用此软件仿真的。
4.2 单片机的使用资源情况
硬件资源使用说明:
● P1.0~P1.3为键盘输入端 ● P0口用作数码管位控 ● P2口用作数码管段控
● 采用了定时/计数器T0和T1中断
既在AT89S52的P0口和P2口外接由八个LED数码管(LED7~LED0)构成的显示器,用P2口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P0口作LED的位控输出线(P1.7~P1.0对应于LED的1~8),其中在P2的并行口外接8个三极管作为显示驱动,显示为八个数码管(LED0~LED7)进行动态显示。P1口外接四个按键K1、K2、K3、K4(对应于P1.0~P1.3)用于调整显示接口电路,P1.6接一个发光二极管,表示开启超声波测距功能。
4.3 软件模块功能介绍
4.3.1 软件设计的主体思路
在本系统中,在总体软件设计的过程中,我采用的思路是:利用物理学里的
声音在空气中传播的原理,在开启测试超声波的一瞬间,打开单片机的计数器0,开始计时,,同时开启外部中断,并设置外部中断的触发方式为下降沿触发,然后再设计程序的时候等待外部中断来临的时候关闭定时器0,将定时器0计的时间当做超声波在距离障碍物之间传播的总体的时间,利用相应的公式设计相应的程序计算出相应的距离。但是,采用这样的方式不排除有的时候超声波的接收端在发射端发出信号后收不到信号的可能性,在这种情况下,要采用另外一种方案:在发出信号一段时间后如果没有收到信号需要将计时器清零,然后重新开始计数,直到产生外部中断的请求为止。
4.3.2 主要寄存器参数设置
在超声波的测距的设计中,首先要设计的参数就是定时器0的参数设置,由于采用的超声波的探头的性能的限制,只可以测试20米范围以内的距离,所以采用 方式0就可以了,TH0=0x00,TL0=0x00,这样最大的计数范围可以达到60毫秒,这样的话,定时器的TMOD=0x00,由于采用外部中断的方式,所以将外部中断打开,即IE=0x80,同时还有设置的参数有:IT0=1(外部中断信号以下降沿的方式触发),EX0=1(允许外部中断)。
4.4 程序流程图
主函数的流程图如图4.1所示,LCD显示流程图如图4.2所示,超声波发射接收程序流程图如图4.3所示,键扫子程序流程图如图4.4所示,即使程序4.5所示。
图4.1 主函数流程图
在LCD显示的程序的设计的过程中,主要采取先系统初始化,然后判忙,写控制命令,在写数据,再延时,最后就能够显示相应的信息了。
图4.2 LCD显示流程图
显示子程序:
//************液晶显示***************// void writercom(uchar q) //写命令// {E=1; RS=0; RW=0; P0=q; E=0;
delay(20); }
void writerdata(uchar o) //写数据// { E=1; RS=1; RW=0; P0=o; E=0;
delay(20); }
void writer_d(uchar *u) //写数据串// {while(*u)
writerdata(*u++); }
void xsinit(void)
{writercom(0x01); //清屏 //
writercom(0x38); //使用8位数据,显示两行,使用5*7的字型// writercom(0x0c); //显示设置,不显示光标,字符不显闪琐// writercom(0x06); //光标从左往右移,内容不移// }
在超声波的程序的设计的过程中,主要的思路是:首先是定时器的初始化,然后开启定时器0,当接收到外部中断请求的信号时候关闭定时器0,转去执行 相应的处理程序。
图4.3 超声波发射程序流程图
超声波发射程序:
//**********超声波发射程序************// void sen() {uchar times=0;
TMOD=0x12; //定时器1工作在定时方式1,定时器0工作在定时方式2// IE=0x84; //中断设置// TH0=244; TL0=244; TR0=1;
TR1=1; //开定时器// while(1)
{while(TF0==0); sg=~sg;
times++; TF0=0;
if(times==20)break;} //翻转20次,发送10个脉冲信号的超声波// TR0=0; times=0; }
在键盘的处理的程序中,主要的思路是:首先调用键功能处理程序,判断是否有键按下,如果有键按下,延时一段时间,然后继续判键,如果第二次真的有键按下,则表示有键按下,这时候转去执行相应的键功能程序。
图4.4 键扫子程序流程图
键盘子程序:
//****状态1,手动控制******************// void unauto() {while(ii) {while(k--)
{writercom(0xba);
writer_d("Press K4 measure"); //提示按K4发射超声波// if(k4==0||k3==0){ii=0;break;} delay(2000);} k=20;
while(k--)
{writercom(0xba);
writer_d(" "); if(k4==0||k3==0){ii=0;break;} delay(2000);} k=20; }
ii=1; ctl=0;
sen(); //调超声波发射程序// delay(50); ctl=1; }
//****状态2,实时监控*****// void aut()
{writercom(0xba);
writer_d("Designer: GUOBIN"); ctl=0; sen(); delay(50);
} ztxz()
{while(k3==0&&aa==0) {while(1)
{if(k3==1)break;} aa=1; }
while(k3==0&&aa==1) {while(1)
{if(k3==1)break;} aa=0; } }
计时程序流程图:
图4.5 时差程序流程图
时差子程序:
//********主程序*******************// main()
{xsinit(); //LCD初始化 // inptt(); while(1)
{while(!aa) {unauto(); break; }
while(aa) {aut();
}
while(k--) //等待回波//
{ztxz(); //状态切换键判断// delay(2000); }
k=20;
dataxs(); //数据处理 // } }
4.5 程序清单
程序清单见附录二
5安装与调试
5.1 调试
5.1.1 软件调试
系统软件设计、调试的过程如图5.1所示
图5.1 软件调试流程图
其过程分为以下几个步骤:
第一步,建立源程序。通过计算机开发系统的编辑软件,按照所要求的格式、语法规定、源程序输入到开发系统中,并存在磁盘上。
第二步,在计算机上,利用KILE软件对第一步输入的源程序进行编译,变为可执行的目标代码。如果源程序有语法错误,则其错误将显示出来,然后返回到第一步进行修改,再进行编译,直到语法错误全部纠正为止。
第三步,动态在线调试。对于与系统、硬件无联系的程序,可以借助动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到第一步修改,直到逻辑错误纠正为止。对于与系统硬件紧密相关的程序,则需软件,硬件同时进行调试,将程序烧入CPU,然后将CPU 插入系统,发现硬件故障排除故障,发现逻辑错误,修改程序,消除逻辑错误。
5.1.2 硬件调试
硬件调试分两步:
第一步:系统上电之前,先用万用表等工具,根据硬件逻辑设计图,仔细检查线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线是否存在相互之间短路或与其它信号线的短路。
第二步:第一步的调试,只是对系统进行初步调试,可以排除一些明显的故障,而硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要是靠软件和硬件联调来排除。硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。
5.2 误差分析
5.2.1 超声波回波声强的影响
回波的声强与障碍物距离的远近有直接关系, 实际测量时, 不一定是第一个回波的过零点触发, 其原理如图5.2 所示。这种误差不能从根本上消除, 但是可以通过根据障碍物的距离调整脉冲群的脉冲个数以及动态调整比较电压来减小这种误差。另一方面将求距离公式D=CT/2后加一个补偿系数来补偿计时误差,D=CT/2+a(a 与距离、脉冲个数相关) 。
1.发射波包络线 2.回波包络线
图
5.2 脉冲个数与回波声强对计时影响示意图 5.2.2 超声波波束入射角的影响
如果系统是用来测量面与点的距离, 则被测物、换能器及换能器所在测量参考平面三者之间存在一个几何角度, 即反射波入射到换能器的角度, 当这个角度不是90°时, 系统测量到的距离是障碍物与换能器之间的距离而不是和测量参考平面之间的距离, 这就会造成测量误差, 如图5.3 所示。
图5.3 超声波回波入射角影响分析图
当障碍物的距离较小时, 这个误差就会成为近距离时的主要误差来源。可以用多个换能器同时测量, 利用几何关系来计算得出实际距离, 消除这种误差。
1
s=(y1+y2+z) (5.1) 2
∆=
1
(s+y1)(s+y2)(s+z) (5.2) 2
x=2∆/2…………….. (5.3)
式中 y1----换能器a 、b到被测物的距离 y2---- 换能器a、b之间的距离 x-----被测物到测量的距离
5.2.3 超声波传播速度的影响
稳定准确的声波传播速度是保证测量精度的必要条件, 传播介质的温度、压力及密度对声速都产生直接影响。对于在大气中传播的声波而言, 引起声速变化的主要原因是温度的变化。采用声速预置和传播介质温度测量结合的方法对声速进行修正, 可有效地降低温度变化产生的误差。在对距离的精确度要求不高的应用中可以不进行温度补偿, 选择室温20℃左右时的声速340m/s作为固定参数,当
温度在- 10~ 40 ℃之间变化时声速误差在±5% 之间。如果在室外测量, 对于季节温差大的地区,还可以采用预置该地区12个月的统计温度,用以对温度进行补偿, 既可提高精度,又不增加成本。影响测量误差的因素很多,包括现场环境干扰、时基脉冲频率等。在实际应用中可以根据系统测量精度要求,采用合理的补偿手段。
6系统的应用
超声波流量计应用的场合:
(l)解决了工业流量测量普遍存在着的大管径、大流量测量困难的问题。一般流量计随着测量管径的增大会带来制造和运输上的困难,造价提高、能损加大、安装不便。这些问题超声波流量计均可避免。因为各类超声波流量计均可实现管外安
装、非接触测流,仪表造价基本上与被测管道口径大小无关,而其它类型的流量计随着口径增加,造价大幅度增加,故口径越大超声波流量计的功能价格比越优越。
(2)超声波流量计的流量测量准确度几乎不受被测流体温度、压力、粘度、密度等参数的影响。在保证超声波能够在介质中传播的前提下,超声波流量计不仅可以测量液体、气体的流量,它还可以测量双相介质的流体流量。因此,超声波流量计可以制成非接触式及便携式测量仪表,可以解决其它类型仪表所难以测量的强腐蚀性、非导电性、放射性及易燃易爆介质的流量测量问题。
(3)无压力损失。由于超声波流量计能够做成非接触式的,无插入部件,超声波流量计不会改变流体的流动状态,不会对流体产生附加阻力,不会产生压力损失,可以大大提高流量计的测量精度。
(4)超声波流量计具有较宽的量程比。普通流量计的量程比一般为1:4至1:50之间,而超声波流量计的量程比可达1:300,因此它适用于各种不同流速的场合。 (5)超声波流量计结构简单、便于维护,非常适合工业测量。超声波流量计的感测元件结构简单,没有转动部件,主要工作集中在二次仪表的电路设计和算法实现上,从而降低了对机械设计和加工的要求。
7总结
本课题研制的超声波工业水表采用声时差法的测量原理,设计了超声波信号的产生与功率放大电路、信号接收调理电路、显示电路等;并进行了软件设计与分析,通过系统部分调试和分析,得出如下结论:
(l)设计电路的工程中要多查阅有关的书籍和资料,以了解超声波工业水表
的原理和计算方法。
(2)利用恰当的与非门芯片及必要的外围器件可产生一定频率的振荡信号,另采用功率放大电路对其进行功率放大,可实现超声波信号的产生;
(3)设计了以单片机80c52为控制核心的超声波工业水表系统,包括超声发射电路,超声接收电路,显示电路,键盘电路等;
(4) 分析了影响超声测距精度的原因,利用40kHz晶振设计了超声波产生电路,合理选择运算放大器、提高计时精度等方法来提高精度。由于作者水平和时间及实验条件的限制,该流量测量系统的设计不是十分的完整,系统还需改进和完善。
系统改进措施如下:
(1)对超声波发射电路采取优化措施,以获得高精度高稳定度的超声波信号。
(2)对系统硬件电路采取适当的措施,降低外界干扰,提高系统的测量精度和稳定性。
致谢
在本论文的完成之际我要向所有关心和帮助我的人表示衷心的感谢。 本论文是在王勇刚老师的精心指导下完成的。王老师在我论文的创作时期
给予了我细心的指导和耐心的讲解。王老师对工作严肃认真的态度和对学术孜孜不倦、不懈进取的治学精神永远是学生学习的楷模。
回顾三年的学习,我要向关心和支持我学习的所有老师表示真挚的谢意!感谢他们对我的关心、关注和支持!
感谢我的父母对我多年无私的培养和爱护,我在他们浓浓的爱中长大成人,我任何一点的成就都来源于他们,我希望能早点用同样深的爱和付出来回报他们。
参考文献
「1]同济人学声学研究室.超声_卜业测量技术.上海:上海人民出版社,1977. 「2」梁国伟,蔡开昌.流量测量技术及仪表.北京:机械工业出版社,2002.
[3〕KritZJ.Ultrasonieflowinetersystem.Instrumentandautomation,1955,28(11):912一1
[4〕HamidullinVK.ThestatusofultrasonieflowmetersinRussia.U1trasoniessympoS 1993,1:395一399.
[5〕LynnworthLC,LiuY.Ultrasonieflowmeters:falf一centuryprogressreport,1955一2 Ultrasonie,2006,44(5):e1371一e1378.
〔6]中华人民共和国建设部.给排水用超声流量计CJ/T3063一1997.北京:中国标准出版社,1997
「7]ZhangHL,LinWJj,ZhangCY,etal.Anultrasonieflo姗eterinproduetionborehole 01lfields.UltrasonieSymposium,2005,3(9):18一21.
〔8〕NakamurH,KondoM,KukitaY.Simultaneousmeasurementofliquidveloeityandinter ProfilesofhorizontalduetwavyflowbyultrasonieveloeityProfilemeter.Nue EngineeringandDesign,1998:339一348.
〔9〕方崇志,萧德云.过程辩识.北京:清华大学出版社,1988.
「10]胡大浩,浅谈超声波流量计.油气井测试,2003,4二63一65.
「11」周里群,李玉平.超声波换能器材料的设计与研究.精密制造与自动化,2004,l:18一19.
「12]王家祯,王俊杰.传感器与变送器.北京:清华大学出版社,1992.
〔13〕姚新益.超声波流量计的特点及误差分析.计量技术,1999,8:40一42.
[14)MandardE,KouameD,BattaultR,etal.Transittim。ultrasonieflowmeter:veloeity Profileestimation.UltrasoniesSymPosium,2005,2:763一766.
[15]IoossB,LhuillierC,JeanneauH.Numeriealsimulationoftransit一timeultrason flowmeter:uneertaintiesduetoflowprofileandfluidturbulenee.Ultrasonies,2002, 1009一1015.
附录一:总电路图
附录二:总程序
#include
#define uchar unsigned char #define uint unsigned int
#define ulong unsigned long
uint c=340; //定义25度时声音的速度// ulong l,time;
char ii=1,k=80,aa;
char t,ts,tg,lb,ls,lg,lsf,fh,cb,cs,cg;
sbit RW=P2^1; //定义LCD读/写选择端// sbit RS=P2^0; //定义LCD数据/命令选择端// sbit E=P2^2; //定义LCD使能端// sbit k3=P1^2; sbit k4=P1^3;
sbit sg=P3^7; //定义超声波发射引脚// sbit ctl=P3^5; //定义超声波控制引脚//
uchar tplsb,tpmsb; //温度值低位、高位字节// sbit DQ=P3^6; //DS18B20数据通信线//
ulong tp,sw,gw,sfw,bfw,tppp; uchar *p;
void delay(uint i) //延时程序// {while(i--); }
//*******产生复位脉冲初始化DS18B20*******// void Txreset() {DQ=0;
delay(100); //拉低约900US// DQ=1; //产生上升沿// delay(4); }
//*******等待应答脉冲*******// void Rxwait() {while(DQ);
while(DQ==0); //检测到应答脉冲// delay(4); }
//*******读取数据的一位,满足读时隙要求*******// bit Rdbit() {uint i;
bit b; DQ=0;
i++; //保持至少1US// DQ=1; i++;
i++; //延时15US以上,读时隙下降后15US,DS18B20输出数据才有效// b=DQ; i=8;
while(i>0)i--;
return(b); //读时隙不低于60US// }
//*******读取数据的第一个字节*******// uchar Rdbyte() {uchar i,j,b; b=0;
for(i=1;i
b=(j>1); }
return(b); }
//*******写数据的第一个字节,满足写1和写0的时隙要求*****// void Wrbyte(uchar b) {uint i; uchar j; bit btmp;
for(j=1;j
b=b>>1; //取下一位(由低位向高位)// if(btmp) {DQ=0; i++;
i++; //延时,使得15US以内拉高// DQ=1; i=8;
while(i>0)i--; //整个写1时隙不低于60US// DQ=1; i++; i++; } else {DQ=0; i=9;
while(i>0)i--; //保持低在60至120US之间//
DQ=1;
i++;
i++;
}
}
}
//************液晶显示***************//
void writercom(uchar q) //写命令//
{E=1;
RS=0;
RW=0;
P0=q;
E=0;
delay(20);
}
void writerdata(uchar o) //写数据//
{
E=1;
RS=1;
RW=0;
P0=o;
E=0;
delay(20);
}
void writer_d(uchar *u) //写数据串//
{while(*u)
writerdata(*u++);
}
void xsinit(void)
{writercom(0x01); //清屏 //
writercom(0x38); //使用8位数据,显示两行,使用5*7的字型// writercom(0x0c); //显示设置,不显示光标,字符不显闪琐// writercom(0x06); //光标从左往右移,内容不移//
}
//**********超声波发射程序************//
void sen()
{uchar times=0;
TMOD=0x12; //定时器1工作在定时方式1,定时器0工作在定时方式2// IE=0x84; //中断设置//
TH0=244;
TL0=244;
TR0=1;
TR1=1; //开定时器//
while(1)
{while(TF0==0);
sg=~sg;
times++;
TF0=0;
if(times==20)break;} //翻转20次,发送10个脉冲信号的超声波// TR0=0;
times=0;
}
//**********外中断服务程序************//
rec()interrupt 2 using 2 //接收中断程序//
{TR1=0; //关计数器//
ctl=0;
time=TH1*256+TL1; //算出t的值,t的单位为us//
l=time*c/2;
TH1=0;
TL1=0;
}
//************数据处理,显示结果***************//
void dataxs()
{if(tppp>=10)c=338+(tppp-10)*0.6;
else c=338+(10-tppp)*0.6;
cb=c/100; //声音速度的百位//
cs=c%100/10; //声音速度的十位//
cg=c%100%10; //声音速度的个位//
lb=l/1000000; //距离的个位//
ls=l%1000000/100000; //距离的十分位//
lg=l%1000000%100000/10000; //距离的百分位//
/******LCD显示********/
writercom(0x80);
if(l
else if(TH1>=120)writer_d("too long! ");
else {writer_d("L=");
writerdata(lb+0x30); //LCD显示距离的个位//
writerdata('.');
writerdata(ls+0x30); //LCD显示距离的十分位// writerdata(lg+0x30); //LCD显示距离的百分位// writer_d("m ");
writer_d("C=");
writerdata(cb+0x30); //LCD显示声音速度的百位// writerdata(cs+0x30); //LCD显示声音速度的十位//
writerdata(cg+0x30); //LCD显示声音速度的个位//
writer_d("m/s ");
}
}
//****状态1,手动控制******************// void unauto()
{while(ii)
{while(k--)
{writercom(0xba);
writer_d("Press K4 measure"); // if(k4==0||k3==0){ii=0;break;}
delay(2000);}
k=20;
while(k--)
{writercom(0xba);
writer_d(" ");
if(k4==0||k3==0){ii=0;break;}
delay(2000);}
k=20;
}
ii=1;
ctl=0;
sen(); //调超声波发射程序//
delay(50);
ctl=1;
}
//****状态2,实时监控*****//
void aut()
{writercom(0xba);
writer_d("Designer: GUOBIN");
ctl=0;
sen();
delay(50);
ctl=1;
}
ztxz()
{while(k3==0&&aa==0)
{while(1)
{if(k3==1)break;}
aa=1;
}
while(k3==0&&aa==1)
{while(1) 提示按K4发射超声波//
{if(k3==1)break;}
aa=0;
}
}
//********主程序*******************// main()
{xsinit(); //LCD初始化 //
inptt();
while(1)
{while(!aa)
{unauto();
break;
}
while(aa)
{aut();
break;
}
while(k--) //等待回波//
{ztxz(); //状态切换键判断// delay(2000);
}
k=20;
dataxs(); //数据处理 //
}
}
1绪论
超声波流量检测技术是近年来迅速发展起来的新技术,它利用超声波在流体中传播所载的流体流速信息来测量流体流量。与传统的涡街、电磁等流量计相比,超声波流量计具有非接触、无压损、精度高、造价低、结构简单、测量范围宽等特点。尤其是超声波流量计体积小、造价与口径无关,它解决了工业测量中大口径测量设备制造、运输困难和造价高的突出问题,使它特别适合临时管道、大口径管道的流量测量,在工业供水系统中得到了广泛应用。
1.1 流量计的发展概况
几千年前,人们为适应农业灌溉和水利建设的需要,已开始关注流量测量问
题,古埃及出现了堰的雏形,我国都江堰在那时也已经知道利用宝瓶口岩壁上所刻“水则”,来观察水位,以进行控制。
18世纪以来,人们对流量测量的研究水平不断提高,各种流量测量理论和测量装置层出不穷。1738年,瑞士人丹尼尔·伯努利以伯努利方程为基础,利用差压法测量水流量;后来意大利人文丘里研究用文丘里管测量流量,并于1791年发表了研究结果;1886年,美国人赫谢尔用文丘里管制成测量水流量的实用装置。20世纪初期到中期,原有的测量原理逐渐成熟,人们开始探索新的测量原理。自1910年起,美国开始研制测量明渠中水流量的槽式流量计。1922年,帕歇尔将原文丘里水槽改革为帕歇尔水槽。1911一1912年,美籍匈牙利人卡门提出卡门涡街的新理论。1945年,科林用交变磁场成功地测量了血液流动的情况。由于经济生产落后,直到二十世纪50年代,工业中使用的主要流量计也只有孔板、皮托管、浮子流量计三种。二十世纪60年代以后,测量仪表开始向精密化、小型化等方向发展。此外,具有宽测量范围和无活动检测部件的实用卡门涡街流量计也在70年代问世。微型计算机的广泛应用,进一步提高了流量测量的能力,如激光多普勒流速计应用微型计算机后,可处理较为复杂的信号。近30年来,后研制出并投入使用的流量计有速度式流量计、容积流量计、动量式流量计、电磁流量计、超声波流量计等几十种新型流量计。目前国外投入使用的流量计有100多种,随工业生产的自动化、管道化的发展,流量计在整个仪表生产中所占比重越来越大。
我国开展近代流量测量技术的工作比较晚,早期所需的流量仪表均从国外进
口,直到20世纪30年代中期才出现光华精密机械厂所制造的家用水表,50年代有了新成仪表厂所开发的文丘里管流量计,60年代开始涡轮、电磁流量计的生产,时至今日,我国已成一个相当规模从事流量测量技术与仪表研究开发和生产的产业。但是我国现有产品的品种、规格、精确度和可靠性尚不能满足国内市场的需求,一些新型的流量计的技术水平与国际先进水平有较大的差距。随着国内市场的国际化,我国流量仪表工业面临着更加严峻的挑战。因此,开展高性能流量计的研究、开发及产业化,对促进我国流量仪表行业的发展,增强产品的国际竞争力,具有十分重要的意义。
1.2 超声波流量计的发展概况
超声波流量计(Ultrasonicflo~cter)是一种向流体发射超声信号,在其受到流体
流动影响之后再接收此超声信号并将检测结果用于流量测量的计量器具。 H1928年德国人研制成功了第一台超声波流量计,但此流量计仅限于研究阶段;直到1955年,一种基于声循环法的MAxsoN超声波流量计开始用于测量航空燃油l3],超声波流量计从研究阶段进入应用阶段。前苏联在这方面的研究是独立进行的,其第一台超声波流量计出现在1956年。1958年A.L.H一ERDRIcH等人发明折射式探头,进一步消除由于管壁的交混回响所产生的相位失真,为管外夹装提供理论依据。20世纪70年代,由于集成电路技术的发展,超声波流量计克服了精确度低、响应慢、稳定性与可靠性差等致命弱点,使实用的超声波流量计得以发展。80年代超声波流量计出现了射束位移法,多普勒法,相关法及噪声法等。90年代以后,随着单片机、DSP、FPG、CPLD等技术的发展,超声波流量计向高性能和智能化方向快速发展,超声波流量计开始进入工业测量领域。
近10年来,由于数字信号处理、超声换能器材料、声道配置以及流体动力学等学科研究水平的提高,超声流量测量技术取得了长足进展,显示了强劲的技术优势,发展势头迅猛。目前超 声波流量计正在向高精度、多功能、智能化、低功耗、低成本方向发展。
国外的超声波流量计研究机构和生产厂家多在美国、欧洲和日本,他们的产品精度高、可靠性好,但价格昂贵。目前,国外超声波流量计生产厂商主要包括美国的Daniel、Controlotron,德国的Elster、Kemel,荷兰的xnst~ent,日本的Toshiba、Fuji等公司。
我国的超声波流量计研究工作起步较晚,通过广大科技工作者的不懈努力和引进外国先进技术,国产的超声波流量计也开始批量生产并投入使用。目前,国内从事超声波流量计的研究与制造的厂商主要有唐山的汇中、美伦、惠斯特,大
连索尼卡、海峰、铭锐等公司。
1.3 选题依据及研究意义
随着工农业的发展,对流体流量和总量的计量及测试提出了越来越多、越来越高的要求。在注重节省能源,提高经济效益和产品质量的今天,流量计量与测试的重要性就更加突出并为越来越多的人所认识。特别是随着现代工业生产的飞速发展,人们对流量测量的要求越来越高,对流量测量技术和仪表的研究和开发也不断深入,流量测量方法和仪表的种类也越来越多。尤其是在近些年来,流量测量技术和仪表已经得到了长足的发展。超声波流量计是20世纪70年代随着IC技术迅速发展才开始得到实际应用的一种非接触式仪表。
近几年来,随着电子技术、数字技术和声楔材料等技术的发展,利用超声波脉冲测量流体流量的技术发展很快。基于不同原理,适用于不同场合的各种形式的超声波流量计已相继出现,其应用领域涉及到工农业、水利、水电等部门,正日趋成为流量测量工作的首选工具[2]。目前应用较多的超声波流量计测量方法主要有时差法、多普勒效应法、相关法、噪声法、波束偏移法等,其中时差法应用最为普遍。超声波流量计的时差测量法是基于超声波在具有流速的媒质里传播时,其传播时间(速率)会随着媒质流速的变化而变化的原理来实现媒质流速测量的方法。
时差法的关键是对于时间测量的高精度,近几年来,随着集成电路的高速发展,高速时间计数处理芯片不断出现,使得几十皮秒的测量精度变得可能,这也对时差法超声波流量计的发展产生了极大的推动。
1.4 本设计的主要工作
本文围绕堰式超声波流量计测量技术的实现,详细地分析和叙述了系统硬件和软件各部分的组成和设计原理。本文内容由以下5部分组成:
(1)分析了超声波工业水表的发展现状及工作原理,并说明了超声波测流量的优点。
(2)超声波工业水表的发射电路设计;
(3)超声波工业水表的接收电路设计以及显示电路设计; (4)超声波工业水表的软件设计;
(5)总结论文完成的内容,并针对不同的场合提出了改进方案。
2方案论证与设计
2.1 系统方案选定
2.1.1 采用单片机来控制的超声波工业水表
采用单片机来控制的超声波工业水表是先由单片机产生一个信号,经过信 号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,记下顺流是的时间和逆流的时间,根据时间算出流速。 F原理框图如2.1所示:
图2.1 采用单片机来控制的超声波测距仪
2.1.2 采用CPLD来控制的超声波工业水表
采用CPLD来控制的超声波工业水表,主要是在软件上运用VHDL(Very High Speed Integrated Circuit Hardware Description Language)编写程序使用MAX+plus II软件进行软硬件设计的仿真和调试,最终实现测距功能。使用本方案的优点在于在超声波测距仪设计中采用的是MAX7000s系列中的EPM7128SLC84-15的CPLD器件,其最高频率可达175.4MHz,可用于组合逻辑电路、时序逻辑电路、算法、双端口RAM等的设计。充分利用了其多达128个宏单元、68pin可
编程I/O口,使该器件可以将分频功能、计数功能、显示编码功能、振荡功能全部集于一体。又因其延时平均的特点,保证了测速结果精度高、响应速度快。缺点是方案中需要一块FPGA,一块双口RAM,还需要一块用来存储波形数据的EEPROM,那么设计的成本较高。同时在FPGA中还要用硬件描述语言(VHDL语言)编写程序来实现硬件电路功能。由于EPM7128SLC84-15的算法复杂,所以在软件实现起来编程也复杂。
2.1.3 采用锁相环频率合成技术
采用锁相环频率合成技术,也可以实现我们所需要的超声波工业水表。具体方案如下:首先通过频率合成技术产生超声波所需要的频率,在通过信号线将采用锁频率相合成技术得到的频率引到超声波的发射头上,这样就可以实现超声波测距。它的优点就是工作频率可调,也可以达到很高的频率分辨率;缺点是要求使用的滤波器通带可变,实现很困难。它的原理如图2.2所示。
图2.2锁相环频率合成技术总框图
2.2 系统总体原理框图
基于单片机的超声波工业水表。用单片机控制超声波的发射、接受电路以及进行数据处理,再用液晶显示屏进行数据的显示。
由单片机产生一个信号,经过信号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,算出顺流和逆流的时间,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发流量管速度(s),即:,其中,D为换能器与障碍物之间的距离,C为波声传播速度,T为超声波发射到返回的时间间距。
本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89C52单片机,配置时钟电路,复位电路构成单片机最小系统,由模拟电路和数字电路构成超声波发射、接收模块。由键盘,LCD显示构成人机对话通道,构
成由单片机最小系统来控制的超声波工业水表,其结构框图如图2.3所示。
图2.3 系统构框图
3系统硬件设计
3.1 超声波概述
3.1.1 超声波
超声波是指振动频率高于20KHz的机械波,它可以在气体、液体、固体或固液混合体中传播。与一般声波相比,它的振动频率高,波长短,具有束射特性,可以定向传播,具有很高的穿透能力,在流体中传播时,随着传播距离的增加,能量会逐渐衰减。
3.1.2 时差法超声波流量计的基本原理
当超声波在流动的介质中传播时,相对于固定坐标系统(例如管道中的管壁)来说,
其传播速度与在静止介质中的传播时有所不同,其变化值与介质流速有关。由于超声波脉冲在顺流和逆流中的传播速度不同,其在介质中的传播时间也不同。时差法就是根据超声波脉冲在顺流和逆流中的时间差来计算介质流速的,其基本原理如图3.1所示
图3.1时差法原理图
图中换能器A、B为两个超声波换能器,均可以发射或接收超声波信号,采
用外夹式安装在圆形管道两侧,介质流动方向如图所示,管道直径为D,超声波传播方向与介质流动方向夹角为θ,若超声波在静止介质中的传播速度为C,则超声波顺流传播时间tAB和逆流传播时间tBA分别为:
tAB=
θ
+r (3.1)
tBA=
θ
+r (3.2)
其中,D为管道直径,C为超声波在介质中的声速,V为介质流速,t为声路延时,包括超声波在管壁中的传播时间和信号在电路中的延迟时间。
由式(3.1)和式(3.2)可以得到超声波在介质中顺、逆流传播的时间差
2DVcosθ∆t=
(3.3)
22-CVcosθ
∆t=tBA-tAB
通常C2>>V2cosθ,式。。可以简化为:
2DVcosθ∆t≈
C
=2
2
(3.4)
有式可得介质流速V:
V
∆tsinθ
2Dcosθ
(3.5)
3.1.2时差法超声波工业水表原理的改进
由于超声波在介质中的传播速度与温度、压力等参数有关,如果直接使用式(3.5)会给仪表校准带来很多实际困难,并且在实际测量中也不能准确地测量流体的流速和流量。在实际应用中,通常使用改进的计算方法,去掉公式中的超声波声速,从而准确实现精确的流量测量。具体方法如下:
首先将式(3.1)、式(3.2)修改为:
C+Vcosθ=
tAB-r
(3.6)
C-Vcosθ=
(3.7) tBA-r
有式(3.6)(3.7)可计算流体流速V:
D∆tV==
2tAB-rtBA-rcosθtAB-rtBA-rsin2θ
D∆ (3.8)
但是,通过式(3.8)计算得到的流速与实际流速殊并不一致,在实际应用中通常需要乘以一个流速修正系数K:
VA
K= (3.9)
V
VA=KV
2
(3.10)
q=VA (3.11) 4
由式(3.11)可以得到流体的瞬时流量q。
本方法避免了求解声速C的困难,也避免了温度对测量结果的影响,可以得到较准确稳定的测量结果。由于电路和声路都不可避免地带来一定的延时,所以流量计系统实际测量得到的时间都包含各种时间延迟,在实际计算时需要将其减去。另外,得到介质流速后还可以求出介质中超声波的传输速度C:
D⎛11⎫C=+ ⎪ (3.12)
2sinθ⎝tAB-rtBA-r⎭
由于声速与介质种类以及现场的压力、温度都有关,声速还可以诊断测量中出现的一些问题,用于仪表的自检。
3.2 控制模块电路的设计
单片机最小系统电路由时钟电路,复位电路,键盘电路加显示电路构成。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片
机可为您提供许多较复杂系统控制应用场合。
接石英晶体和微调电容;当使用外部时钟时,用于拉外部的时钟脉冲信号。
RST复位信号:当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。
VSS:地线 VCC:+5V电源
3.2.2 P3口的第二功能如表3.1所示
表3.1 P3口的第二功能
3.2.3 AT89C52的总线结构
AT89C52的管脚除了电源、复位、时钟接入、用户I/O口部分P3外,其余管
脚都是为实现系统扩展而设置的。这些管脚构成了三总线形式,即:
1. 地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接地址外围为64K字节。16位地址总线由P0经地址锁存器提供低8位地址(A0~A7);P2口直接提供高8位地址(A8~A15)。
2. 数据总线(DB):数据总线宽度为8位,由P0口提供。
EA、3. 控制总线 (CB):由部分P3口的第二功能状态和4根独立控制线RESET、
ALE、PSE组成。AT89C52结构框图如图3.3所示。
图3.3 AT89C52结构框图 3.3 时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地作。单片机内部有一个高增益反相放大器,其输入端为芯片引脚X1,其输出端为引脚X2。而在芯片的外部,X1和X2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,只要在单片机的X1和X2引脚外接晶体振荡器就构成了自激振荡器并在单片机内部产生时钟脉冲信号。电容器C1和C2的作用是稳定频率和快速起振,本次毕业设计电容采用33pf,晶振用12MHZ.时钟振荡电路如图3.4所示。
图3.4时钟振荡电路图
3.4 复位电路
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这状态开始工作。通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的在此设计中,采用的按键复位电路。本设计选用第二种上电复位与按键均有效的各单位电路。按键复位电路如图3.5所示.本设计选用第二种上电复位与按键均有效的各单位电路。
图3.5 按键复位电路
3.5 单片机键盘电路
键盘电路是很多设计中很重要的组成部分。它主要是输入设备。
单片机应用系统中键盘有独立式和行列式两种。
独立式键盘:独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。
行列式键盘:行列式键盘键数比较多,从按一个键到键功能被执行主要包括两项工作:一是键的识别,即在键盘中找出被按的是那一个键,另一项是键功能 的实现,第一项是接口电路来实现的,而第二项是通过执行中断服务程序来实现的。具体来说,键盘借口应完成以下操作功能:
(1)键盘扫描,以判断是否有键按下。
(2)键识别,以来确定闭和键的行列位置。
(3)产生闭和键的键码。
(4)排除多键,串键以及抖动。
本次设计中采用的是独立式键盘,键盘电路图如图3.6所示.
图3.6 独立式键盘图
3.6 LCD显示器
LCD显示器是利用液晶经过处理后能改变光线的传输方向特性实现显示信息的。液晶显示器具有体积小、重量轻、功耗极低,显示内容丰富等特点,在单片机应用系统中得到了日益广泛的应用。液晶显示器按其功能可以分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可以显示数字、字符和符号等。而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果。字符形液晶显示模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。它是由若干个5*7或者是5*11等点阵符位组成的,每个点阵字符位都可以显示一个字符。点阵字符位之间,有一定点距间隔,这样就起到了字符间距和行距的作用。要使用点阵型LCD液晶显示器,必须要有相应的LCD控制器、驱动器来对LCD液晶显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储的写入的命令和显示字符的点阵。现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块LCM。使用时只要向LCM送入相应的命令和数据就可以显示所需的信息。目前市面上常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符液晶显示模块。这些LCM虽然显示字数各个相同,但是都具有相同的输入输出界面。
3.6.1 字符型液晶显示模块RT-1602C的引脚功能
RT-1602C采用标准的16脚接口,各引脚情况如下:
第1脚:VSS,电源地;
第2脚:VDD,+5V;
第3脚:VL,液晶显示偏置电压;
第4脚:RS,数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
第5脚:R/W读/写选择,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址;当RS为低电平R/W为高电平时可以读忙信号;当RS为高电平时R/W为低电平时可以写入数据。
第6脚:E,为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。 第7至14脚:D0至D7,为8位双向数据线。
第15脚:BLA,背光源正极
第16脚:BLK,背光源负极
3.6.2 字符型液晶显示模块RT-1602C的内部结构
液晶显示模块RT-1602C的内部结构可以分为三部分:一、LCD控制器,二、为LCD驱动器,三、LCD显示装置。如图3.7所示。
图3.7 晶显示模块RT-1602C的内部结构图 控制器采用HD44780,驱动器采用HD44100。HD44100是集控制器、驱动器于一体,专用于字符显示控制驱动集成电路。HD44100是作扩展显示字符位的。HD44780是字符型液晶显示控制器的代表电路。
HD44780集成电路的特点:
1. 可选择5*7或5*10点字符。
2. HD44780不仅可以作为控制器,而且还具有驱动16*40点阵液晶像素能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动,HD44780可控
制的字符高达每行80个字,也就是5*80=400点,HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具有驱动16*40点阵LCD的能力(即单行16个字符或两行8个字符)。如果在外部一HD44100外扩展多40路/列驱动,则可驱动16*2LCD。
3. HD44780的显示缓冲区DDRAM、字符发生存储器(ROM)及用户自定义的字符发生器CGRAM全部内藏在芯处内。HD447803有80个字节的显示缓冲区,分两行,地址分别为00H-27H,40H-67H,它们实际显示地址的顺序跟LCD的型号有关。
这些字符有阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符教都有一个固定的代码。如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”的代码是01000001B(41H),可以看出英文字母的代码与ASCII编码相同。要显示“1”时,只需将ASCII码31H存入DDRAM指定的位置,显示模块将在相应的位置把数字“1”的点阵字符图形显示出来,我们就能看到数字“1”了。
4. HD44780具有8位数据和4位数据传输两种方式,可与人4/8位CPU相连。
5. HD44780具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。
显示电路如图
3.8:
图3.8显示电路
3.7 超声波发射接收模块
超声技术是一门以物理学、电子学、机械及材料科学为基础、应用十分广泛的通用技术之一。目前,超声波技术广泛应用于冶金、船舶、机械、医疗等各个工业部门,例如超声清洗、超声焊接、超声加工、超声检测和超声医疗等方面,
并取得了很好的社会效益和经济效益。因此,我国对超声波技术及其传感器的研究十分活跃。在国民经济中,对提高产品质量、保障生产安全和设备安全运行、降低生产成本、提高生产效率等具有重要的意义。
超声波具有聚束、定向及反射、散射、透射等特性。按超声振动辐射大小不同大致可分为:利用超声波使物体或物件发生变化的功率效应,称之为功率超声;利用超声波获取若干信息,称为检测超声。这两种超声的应用,同样需要借助于超声波传感器(或称为换能器、或探头)来实现。
一般说来,人们可听到的声音频率范围大约为20Hz~20kHz,即为可听声波。超过此频率范围的声音,即20Hz以下的声音称为低频声波,20kHz以上的声音称为超声波。一般说话的频率范围为100Hz~8kHz。
超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强,利用这种性质就可制成超声波传感器,系统中就是利用了高频超声波反射能力强的特点,来实现距离的测量。另外,超声波在空气中传播的速度较慢,一般为340 m/s,这就使得超声波传感器的使用变得非常简单。
超声波是高于听觉频率阈值的机械振动,超声波在声场(被超声所充满的空间)传播时,如果超声波的波长与声场的尺度相比,远小于声场的尺度,超声波就像处在一种无限介质中,超声波自由地向外扩散;反之,如果超声波的波长与相邻介质的尺寸相近,则超声波受到界面限制不能自由地向外扩散。
3.7.1 超声波的三种形式
超声波在介质中可产生三种形式的波:横波——质点振动的方向垂直于波的传播方向;纵波——质点振动方向与波的传播方向一致;表面波——质点振动介于纵波与横波之间,沿物体表面传播。横波只能在固体中传播;纵波能在固体、液体和气体中传播;表面波能在固体、液体中传播,随深度的增加其衰减很快。为了测量各种状态下的物理量,多采用纵波。超声波的频率越高,与光波的某些性质越相似。超声波与其他声波一样,波速与介质密度和弹性特性有关。
3.7.2 超声波的物理性质
(1) 超声波的反射和折射
当超声波传播到两种特性阻抗不同介质的分界面上时,一部分声波被反射,另一部分透射过界面,在相邻介质内部继续传播,这种现象称为声波的反射和折射。
如果声波斜入射到两固体介质界面或两粘滞弹性介质界面时,一列斜入射的
纵波不仅会产生反射纵波和折射纵波,而且还产生反射横波和折射横波,这种现象称为超声波的波型转换。
(2) 超声波的衰减
超声波在一种介质中传播时,其声压和声强按指数函数规律衰减。例如,若衰减系数为1dB/mm,声波穿透1mm则衰减1dB;声波穿透20mm,1dB/mm×20mm=20dB,即衰减90%。
(3) 超声波的干涉
如果在同一种介质中传播频率相同、振动方向相同两列及以上的声波,就会产生波的干涉现象。由于超声波的干涉,在辐射器的周围将形成一个包括最大和最小的超声场。
3.7.3 超声波传感器
能将(交流)电信号转换成机械振动而向介质中辐射(发射)超声波,或将超声场中的机械振动转换成相应的电信号的装置称为超声波传感器(或称为超声波换能器、超声波探头)。超声波传感器一般都是可逆的,既能发射也能接受超声波。
超声波探头按其结构可分为直探头、斜探头、双探头、液浸探头和聚焦探头等。超声波探头按其工作原理又可分为压电式、磁致伸缩式、电磁式等。最常用的是压电式探头
本设计采用压电式探头传感器MA40S2R/S,其特性见下表:
表3.2 超声波传感器MA40S2R/S的特性
3.7.4 超声波发射电路
超声波传感器探测物体的方法又可分为直接方式和反射方式两类。该设计采用直接方式如图3.9所示。
图3.9超声波发射原理图
多谐振荡器的工作原理:
多谐振荡器是能产生矩形波的一种自激振荡器电路,由于矩形波中除基波外还含有丰富的高次谐波,故 称为多谐振荡器。多谐振荡器没有稳态,只有两个暂稳态,在自身因素的作用下,电路就在两个暂稳态之 间来回转换,故又称它为无稳态电路。
由555定时器构成的多谐振荡器如图1所示,R1,R2和C是外接定时元件,电路中将高电平触发端(6脚) 和低电平触发端(2脚)并接后接到R2和C的连接处,将放电端(7脚)接到R1,R2的连接处。
由于接通电源瞬间,电容C来不及充电,电容器两端电压uc为低电平,小于(1/3)Vcc,故高电平触发 端与低电平触发端均为低电平,输出uo为高电平,放电管VT截止。这时,电源经R1,R2对电容C充电,使 电压uc按指数规律上升,当uc上升到(2/3)Vcc时,输出uo为低电平,放电管VT导通,把uc从(1/3)Vcc 上升到(2/3)Vcc这段时间内电路的状态称为第一暂稳态,其维持时间TPH的长短与电容的充电时间有关 。充电时间常数T充=(R1+R2)C。
超声波信号由单片机产生,信号经过三极管后驱动超声波换能器发送超声波,途中碰到障碍物就立即返回。否则认为没有探测到物体。此电路有两个三极管构成推拉式驱动电路,三极管工作在开关状态。当信号线来一个低电平时,三极管Q1导通,Q1的集电极高电平, Q2导通,Q2的集电极为低电平,从而使
超声波换能器工作。在此电路图中的电容(C1)起隔直耦合作用。
3.7.5 超声波接收电路
超声波接收电路的电路图如图3.10所示。
图3.10超声波接收原理图
此电路由信号放大部分,检波部分,电压比较部分和信号保持部分组成,收到的信号经过两级放大,再通过倍压式峰值检波电路检波,得到一个基本稳定的信号,再通过与电压比较器比较,若信号电压大于参考电压,则输出高电平,若低于参考电压则输出为低电平,若输出高电平,则RS触发器触发,输出高电平,且一直保持下去,直到单片机给出控制信号,触发器回到低电平状态。
超声波从发射到接收时间间距的测量,是由单片机内部的计数器(如T0)来完成的 。超声波从发射到接收的时间间隔的测量, 是由单片机内部的计数器(如T0) 来完成的。在CPU 停止发送脉冲群后, 由于电阻尼, 换能器不会立即停止发送超声波, 在一定时间内仍然发送。这段时间的存在使系统不能够测量比较近的物体, 形成所谓的“盲区”, 需要对盲区时间产生的信号进行屏蔽, 不同性能的超声波换能器的盲区有所差异, 以一个通道工作的时序为例进行说明, 如图
3.11所示。
图3.11 一个通道的工作时序
3.8 总电路图
超声波工业水表总电路图见附录一
4系统软件设计
4.1 软件设计方法及仿真软件介绍
超声波工业水表的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离),又要求精细计算程序运行时间(超声波测距),所以控制程序可采用C语言和汇编语言混合编程。
超声波工业水表的仿真软件是用prote 99 SE,这是一块非常强大的软件,对于本次毕业设计中非常重要,本论文的复位电路,时钟电路,显示电路,超声波的接受和发射电路,就是用此软件仿真的。
4.2 单片机的使用资源情况
硬件资源使用说明:
● P1.0~P1.3为键盘输入端 ● P0口用作数码管位控 ● P2口用作数码管段控
● 采用了定时/计数器T0和T1中断
既在AT89S52的P0口和P2口外接由八个LED数码管(LED7~LED0)构成的显示器,用P2口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P0口作LED的位控输出线(P1.7~P1.0对应于LED的1~8),其中在P2的并行口外接8个三极管作为显示驱动,显示为八个数码管(LED0~LED7)进行动态显示。P1口外接四个按键K1、K2、K3、K4(对应于P1.0~P1.3)用于调整显示接口电路,P1.6接一个发光二极管,表示开启超声波测距功能。
4.3 软件模块功能介绍
4.3.1 软件设计的主体思路
在本系统中,在总体软件设计的过程中,我采用的思路是:利用物理学里的
声音在空气中传播的原理,在开启测试超声波的一瞬间,打开单片机的计数器0,开始计时,,同时开启外部中断,并设置外部中断的触发方式为下降沿触发,然后再设计程序的时候等待外部中断来临的时候关闭定时器0,将定时器0计的时间当做超声波在距离障碍物之间传播的总体的时间,利用相应的公式设计相应的程序计算出相应的距离。但是,采用这样的方式不排除有的时候超声波的接收端在发射端发出信号后收不到信号的可能性,在这种情况下,要采用另外一种方案:在发出信号一段时间后如果没有收到信号需要将计时器清零,然后重新开始计数,直到产生外部中断的请求为止。
4.3.2 主要寄存器参数设置
在超声波的测距的设计中,首先要设计的参数就是定时器0的参数设置,由于采用的超声波的探头的性能的限制,只可以测试20米范围以内的距离,所以采用 方式0就可以了,TH0=0x00,TL0=0x00,这样最大的计数范围可以达到60毫秒,这样的话,定时器的TMOD=0x00,由于采用外部中断的方式,所以将外部中断打开,即IE=0x80,同时还有设置的参数有:IT0=1(外部中断信号以下降沿的方式触发),EX0=1(允许外部中断)。
4.4 程序流程图
主函数的流程图如图4.1所示,LCD显示流程图如图4.2所示,超声波发射接收程序流程图如图4.3所示,键扫子程序流程图如图4.4所示,即使程序4.5所示。
图4.1 主函数流程图
在LCD显示的程序的设计的过程中,主要采取先系统初始化,然后判忙,写控制命令,在写数据,再延时,最后就能够显示相应的信息了。
图4.2 LCD显示流程图
显示子程序:
//************液晶显示***************// void writercom(uchar q) //写命令// {E=1; RS=0; RW=0; P0=q; E=0;
delay(20); }
void writerdata(uchar o) //写数据// { E=1; RS=1; RW=0; P0=o; E=0;
delay(20); }
void writer_d(uchar *u) //写数据串// {while(*u)
writerdata(*u++); }
void xsinit(void)
{writercom(0x01); //清屏 //
writercom(0x38); //使用8位数据,显示两行,使用5*7的字型// writercom(0x0c); //显示设置,不显示光标,字符不显闪琐// writercom(0x06); //光标从左往右移,内容不移// }
在超声波的程序的设计的过程中,主要的思路是:首先是定时器的初始化,然后开启定时器0,当接收到外部中断请求的信号时候关闭定时器0,转去执行 相应的处理程序。
图4.3 超声波发射程序流程图
超声波发射程序:
//**********超声波发射程序************// void sen() {uchar times=0;
TMOD=0x12; //定时器1工作在定时方式1,定时器0工作在定时方式2// IE=0x84; //中断设置// TH0=244; TL0=244; TR0=1;
TR1=1; //开定时器// while(1)
{while(TF0==0); sg=~sg;
times++; TF0=0;
if(times==20)break;} //翻转20次,发送10个脉冲信号的超声波// TR0=0; times=0; }
在键盘的处理的程序中,主要的思路是:首先调用键功能处理程序,判断是否有键按下,如果有键按下,延时一段时间,然后继续判键,如果第二次真的有键按下,则表示有键按下,这时候转去执行相应的键功能程序。
图4.4 键扫子程序流程图
键盘子程序:
//****状态1,手动控制******************// void unauto() {while(ii) {while(k--)
{writercom(0xba);
writer_d("Press K4 measure"); //提示按K4发射超声波// if(k4==0||k3==0){ii=0;break;} delay(2000);} k=20;
while(k--)
{writercom(0xba);
writer_d(" "); if(k4==0||k3==0){ii=0;break;} delay(2000);} k=20; }
ii=1; ctl=0;
sen(); //调超声波发射程序// delay(50); ctl=1; }
//****状态2,实时监控*****// void aut()
{writercom(0xba);
writer_d("Designer: GUOBIN"); ctl=0; sen(); delay(50);
} ztxz()
{while(k3==0&&aa==0) {while(1)
{if(k3==1)break;} aa=1; }
while(k3==0&&aa==1) {while(1)
{if(k3==1)break;} aa=0; } }
计时程序流程图:
图4.5 时差程序流程图
时差子程序:
//********主程序*******************// main()
{xsinit(); //LCD初始化 // inptt(); while(1)
{while(!aa) {unauto(); break; }
while(aa) {aut();
}
while(k--) //等待回波//
{ztxz(); //状态切换键判断// delay(2000); }
k=20;
dataxs(); //数据处理 // } }
4.5 程序清单
程序清单见附录二
5安装与调试
5.1 调试
5.1.1 软件调试
系统软件设计、调试的过程如图5.1所示
图5.1 软件调试流程图
其过程分为以下几个步骤:
第一步,建立源程序。通过计算机开发系统的编辑软件,按照所要求的格式、语法规定、源程序输入到开发系统中,并存在磁盘上。
第二步,在计算机上,利用KILE软件对第一步输入的源程序进行编译,变为可执行的目标代码。如果源程序有语法错误,则其错误将显示出来,然后返回到第一步进行修改,再进行编译,直到语法错误全部纠正为止。
第三步,动态在线调试。对于与系统、硬件无联系的程序,可以借助动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到第一步修改,直到逻辑错误纠正为止。对于与系统硬件紧密相关的程序,则需软件,硬件同时进行调试,将程序烧入CPU,然后将CPU 插入系统,发现硬件故障排除故障,发现逻辑错误,修改程序,消除逻辑错误。
5.1.2 硬件调试
硬件调试分两步:
第一步:系统上电之前,先用万用表等工具,根据硬件逻辑设计图,仔细检查线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线是否存在相互之间短路或与其它信号线的短路。
第二步:第一步的调试,只是对系统进行初步调试,可以排除一些明显的故障,而硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要是靠软件和硬件联调来排除。硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。
5.2 误差分析
5.2.1 超声波回波声强的影响
回波的声强与障碍物距离的远近有直接关系, 实际测量时, 不一定是第一个回波的过零点触发, 其原理如图5.2 所示。这种误差不能从根本上消除, 但是可以通过根据障碍物的距离调整脉冲群的脉冲个数以及动态调整比较电压来减小这种误差。另一方面将求距离公式D=CT/2后加一个补偿系数来补偿计时误差,D=CT/2+a(a 与距离、脉冲个数相关) 。
1.发射波包络线 2.回波包络线
图
5.2 脉冲个数与回波声强对计时影响示意图 5.2.2 超声波波束入射角的影响
如果系统是用来测量面与点的距离, 则被测物、换能器及换能器所在测量参考平面三者之间存在一个几何角度, 即反射波入射到换能器的角度, 当这个角度不是90°时, 系统测量到的距离是障碍物与换能器之间的距离而不是和测量参考平面之间的距离, 这就会造成测量误差, 如图5.3 所示。
图5.3 超声波回波入射角影响分析图
当障碍物的距离较小时, 这个误差就会成为近距离时的主要误差来源。可以用多个换能器同时测量, 利用几何关系来计算得出实际距离, 消除这种误差。
1
s=(y1+y2+z) (5.1) 2
∆=
1
(s+y1)(s+y2)(s+z) (5.2) 2
x=2∆/2…………….. (5.3)
式中 y1----换能器a 、b到被测物的距离 y2---- 换能器a、b之间的距离 x-----被测物到测量的距离
5.2.3 超声波传播速度的影响
稳定准确的声波传播速度是保证测量精度的必要条件, 传播介质的温度、压力及密度对声速都产生直接影响。对于在大气中传播的声波而言, 引起声速变化的主要原因是温度的变化。采用声速预置和传播介质温度测量结合的方法对声速进行修正, 可有效地降低温度变化产生的误差。在对距离的精确度要求不高的应用中可以不进行温度补偿, 选择室温20℃左右时的声速340m/s作为固定参数,当
温度在- 10~ 40 ℃之间变化时声速误差在±5% 之间。如果在室外测量, 对于季节温差大的地区,还可以采用预置该地区12个月的统计温度,用以对温度进行补偿, 既可提高精度,又不增加成本。影响测量误差的因素很多,包括现场环境干扰、时基脉冲频率等。在实际应用中可以根据系统测量精度要求,采用合理的补偿手段。
6系统的应用
超声波流量计应用的场合:
(l)解决了工业流量测量普遍存在着的大管径、大流量测量困难的问题。一般流量计随着测量管径的增大会带来制造和运输上的困难,造价提高、能损加大、安装不便。这些问题超声波流量计均可避免。因为各类超声波流量计均可实现管外安
装、非接触测流,仪表造价基本上与被测管道口径大小无关,而其它类型的流量计随着口径增加,造价大幅度增加,故口径越大超声波流量计的功能价格比越优越。
(2)超声波流量计的流量测量准确度几乎不受被测流体温度、压力、粘度、密度等参数的影响。在保证超声波能够在介质中传播的前提下,超声波流量计不仅可以测量液体、气体的流量,它还可以测量双相介质的流体流量。因此,超声波流量计可以制成非接触式及便携式测量仪表,可以解决其它类型仪表所难以测量的强腐蚀性、非导电性、放射性及易燃易爆介质的流量测量问题。
(3)无压力损失。由于超声波流量计能够做成非接触式的,无插入部件,超声波流量计不会改变流体的流动状态,不会对流体产生附加阻力,不会产生压力损失,可以大大提高流量计的测量精度。
(4)超声波流量计具有较宽的量程比。普通流量计的量程比一般为1:4至1:50之间,而超声波流量计的量程比可达1:300,因此它适用于各种不同流速的场合。 (5)超声波流量计结构简单、便于维护,非常适合工业测量。超声波流量计的感测元件结构简单,没有转动部件,主要工作集中在二次仪表的电路设计和算法实现上,从而降低了对机械设计和加工的要求。
7总结
本课题研制的超声波工业水表采用声时差法的测量原理,设计了超声波信号的产生与功率放大电路、信号接收调理电路、显示电路等;并进行了软件设计与分析,通过系统部分调试和分析,得出如下结论:
(l)设计电路的工程中要多查阅有关的书籍和资料,以了解超声波工业水表
的原理和计算方法。
(2)利用恰当的与非门芯片及必要的外围器件可产生一定频率的振荡信号,另采用功率放大电路对其进行功率放大,可实现超声波信号的产生;
(3)设计了以单片机80c52为控制核心的超声波工业水表系统,包括超声发射电路,超声接收电路,显示电路,键盘电路等;
(4) 分析了影响超声测距精度的原因,利用40kHz晶振设计了超声波产生电路,合理选择运算放大器、提高计时精度等方法来提高精度。由于作者水平和时间及实验条件的限制,该流量测量系统的设计不是十分的完整,系统还需改进和完善。
系统改进措施如下:
(1)对超声波发射电路采取优化措施,以获得高精度高稳定度的超声波信号。
(2)对系统硬件电路采取适当的措施,降低外界干扰,提高系统的测量精度和稳定性。
致谢
在本论文的完成之际我要向所有关心和帮助我的人表示衷心的感谢。 本论文是在王勇刚老师的精心指导下完成的。王老师在我论文的创作时期
给予了我细心的指导和耐心的讲解。王老师对工作严肃认真的态度和对学术孜孜不倦、不懈进取的治学精神永远是学生学习的楷模。
回顾三年的学习,我要向关心和支持我学习的所有老师表示真挚的谢意!感谢他们对我的关心、关注和支持!
感谢我的父母对我多年无私的培养和爱护,我在他们浓浓的爱中长大成人,我任何一点的成就都来源于他们,我希望能早点用同样深的爱和付出来回报他们。
参考文献
「1]同济人学声学研究室.超声_卜业测量技术.上海:上海人民出版社,1977. 「2」梁国伟,蔡开昌.流量测量技术及仪表.北京:机械工业出版社,2002.
[3〕KritZJ.Ultrasonieflowinetersystem.Instrumentandautomation,1955,28(11):912一1
[4〕HamidullinVK.ThestatusofultrasonieflowmetersinRussia.U1trasoniessympoS 1993,1:395一399.
[5〕LynnworthLC,LiuY.Ultrasonieflowmeters:falf一centuryprogressreport,1955一2 Ultrasonie,2006,44(5):e1371一e1378.
〔6]中华人民共和国建设部.给排水用超声流量计CJ/T3063一1997.北京:中国标准出版社,1997
「7]ZhangHL,LinWJj,ZhangCY,etal.Anultrasonieflo姗eterinproduetionborehole 01lfields.UltrasonieSymposium,2005,3(9):18一21.
〔8〕NakamurH,KondoM,KukitaY.Simultaneousmeasurementofliquidveloeityandinter ProfilesofhorizontalduetwavyflowbyultrasonieveloeityProfilemeter.Nue EngineeringandDesign,1998:339一348.
〔9〕方崇志,萧德云.过程辩识.北京:清华大学出版社,1988.
「10]胡大浩,浅谈超声波流量计.油气井测试,2003,4二63一65.
「11」周里群,李玉平.超声波换能器材料的设计与研究.精密制造与自动化,2004,l:18一19.
「12]王家祯,王俊杰.传感器与变送器.北京:清华大学出版社,1992.
〔13〕姚新益.超声波流量计的特点及误差分析.计量技术,1999,8:40一42.
[14)MandardE,KouameD,BattaultR,etal.Transittim。ultrasonieflowmeter:veloeity Profileestimation.UltrasoniesSymPosium,2005,2:763一766.
[15]IoossB,LhuillierC,JeanneauH.Numeriealsimulationoftransit一timeultrason flowmeter:uneertaintiesduetoflowprofileandfluidturbulenee.Ultrasonies,2002, 1009一1015.
附录一:总电路图
附录二:总程序
#include
#define uchar unsigned char #define uint unsigned int
#define ulong unsigned long
uint c=340; //定义25度时声音的速度// ulong l,time;
char ii=1,k=80,aa;
char t,ts,tg,lb,ls,lg,lsf,fh,cb,cs,cg;
sbit RW=P2^1; //定义LCD读/写选择端// sbit RS=P2^0; //定义LCD数据/命令选择端// sbit E=P2^2; //定义LCD使能端// sbit k3=P1^2; sbit k4=P1^3;
sbit sg=P3^7; //定义超声波发射引脚// sbit ctl=P3^5; //定义超声波控制引脚//
uchar tplsb,tpmsb; //温度值低位、高位字节// sbit DQ=P3^6; //DS18B20数据通信线//
ulong tp,sw,gw,sfw,bfw,tppp; uchar *p;
void delay(uint i) //延时程序// {while(i--); }
//*******产生复位脉冲初始化DS18B20*******// void Txreset() {DQ=0;
delay(100); //拉低约900US// DQ=1; //产生上升沿// delay(4); }
//*******等待应答脉冲*******// void Rxwait() {while(DQ);
while(DQ==0); //检测到应答脉冲// delay(4); }
//*******读取数据的一位,满足读时隙要求*******// bit Rdbit() {uint i;
bit b; DQ=0;
i++; //保持至少1US// DQ=1; i++;
i++; //延时15US以上,读时隙下降后15US,DS18B20输出数据才有效// b=DQ; i=8;
while(i>0)i--;
return(b); //读时隙不低于60US// }
//*******读取数据的第一个字节*******// uchar Rdbyte() {uchar i,j,b; b=0;
for(i=1;i
b=(j>1); }
return(b); }
//*******写数据的第一个字节,满足写1和写0的时隙要求*****// void Wrbyte(uchar b) {uint i; uchar j; bit btmp;
for(j=1;j
b=b>>1; //取下一位(由低位向高位)// if(btmp) {DQ=0; i++;
i++; //延时,使得15US以内拉高// DQ=1; i=8;
while(i>0)i--; //整个写1时隙不低于60US// DQ=1; i++; i++; } else {DQ=0; i=9;
while(i>0)i--; //保持低在60至120US之间//
DQ=1;
i++;
i++;
}
}
}
//************液晶显示***************//
void writercom(uchar q) //写命令//
{E=1;
RS=0;
RW=0;
P0=q;
E=0;
delay(20);
}
void writerdata(uchar o) //写数据//
{
E=1;
RS=1;
RW=0;
P0=o;
E=0;
delay(20);
}
void writer_d(uchar *u) //写数据串//
{while(*u)
writerdata(*u++);
}
void xsinit(void)
{writercom(0x01); //清屏 //
writercom(0x38); //使用8位数据,显示两行,使用5*7的字型// writercom(0x0c); //显示设置,不显示光标,字符不显闪琐// writercom(0x06); //光标从左往右移,内容不移//
}
//**********超声波发射程序************//
void sen()
{uchar times=0;
TMOD=0x12; //定时器1工作在定时方式1,定时器0工作在定时方式2// IE=0x84; //中断设置//
TH0=244;
TL0=244;
TR0=1;
TR1=1; //开定时器//
while(1)
{while(TF0==0);
sg=~sg;
times++;
TF0=0;
if(times==20)break;} //翻转20次,发送10个脉冲信号的超声波// TR0=0;
times=0;
}
//**********外中断服务程序************//
rec()interrupt 2 using 2 //接收中断程序//
{TR1=0; //关计数器//
ctl=0;
time=TH1*256+TL1; //算出t的值,t的单位为us//
l=time*c/2;
TH1=0;
TL1=0;
}
//************数据处理,显示结果***************//
void dataxs()
{if(tppp>=10)c=338+(tppp-10)*0.6;
else c=338+(10-tppp)*0.6;
cb=c/100; //声音速度的百位//
cs=c%100/10; //声音速度的十位//
cg=c%100%10; //声音速度的个位//
lb=l/1000000; //距离的个位//
ls=l%1000000/100000; //距离的十分位//
lg=l%1000000%100000/10000; //距离的百分位//
/******LCD显示********/
writercom(0x80);
if(l
else if(TH1>=120)writer_d("too long! ");
else {writer_d("L=");
writerdata(lb+0x30); //LCD显示距离的个位//
writerdata('.');
writerdata(ls+0x30); //LCD显示距离的十分位// writerdata(lg+0x30); //LCD显示距离的百分位// writer_d("m ");
writer_d("C=");
writerdata(cb+0x30); //LCD显示声音速度的百位// writerdata(cs+0x30); //LCD显示声音速度的十位//
writerdata(cg+0x30); //LCD显示声音速度的个位//
writer_d("m/s ");
}
}
//****状态1,手动控制******************// void unauto()
{while(ii)
{while(k--)
{writercom(0xba);
writer_d("Press K4 measure"); // if(k4==0||k3==0){ii=0;break;}
delay(2000);}
k=20;
while(k--)
{writercom(0xba);
writer_d(" ");
if(k4==0||k3==0){ii=0;break;}
delay(2000);}
k=20;
}
ii=1;
ctl=0;
sen(); //调超声波发射程序//
delay(50);
ctl=1;
}
//****状态2,实时监控*****//
void aut()
{writercom(0xba);
writer_d("Designer: GUOBIN");
ctl=0;
sen();
delay(50);
ctl=1;
}
ztxz()
{while(k3==0&&aa==0)
{while(1)
{if(k3==1)break;}
aa=1;
}
while(k3==0&&aa==1)
{while(1) 提示按K4发射超声波//
{if(k3==1)break;}
aa=0;
}
}
//********主程序*******************// main()
{xsinit(); //LCD初始化 //
inptt();
while(1)
{while(!aa)
{unauto();
break;
}
while(aa)
{aut();
break;
}
while(k--) //等待回波//
{ztxz(); //状态切换键判断// delay(2000);
}
k=20;
dataxs(); //数据处理 //
}
}