APP下载

一种新型波高测量系统的设计

2021-05-07李木国刘建合

计算机测量与控制 2021年4期
关键词:液位电容单片机

李木国,刘建合,2,杜 海

(1.大连理工大学 海岸和近海工程国家重点实验室,辽宁 大连 116024; 2.大连理工大学 控制科学与工程学院,辽宁 大连 116024)

0 引言

为了准确地研究波浪对实验水池或水槽中物理模型的作用,需要对波浪的变化进行精准地测量,只有这样才能对后续的研究提供高质量的数据和可靠的分析结果,所以一种高精度、高灵敏度的波高测量系统是十分重要和必要的。

波高测量方法实际上是一种液位动态检测技术,而液位检测技术一直被国内外相关领域研究人员视为工业应用研究的重点之一。虽然液位测量的研究已经有了较长的历史,但是由于被测液体性质及储存环境的多样化,导致液位检测问题变得复杂,因而关于液位检测的技术也在不断地更新[2]。当被测液体液位发生变化时,液位检测技术能够把物理量变化与电信号变化相联系,实现液位到检测信号的转换[3]。目前液位测量方法有二十余种[4],其中包括压力式液位传感器、超声波液位传感器、电容式液位传感器等。电容式液位传感器以其成本低、结构简单、动态特性良好、测量精度高的特点,成为海工实验室波浪测量时最常用的方法[5]。目前,大多数电容式液位传感器[6-8]是通过信号调理电路将传感器的电容值转化为微弱的电压信号,再运用放大电路放大电压信号,经过A/D转换器将信号送入微处理器,这种方式虽然成功地将水位变化转化为电信号的变化,但容易在放大有效信号的同时也放大干扰信号。

针对波高测量的稳定性问题,本文提出了一种新型的电容式波高传感器设计方法,该方法运用电容充放电原理,利用单片机的片内模拟比较器和定时器的功能使电容量测量问题转化为时间测量问题,无需经过信号放大和A/D转换器,避免了零点漂移问题[9]。本文首先阐述波高传感器的结构及其工作原理;然后对波高测量系统的硬件结构图及工作原理进行详细说明;其次提出波高测量系统程序设计方法;最后通过实验证明本文所提波高测量系统的可行性和有效性。

1 新型电容式波高传感器工作原理

与大多数电容式波高传感器一样,本文设计波高仪时仍采用如图1所示的“弓”型结构,该结构主要包括接线座、钢柱以及漆包线3个部分。

图1 波高传感器结构图

当波高传感器入水时,传感器两极的覆盖面积随液位的变化而变化,电容量也随之变化[10],其数值由水中和空气中两部分组成。其中,波高传感器空气部分的电容量可依据平行导线间的电容量计算方法进行计算[11],如式(1)所示:

(1)

当计算图1所示的波高传感器入水部分电容时,可参考圆筒型电容计算式(2)进行计算[12]:

我之所以骂得这么狠,这么低俗,因为昨天晚上,他在我娘的房间里,发出一种类似种猪配种的声音,此刻,那种声音在我耳旁响起,它提醒了我,我脱口而出。他没能把我的学费准备好,惹我生气,我自然拣最难听的,最刺痛他的话骂。

(2)

式中,D为漆包线外径,d1为漆包线铜芯直径,ε0为真空中的介电常数,ε1为漆包线绝缘层的介电常数,Hx为水中波高传感器长度。由式(1)和式(2)可得此时波高传感器总的电容量为:

C=C1+C2=A(l-x)+Bx=

(B-A)x+A·l

(3)

其中:l为波高传感器漆包线长度,x(同Hx)为波高传感器入水深度,式中:

由式(3)可知,环境参数一定的情况下,波高传感器的电容大小与入水深度线性相关。根据充电时电容两端电压与时间的关系式:

Vt=Vu(1-e-t/τ)

(4)

式中,Vu为充电电压,Vt为电容两端电压,t为充电时长,τ=RC为时间常数,C为波高传感器电容值,R为RC充放电电路中的电阻,由式(4)可得充电时长与电容变化关系,如式(5)所示:

t=KC

(5)

t=K[(B-A)x+Al]

(6)

由公式(6)可知,充电时间t与波高传感器入水深度线性相关,因此只要得到充电时长t就可计算出波高传感器的入水深度x。而在本文中,t值的获取将由单片机定时器来完成:令单片机定时器计数时间间隔为t0,则计数值为N时得到的时长为:

t=Nt0

(7)

同时由式(6)与式(7)可得:

x=λN-η

(8)

