检测基本零交叉点

信息处理 matlab 低通滤波器 带通
2022-02-22 09:35:58

我正在寻找更有经验的成员关于确定 50 或 60 Hz 信号的基本零交叉点的算法的想法。然后将基本零交叉点用作计算原始(电压)信号和其他(电流)信号的 RMS 值的起点。

通常,电压的频率含量低于 5% THD。目前我不能给你一个关于 SINAD 的确切数字,但典型的电压信号几乎总是处于 75% 满量程 (~250mV) 或接近 delta sigma ADC (SINAD 110db) 通道,与采样率设置为 6.4kHz。目标是带有浮点硬件的嵌入式 DSP ARM M7 ~200Mhz。

理想情况下,我希望有 3-4 种算法在 Matlab 中进行原型设计并找到最合适的。FIR vs. IIR vs. 带通 vs. 零相位?更聪明的方法?想了解与对噪声、谐波、群延迟、边缘效应等敏感度相关的问题...

关于电能质量的 IEC 61000-4-30:2015 标准规定:“rms 电压,刷新 1 个周期内测量的 rms 电压的每个半周期值,从基本过零开始,并在每个半周期刷新。

rms 电流,刷新 1 个周期内测量的 rms 电流的每个半周期值,从相关电压通道上的基本过零开始,并在每个半周期刷新。”

谢谢亚历克斯

1个回答

我不确定我是否拥有最好的算法,但没有其他建议,我可以为您提供这个想法:

使用计时到已知且准确的时间参考的 NCO(数控振荡器)来创建 50 Hz 或 60 Hz 参考信号,并使用锁相环 (PLL) 将 NCO 锁定到电源线信号。NCO 将锁定正交相位的电源线信号,并具有最佳的噪声抑制(基于环路设计和所需的时间平均与动态要求)。通过读取相位累加器字,可以确定电力线信号和时间基准之间的瞬时相位偏移。

这个想法是这样发展的:

如果您有一个已知的时间参考并且可以生成参考 50 Hz 或 60 Hz 正弦信号,那么您可以使用相位检测器(通过将两个信号相乘和低通滤波)来确定两者之间的相位差,并从确定的相位可以确定相对于已知时间基准的过零。将涉及校准以抵消低通滤波的时间延迟。这种方法相对于单样本决策度量(阈值过零检测器)的优势在于其基于所用低通滤波器的频率截止(平均时间)的相对较高的抗噪性。相位检测器是基于两个相同频率的正弦曲线乘积之间的数学关系;结果是与两个信号相位的余弦成正比的输出幅度。这提供了在 0° 到 180° 范围内的相位到幅度的明确映射。最重要的是对所有采样的结果进行平均(通过低通滤波器),因此受益于显着的噪声平均 - 波形中的每个样本都被使用并有助于估计波形的相位位置!

这还没有完成,因为这种方法的主要缺点是如果两个信号接近 0° 和 180° 相位,则相位检测器输出的斜率接近 0;这意味着结果对相移不是很敏感(准确)。理想的工作点是两个信号正交时,因为输出对相位变化具有最高的斜率(灵敏度)。这导致使用参考信号的改进方法,您可以在其中精确控制相位,并通过监控相位检测器的输出何时为零来将相位调整为信号之间的正交关系——这基本上是多少个锁相环设计用于操作,您可以使用这种锁相环 (PLL) 方法自动进行此调整;只要您准确了解控件与参考波形及其相位之间的关系即可。此外,这使您可以通过 PLL 设计的环路带宽对平均时间进行精心设计的控制。数控振荡器就是这样一种设备,您可以根据其相位累加器在任何给定时间精确了解其相位。

有关 NCO 实现的更多详细信息,请参阅此链接:Numerically Controlled Oscillator (NCO) for phasor implementation?