发明内容
针对现有技术中存在的缺陷,本发明提出一种测量非金属容器中液体容量的方法和装置,容器无须透明,不依赖于人的主观感觉;装配简单,成本较低;测量精度较高,可以无缝测量;对测量环境适应性好;掉电重启后可以识别当前的液面高度;抗干扰性能好;超低功耗;适应各种使用场景,即使容器倾斜,也能实现准确测量。具体技术方案如下:
一种测量非金属容器中液体容量的装置,包括检测IC电路、MCU和至少两个电容感应片,所述检测IC电路与每一个所述电容感应片分别一一联接,所述检测IC电路通过第一通讯接口与所述MCU相联接;所述至少两个电容感应片均具有突出部分和凹下部分,一个所述电容感应片的突出部分伸入相邻另一个所述电容感应片的凹下部分,从而使得相邻电容感应片相互交错。
所述装置进一步包括矢量传感器,所述矢量传感器通过第二通讯接口与所述MCU相联接。
所述装置进一步包括电源开关和电源,所述电源通过所述电源开关向所述检测IC电路供电,所述电源开关通过IO通讯接口与所述MCU相联接,所述MCU可打开或关闭所述电源开关。
所述装置进一步包括参考电容感应片,所述参考电容感应片与所述检测IC电路单独联接,所述参考电容感应片被设置于所述容器外壁上的、液面高度无法达到的位置。
所述第一通讯接口和第二通讯接口均为IIC、SPI或UART通讯接口。
所述至少两个电容感应片均由布置于软性PCB上的、自上而下均匀分布的铜箔构成。
所述至少两个电容感应片的形状均为锯齿形。
所述软性PCB四周和背面均铺设铜网格接地。
使用胶将所述软性PCB自上而下贴装在所述容器的外壁。
一种测量非金属容器中液体容量的方法,其特征在于,包括以下步骤:
(1)制作与所述容器的形状和尺寸相对应的软性PCB,所述软性PCB包括至少两块具有一定面积的铜箔,每块所述铜箔均构成一个电容感应片,即构成至少两个电容感应片;所述至少两个电容感应片均具有突出部分和凹下部分,一个所述电容感应片的突出部分伸入相邻另一个所述电容感应片的凹下部分,从而使得相邻电容感应片相互交错;
(2)检测IC电路与每一个电容感应片分别一一联接;当所述容器中液面高度变化时,所述检测IC电路检测与液面高度变化相对应的若干电容感应片的变化后的电容值数据;所述检测IC电路通过第一通讯接口与MCU相联接,并将检测得到的数据传送给所述MCU;在所述容器的外壁上设置矢量传感器,用以检测所述容器倾斜的角度,所述矢量传感器通过第二通讯接口与MCU相联接,并将检测得到的数据传送给所述MCU;
(3)根据接收到的所述检测IC电路和所述矢量传感器发送的数据,所述MCU计算出液面的高度;
(4)根据计算得到的液面高度,如果所述容器的形状是规则的,则所述MCU结合所述容器的尺寸计算出所述容器内液体的容量;如果所述容器的形状是不规则的,则所述MCU对于所述容器进行数学建模,根据多重积分算法计算出所述容器内液体的容量,即利用公式V=∫∫∫Ωf(x,y,z)dxdydz计算所述容器内液体的容量,其中,Ω为积分区域即所述容器内液体表面区域,f(x,y,z)为液体密度的表达式。
所述至少两个电容感应片的形状均为锯齿形。
所述方法进一步包括以下步骤:所述软性PCB四周和背面铺设铜网格接地。
所述方法进一步包括以下步骤:使用胶将所述软性PCB自上而下贴装在所述容器的外壁。
所述第一通讯接口和第二通讯接口均为IIC、SPI或UART通讯接口。
所述检测IC电路检测并传送给所述MCU的数据是:与所述容器中液面高度相对应的电容感应片A的电容值C1、与所述容器中液面高度相对应的另一电容感应片B的电容值C2以及完全处于液面以下的感应电容片的数量N;所述矢量传感器检测并传送给所述MCU的数据是:所述容器的倾斜角度。
所述步骤(3)中液面高度的计算方法是:在接收电容值C1、电容值C2、完全处于液面以下的感应电容片的数量N和所述容器的倾斜角度数据后,所述MCU经计算得到M值,再由液面高度的计算公式h=P*N+M可得到液面高度h,其中,P为测量的精度,N为完全处于液面以下的感应电容片的数量。
所述方法进一步包括以下步骤:设置参考电容感应片,所述参考电容感应片与所述检测IC电路单独联接,可在掉电重启后计算得到当前液面的高度。
所述方法进一步包括以下步骤:通过所述矢量传感器的检测,所述MCU可检测出所述容器是否有倒出或倒入液体的动作;在没有所述倒出或倒入液体的动作的情况下,所述MCU关闭电源开关从而停止向所述检测IC电路供电;当所述MCU检测到所述容器有所述倒出或倒入液体的动作时,所述MCU打开所述电源开关从而向所述检测IC电路供电。
具体实施方式
如图2所示,测量非金属容器中液体容量的装置包括电容感应片、检测IC电路、MCU、矢量传感器、电源开关和电源。电源开关通过IO接口与MCU相联接。
制作与容器的形状和尺寸相对应的软性PCB(即印刷电路板),所述软性PCB包括至少两块(如三块、四块、五块或更多块)具有一定面积的铜箔,每块铜箔均构成一个电容感应片,用符号T1、T2、......、Tn表示。可根据测量所需的精度来布置容器外壁上的电容感应片,例如被测量的容器高度为150mm时,软性PCB上的电容感应片可以自上而下均匀布置15个,每一个电容感应片可以直接定位到10mm的精度。
每块铜箔均具有突出部分和凹下部分。相邻两块铜箔之间具有间隙,并且,其中一块铜箔的突出部分伸入另一块铜箔的凹下部分。由此,所有相邻铜箔均相互交错,当从软性PCB的一侧沿垂直于软性PCB纵向轴线的方向观察时,相邻的铜箔彼此重叠。由此,如图3a所示,同时有两个电容感应片A、B感应液面的高度,进而提高测量精度。如果容器倾斜角度较大,则有三个或更多电容感应片同时感应液面的高度。相邻两块铜箔之间的间隙为生产工艺间隙,一般为0.1mm或更小。如图1所示,铜箔的形状为锯齿形,但铜箔的形状不限于锯齿形,只要具有突出部分和凹下部分并且能够在形状上相互交错,从而实现同时有至少两个电容感应片感应液面的高度,进而提高测量精度,都符合本发明的发明精神,如图3c所示的形状。根据本发明的发明精神,本领域的技术人员可对铜箔的形状进行简单设定。
软性PCB四周和背面铺设铜网格接地,以屏蔽外界干扰,如人手接触干扰和静电干扰。使用3M胶将软性PCB自上而下贴装在容器的外壁。
在容器的外壁上设置矢量传感器,用以检测容器倾斜的方向和角度。所述矢量传感器通过通讯接口与MCU相联接,并将数据传送给MCU。所述通讯接口是IIC、SPI、UART或其它通讯接口。初始状态时,容器水平放置,矢量传感器进行X、Y、Z三方向坐标的校准。如图5所示,当容器倾斜时,所述矢量传感器根据倾斜后X`、Y`、Z`三方向的数据,计算出容器在三方向的倾斜角度,并通过通讯接口将倾斜角度数据传送给MCU。
检测IC电路与每一个电容感应片分别一一联接。当容器中液面高度变化时,对应的若干电容感应片的电容值发生变化,包括与液面齐平的电容感应片以及完全处于液面以下的感应电容片。检测IC电路通过通讯接口与MCU相联接,并将检测得到的数据传送给MCU。所述通讯接口是IIC、SPI、UART或其它通讯接口。如图3a-3c所示,检测IC电路分别检测与容器中液面高度相对应的电容感应片A的电容值C1、电容感应片B的电容值C2以及电容感应片A、B在所有电容感应片中所处的位置(由此可得到完全处于液面以下的感应电容片的数量N),并将电容值C1、电容值C2和完全处于液面以下的感应电容片的数量N通过通讯接口传送给MCU。MCU根据以下算法即可得到M值(计算方法见以下内容)。同时可以测得完全处于液面以下的感应电容片的数量N,MCU根据由液面高度的计算公式h=P*N+M(其中,P为测量的精度,以上实施例中的测量的精度P为10mm,如前所述,测量的精度P取决于容器高度和电容感应片的多少;N为完全处于液面以下的感应电容片的数量)可得到液面高度h。
M值的计算方法
如图4所示,相邻电容感应片A、B,令电容感应片A、B位于如图4中所示的坐标,电容感应片宽度2d,单个高度e,锯齿高度g,生产工艺间隙f,电容感应片展开后与水平面之间的夹角α,电容感应片展开后与水平面界线的长度为L,液面与Y轴交点的坐标为(0,M),则液面的表达式为:Y=tan(α)*X+M,
液面与内壁切线为一椭圆,则椭圆的短半轴长为D,长半轴长为R=D/cos(Δa),焦距2c由得c=D*tan(Δa)
电容感应片在平面圆的夹角为σ,则椭圆上投影对应的夹角也为σ
σ=(2d/2Dπ)*360
α的计算方法
根据椭圆周长计算积分公式
根据数学计算得:
Cos(α)=D/L
式中,σ=(2d/2Dπ)*360;Δa和θ为矢量传感器检测所得到的数据(Δa为Z轴与Z`轴的夹角,θ为X轴与X`轴的夹角)。
所以α可计算得出。
电容感应片B下侧锯齿形状表达式为Y=f(X),电容感应片B上侧锯齿形状表达式为Y=f(X)+e,电容感应片A下侧锯齿形状表达式为Y=f(X)+e+f,电容感应片A上侧锯齿形状表达式为Y=f(X)+2e+f,
电容感应片A位于液面下的面积为S1,电容感应片B位于液面下的面积为S2,
S1为Y=f(X)+e+f,Y=f(X)+2e+f,Y=tan(α)*X+M,X=d四条线围成的封闭平面,
S2为Y=f(X)Y=f(X)+e,Y=tan(α)*X+M,X=d四条线围成的封闭平面,
根据四线法可求得S1=Ψ(α,M,e,f),
根据电容计算公式,
C=εS/4πkd
得
C1,C2是由检测IC电路所检测得到的电容感应片A的电容值C1、电容感应片B的电容值C2。α与θ、Δa相关,可由上面提到的α的计算方法得出,e,f为设计已知的固定数值。所以可求得M值。
如图6所示,MCU根据接收到的倾斜角度数值以及根据计算得到的液面高度h,计算出C点的平面函数Z=pX+q,p、q为常数。设容器底平面函数Z=0,针对各种不规则的容器,对容器内壁函数进行数学建模f(x,y,z),根据高等数学多重积分算法计算出容器内液体的容量。需要说明的是,当容器不倾斜时,各倾斜角度为零,因此可以将其视为倾斜的一种特殊情形,可用相同算法得出容器内液体的容量。
当容器倾斜时,对于容器内液体容量的计算,举例说明如下:
为使计算简化,对倾斜后的容器进行坐标变换,如图7所示。此时,C点的高度h即为MCU根据接收到的检测IC电路所发送的数据(电容值C1、电容值C2和完全处于液面以下的感应电容片的数量N)、矢量传感器所发送的数据(倾斜角度Δa和θ,Δa为Z轴与Z`轴的夹角,θ为X轴与X`轴的夹角)所计算得到的液面高度h。
对于C点的坐标(X,Y,Z),其中,X=f(z)*cosθ,Y=f(z)*sinθ,Z=h。本例以半径为D的圆柱体为例,因此f(z)=D,则液面的数学表达式为Z=mX+n=X*tanΔa+h-D*cosθ*tanΔa,液面通过C点,令m=tanΔa,n=h-D*cosθ*tanΔa。
柱面表达式为f(x,y,z),可通过数学建模得出。本例以圆柱体为例,因此D2=X2+Y2,圆柱底平面函数表达式Z=0。圆柱体体积V用高等数学三重积分计算:V=∫∫∫Ωf(x,y,z)dxdydz式中,Ω为积分区域即容器内液体表面区域,f(x,y,z)为液体密度的表达式,如果容器内的液体是水,则f(x,y,z)=1。
对于圆柱体,Ω由D2=X2+Y2、Z=0、Z=X*m+n围成的区域
其中,m=tanΔa,n=h-D*cosθ*tanΔa,r是公式中的代数,dr是对r的积分。
在容器外壁上,选择不受液面高度变化影响(即与液面高度变化无关,或者说液面高度无法达到)的位置,设置参考电容感应片Ta。如图2所示,参考电容感应片Ta与检测IC电路单独联接。每次掉电并重新上电后,检测IC电路首先检测参考电容感应片Ta的电容值,再分别检测电容感应片T1-Tn的电容值,然后将电容感应片T1-Tn的电容值逐一与参考电容感应片Ta的电容值进行比较,得出与液面齐平的电容感应片以及完全处于液面以下的感应电容片的电容变化量,从而根据上述的液位高度精确测量方法,由MCU计算出液体容量。
通过软件计算和矢量传感器的检测,MCU可检测出容器是否有倒出或倒入液体的动作。在没有上述动作的情况下,MCU通过IO通讯接口关闭电源开关从而停止向检测IC电路供电,使检测IC电路不工作,从而减少电量的消耗。当MCU检测到容器有倒出或倒入液体的动作时,MCU通过IO通讯接口打开电源开关从而向检测IC电路供电,根据检测IC电路以及矢量传感器传送的数据,MCU计算出液体容量。因为一般家用容器倒出或倒入液体的次数很少,所以检测IC电路工作的时间远少于不工作的时间(根据估算,检测IC电路工作的时间与不工作的时间的比例约为1∶50),通过停止向检测IC电路供电,达到了节电目的。当使用电池供电时,可延长电池工作时间。