2 波高测量系统硬件设计

如上一节所述,波高测量系统主要依据水位变化与电容式波高传感器充放电时间之间的关系进行波高的测量。本文所设计的波高测量系统原理结构如图2所示。

图2 波高测量系统硬件框图

在图2中,波高传感器接入电容充放电电路中,电容充放电电路接入单片机系统。然后,单片机系统作为下位机经由RS232转USB电路通过USB接口与上位机相连,同时USB接口为单片机系统供电。在本文中,单片机系统采用ST公司的STM32F051R8,该芯片系统时钟最高工作频率为48 MHz,内置模拟比较器,1个高级定时器,6个通用定时器,1个基本定时器等。高级定时器和通用定时器各通道均具有输出比较功能和输入捕获功能,其中高级定时器T1具有4个独立的通道。本文所设计的系统将利用16位高级定时器T1的4通道输出占空比为50%的方波,并利用该信号对电容式传感探头进行充放电控制;同时利用单片机片内模拟比较器,并设置模拟器反向输入端电压为一定值作为参考电压,而模拟器正向输入端为波高传感器两端电压,并将模拟比较器的输出映射到定时器T1的通道1。与此同时,利用定时器T1通道1的输入捕获功能,在模拟比较器正向输入端的电压大于反向输入端参考电压时,产生一上升沿,从而触发输入捕获中断。此时,定时器T1数据寄存器的值被写入到输入捕获寄存器中。之后,将输入捕获寄存器的数据通过USB接口送入上位机进行处理(见式(8))便可得到波高数据并进行波形显示。

3 系统软件程序设计

本文所设计的波高测量程序主要分为下位机即单片机系统的数据采集与发送部分和上位机的数据接收与数据处理部分。下位机数据采集与发送程序使用Keil uVision 5软件编写。首先下载STM32F051R8单片机所需要的标准函数库和系统启动文件;然后使用标准函数库配置GPIO(general-purpose input/output) 端口、定时器、模拟比较器、串口等外设,使能相关中断等;最后在程序编写完成后下载到单片机进行执行。上位机数据接收和数据处理程序使用Visual Studio 2015进行编写,使用了CSerialPort类设置与下位机程序相对应的串口参数,包括波特率、数据位、停止位等,在接收到下位机上传的计数值数据时,利用公式(8)将其转化为波高数据,然后运用TeeChart8绘图控件,将各个波高数据绘制成波高曲线,同时将波高数据写入到自定义的文本文件中保存起来以便分析。由于每次定时器T1发生输入捕获中断时,下位机需要将T1的输入捕获寄存器中的16位二进制数通过USB串口上传到上位机,而串口每次只能传送8位二进制,所以一个完整的16位数据传输需要两次传送才能完成,下位机先传送高8位再传送低8位,上位机接收时将第一次接收的高八位数据左移8位然后加上第二次传送的低8位数据便得到一个完整的16位数据。

本文程序流程如图3所示,在系统开始采集数据时,首先进行设备初始化操作,其中包括对串口通信接口的配置(如设置串口波特率、数据位、停止位、校验位等)以及对模拟比较器进行初始配置(本文中设置模拟比较器反相输入端电压为2.5 V)。之后对定时器T1进行初始化配置,输出PWM波并使能输入捕获中断,程序进入空循环。此时,当有定时器T1输入捕获中断发生时,开始执行中断服务程序。单片机输出高电平3.3 V、低电平0 V的PWM方波,在高电平持续时间内,定时器T1从0开始计数到设定值,待波高传感器两端电压充电到参考电压时,产生中断,此时将定时器输入捕获寄存器的值上传给上位机,在低电平持续时间内,波高传感器放电至0 V,在下个高电平到来时,波高传感器开始充电,定时器T1从0开始计数,如此循环往复。最后上位机根据接收到的计数值计算得到波高数据并进行波形显示。

图3 软件实现流程图

4 实验与讨论

线性度、灵敏度和精度是衡量波高测量系统性能的3项重要指标,因此本文将基于这3项指标对所提方法进行验证。

本文在研究变量之间的线性关系时(以x与y两个变量为例)首先采用最小二乘法将测试点拟合成y=a1x+a0的形式,如式(9)与式(10)所示,其中n为样本个数。其次进行线性相关系数的计算,如式(11)所示。线性相关系数r越接近于1,则说明变量x与y的线性相关度越高。

(9)

(10)

(11)

4.1 技术方法验证

