从ADC采样的数据中分析出信号特征,是后续操作的前提。提取信号特征的方法有很多种,如过零点检测、相关性检测,谐波分析等,每种方法都有自己适用的场景。对于周期信号,过零点检测是这些分析方法中最简单也是效率最高的一种,尤其是在电网应用中,交变电压呈现周期性过零特征,且相邻周期之间的变化非常微小,我们仅需要一个周期的信号(约20ms),便可以分析出该时刻的电力状况。使用过零点检测技术,可以轻松获取周期的端点,并为后续各种指标的计算提供关键信息。
发电电压通常是正弦波形式的,去直流后,数据在零参考值附近来回摆动,过零点检测要做的就是找到极性反转的地方并记录下来,即上升沿/下降沿的过零点:
实际的采样数据是离散的,我们以一个上升沿为例,假设采样频率为5000Hz,则50Hz交流电一个周期的采样点数就是100个。在理想情况下,我们希望每个过零点都存在值为0的采样点,这样在后续的处理中也更方便:
但事实上出现这样的几率很小,更多情况是连续多个周期都无法采样到信号值为0的点:
在这种情况下,信号周期的边界就模糊起来,只能用拟合的方式,估算出过零点的近似位置。
我们知道,只要采样率越高,也即每个周期的采样点数越多,对信号轮廓的描述就越全面,失真越小。当采样率足够高,我们就用直线连接相邻过零点代替实际曲线。而且对于一个正弦波,过零点位置的斜率变化的确也是最小的。我们用一个简单正弦信号进行数学证明,对其求二阶导,得到导数(斜率)的变化率:
带入过零点时的相位:
得到此时斜率的变化率:
即过零点处正弦波斜率的变化率为0,可以认为在该处附近用直线拟合是代价最低的。于是用直线替代该处曲线,继续记录过零点两侧采样点的信息:
其中,d1和d2可以从ADC采样值计算出,而a+b正好是一个ADC采样周期,记为t,则过零点残留值a和b可以通过简单的比例运算得到:
上面的运算对于下降沿过零点也是同理。有了过零点边缘信息,就可以用这些数据进行周期、频率及更多的计算了。假设两个上升沿过零点之间,共有N个采样点,且第一个过零点的左侧残留值为b1,第二个过零点的右侧残留值为a2,ADC采样周期为t,则信号周期T:
则频率f: