一、什么是真有效值
对于用电设备、其用电量是最为关注的电气参数,因为它与电费直接相关。
我们测量电信号的电流、电压大小时,需要能快速从测试结果中计算得到消耗的电量。
根据焦耳定律,阻值为R的电器在一个周期T内所消耗的电压,也即一个周期的平均功率:
01e3efc0550f41bc822221da361161d7.jpg
如果直流测量出电压的均方根值U,以及电流的均方根值I,
所谓均方根值即将瞬间数值平方之后、计算一个周期的平均,再开方,
也被称为真有效值,表示有效产生电量的数值,从而:
b0fb0810ab834bafa91afe3c3aa528df.jpg
a16b9ddcd11340d595b909947e848694.jpg
得到真有效值U和I,我们只需要通过简单的乘法运算得到功率:
075490fd600e4159b4342aae0f163366.jpg
因此,在我看来,真有效值是为了便于计算电量而定义的数值。
二、怎么测量真有效值
为什么是真有效值,而不是有效值,难道还有假的有效值?
还真是如此。
从真有效值的定义,为了计算出交流电流、电压的真有效值,
我们需要在一个周期内,等间隔采样,
计算采样得到的数值u(i)平方值,再进行累加,
累加到N个数据之后,再除以总采样次数,得到结果做开方运算,
再进行标定,公式如下:
810469347c344b35af24498757310dbe.jpg
其中,k、b是标定系数;
因为,真有效值需要对信号在一个周期内进行等间隔采样,
为了保证精度,需要在20ms周期内采样128个数值。
即每隔156.26us做一次A/D采样,再做平方和加法运算。
计算周期结束之后,还需要计算除法和开方。
在8位单片机的时代,需要非常昂贵的处理器才能做这样复杂的运算。
因而,真有效值的计算只是一些高端仪表才有的功能。
更多的是将信号做绝对值处理并滤成直流之后,计算平均值,
由平均值换算得到假的有效值。
2a80993aed724c69b75004949ed3ab90?from=pc.jpg
不含高次谐波的交流市电及其取绝对值之后的波形

52e8079be96d460792b9a3525accf69e?from=pc.jpg
十四年前,在一款马达保护器上使用的精密绝对值电路,用于测平均电流

对于峰值为A的正弦信号u(t),可以表示为:
9893a237f6044b17a4050c30b15c6a4d.jpg
其真有效值为:
bc6f28a1a42249948c111429330f5a3c.jpg
由二倍角公式,得到:
4e7699e45d5648b1bfc236eb94726136.jpg
而取绝对值之后,得到的平均值为:
70455993be89494c87a869ade17a4b7f.jpg
进一步计算,得到:
fb0bdcb233254b54a3c5297ce7c30c0a.jpg
所以,对于标准正弦信号,真有效值和平均值满足以下关系:
732e120c04044838b2307b27ffe6de4d.jpg
计算得到电流、电压的平均值之后,再乘以1.11即可以得到有效值。
1.11又被称为波形系数。
对于真有效值为220V的交流市电,其峰值为311V,平均值为198V;
当含有高次谐波成份成,通过平均值换算出有效值不再准确。
三、C语言算法推导
当处理器在一个周期内对交流信号进行等间隔采样,比如以156.25us的时间间隔进行采样。
每一次采样得到的数据表示为Ui,一个周期内采样N个点;
因为处理器不能输入负信号,因为我们需要采用下图的电路在交流信号上叠加直流信号,
97e35906522f49c1b808503b60e07405?from=pc.jpg
采用真有效值算法的信号处理电路

这样,采样得到的信号既有直流分量,也有交流分量,
表示为Ui=U1i+U2i,其中U1i为直流分量,U2i为交流分量;
直流分量在一个周期内的平均值即为瞬间值,交流分量在一个周期内的平均值为0,表示为:
f8a6dc08ea6d45f28fde786bb965be83.jpg
交流信号的真有效值表示为:
bfc90426367c4058ba7a94e13bafbabf.jpg
d54be9e7741d4d039fa9a3913ce7b160.jpg
ad71f70a68404a7188ca3e946d576924.jpg
ae2ac5635a47424d911b7296fd4f5790.jpg
最终得到:
d32581d4797a4a31b0337f94e8e7fa73.jpg
可见,对每一次采样的数据,我们只需要计算其和以及平方和即可,
代码如下:
a80b6799712d4669b1528f7d785428cc?from=pc.jpg
真有效值计算算法

四、处理器资源情况
采用定时器作为A/D采样的触发源,每隔156.25us触发A/D启动采样。
采用处理器的regular group的采样功能,将三相电流和电压作为一个组,让A/D模块被触发之后,自动完成一组输入的采样。
采用DMA自动将采样得到的结果搬移到缓存。
程序在主循环中判断缓存是否有数据,有数据由调用真有效值处理函数进行处理。
调用math库的开方函数sqrt,大概耗时为几个us,忽略不计。

来源:物联网全栈开发