为了验证本文所提方法的有效性,首先取7个不同大小的标准电容分别接入电路来代替不同入水深度的波高传感器。定时器T1计数频率48 MHz,串口波特率设置为115 200,无校验位,即传输速率10.27 kB/s,模拟比较器反向输入端电压2.5 V。各电容值与发生定时器输入捕获中断时T1的计数值如表1所示。

表1 定时器T1计数值与所测电容值

根据表1中的数据进行最小二乘法直线拟合,首先基于式(9)计算得到系数a1=0.313 40,同时使用式(10)得到另一个系数a0=-81.557 43,因此可以获得直线方程y=0.313 40x-81.557 43,如图4所示。

图4 电容值与计数值曲线图

从图4中可以清楚看出,采样点与拟合直线基本吻合在一起。为了进一步评测方法的线性度,基于表1中的数据按图4直线方程进行线性相关度的计算,此时根据式(11)可以计算得到相关系数r=0.999 976,该数值与1非常接近,这一实验充分证实了本文采用模拟比较计数法进行电容式传感器信号转换的有效性。由拟合直线可知,电容量每增加0.313 40 pF,计数器值增加1,说明了在该测试条件下,浪高仪测量系统最小能分辨0.313 40 pF的电容变化量。

为了进一步验证本文所设计波高测量系统的灵敏度,采用电容表进行波高传感器的电容测量。本文按照图2所示的结构进行波高传感器的样机制作,漆包线直径为0.5 mm,长度1 m,漆包线距钢柱3 cm,钢柱直径6 mm,漆包线铜芯作为电容正极,铜柱作为电容负极。此时将波高传感器垂直放置在量筒中,其最大液位高度为100 cm,量筒最小刻度为1 mm。在不同液位高度情况下,用电容表测量波高传感器的电容,表2为其中5组数据。

表2 液位高度与波高传感器电容值

根据表2中的数据,利用式(9)计算a1=54.6,利用式(10)计算a0=532,因此可以得到直线方程为y=54.6x+532。同时利用式(11)可计算相关系数为r=0.999 979 9。该直线的物理意义为,波高传感器入水深度每增加1 mm,其电容量增加5.46 pF,同时由于电容量每增加0.313 40 pF,计数器值增加1,则波高传感器入水深度每增加1 mm定时器计数约为17。因此可以认为,在该实验条件下,波高传感器的灵敏度可记为S=17个计数值/mm,即波高传感器入水深度每变化约0.06 mm定时器计数值增加1,也就是说该实验条件下波高传感器的分辨率为0.06 mm。

4.2 样机测试

实验测试时,首先将波高传感器接入到测量电路中;然后将波高传感器垂直固定在量筒内;接下来在不同水位下进行波高数据采集。表3为其中7组液位高度以及相对应的单片机定时器计数值。

表3 液位高度与定时器计数值

表3中,样本个数n= 7,利用公式(9)计算得到直线方程系数a1=0.005 65,利用公式(10)计算另一个系数为a0=-11.069,因此可以得到拟合直线为:y=0.005 65x-11.069,其图形显示如图5所示。从图5中可以看出,样本点几乎完美与拟合直线重合在一起。与此同时,利用公式(11)计算相关系数r=0.999 971,该数值也进一步说明按本文所设计的波高测量系统具有较高的线性度。之后,在整个量程内进行多次测量,比较给定液位和测量所得液位之间的差值得到该测试条件下波高测量系统精度为0.2%,完全满足了海洋工程模型试验对波高测量精度的要求,这也进一步说明了本文的设计方法是行之有效的。

图5 液位高度与计数值曲线图

5 结束语

本文基于电容充放电时间检测的方法,通过单片机片内模拟比较器和定时器的输入捕获功能实现了对波高传感器电容量的充放电时间的检测,间接地实现了对波高的测量。本文首先给出了研究背景、液位测量的研究现状及本文的研究目的;其次按照原理推导和硬件、软件设计的次序详细阐述了本文波高测量系统的设计方法和技术方案;最后通过实验对本文所提方法进行验证,实验结果表明本文方法不仅可以有效测得波高变化,而且具有较高的线性度、灵敏度和精度,完全可以满足海工模型试验波浪信息采集的需要。

猜你喜欢

液位电容单片机
基于单片机的智能平衡小车设计
除氧器液位控制器切换异常原因分析及应对措施
天然气车辆液位测量系统相关性的研究
超级电容车的充电,有望几十秒内搞定吗?
浅谈电感和电容在交流电路中的作用
TEP除气装置液位控制及故障分析
C8051F020与80C51单片机的异同点
智能液位控制器在排水系统中的应用
小体积大用途
电容器应用问题的理解