您可以使用二阶 IIR 陷波滤波器,正如我在这篇文章中描述的二阶陷波滤波器的传递函数- 那篇文章演示了一个 50 Hz IIR 陷波和 1 KHz 采样。
[更新:正如@user47050 在评论中敏锐地指出的那样,无论陷波带宽如何,IIR 陷波也将具有最小延迟,因为 IIR 陷波滤波器中的主要延迟特定于滤波器抑制带宽中的信号分量,而不是你想通过的信号。接下来的优点不一定是消除延迟问题,而是提供对大约 50Hz(但相位和幅度缓慢变化)的干扰的跟踪抑制,同时最大限度地减少对相邻感兴趣频率的影响。]
但是,要以零延迟消除干扰,请考虑反馈信号消除伺服,如下图所示。这不会对您的信号造成延迟,但会对您的干扰信号的变化产生延迟响应。结果将取决于干扰的相对稳定性。如果干扰是相对缓慢变化的正弦音调,这应该可以很好地工作。
这是一个全数字调零环路,可以调零到信号的 rms 功率电平(此时它不能再估计抵消系数)。以绿色显示的粗线表示复信号:50 Hz PLL 是具有正弦/余弦输出的 NCO,其后的乘法器是全复数乘法器(本质上是提供完全控制幅度或相位的矢量调制器),后的乘法器第二个 BPF 本质上是一个正交下变频器,用于测量残差的幅度和相位。
其工作方式可描述如下:假设输入信号具有强 50 Hz 信号,足够强以至于与第一个 50 Hz BPF 的滤波相结合,PLL 可以锁定同相到音调(音调需要比 PLL 输入处的噪声强 6 dB)。这将提供 50 Hz 信号的锁相副本作为正交 NCO 输出。正交 PLL 基本上是一个非常紧密的跟踪滤波器,为消除目的提供了一个干净的副本。
接下来,我们有一个带有后消除带通滤波器的消除环,用于检测残差并调整复数系数,以在减法之前调整 50 Hz PLL 输出的增益和相位。我展示了将 50 Hz BPF 输出正交下变频到复数基带的方法(通过与复数 PLL 输出相乘),并将结果与收敛增益系数 k 相加。这是一个使用随机梯度下降法的取消循环。累加器累加在正交下变频器的 I 和 Q 输出上测量的残余误差,从而正确设置“矢量调制器”乘法器,从而产生与干扰信号幅度相等、相位相反的真实正弦波输出在输入。
该图可以简化,因为可以消除第一个 50 Hz PLL BPF,并将 PLL 替换为恒定的 50 Hz 正弦/余弦发生器,因为矢量调制器提供了对旋转相位的完全控制,用于调整频率的正向或负向根据需要,以及提供所需取消所需的增益。使用 50 Hz BPF + PLL 的建议是,一旦消除环路收敛(因为 PLL 将跟踪输入并且可以设计成具有更宽的环路带宽),对输入信号的相位变化提供更快的校正是可行的。比归零环路)-但是,如果干扰的幅度变化占主导地位,那么我认为拥有 PLL 并没有很大的优势。
如果没有 PLL,这将简化为以下框图。这里一切都在复杂的基带上完成,因此使用低通滤波器而不是带通滤波器(我可能会将其实现为指数平均滤波器)。k 是复收敛增益,c 是确定的复校正系数,它将缩放生成的 50 Hz 消除信号的增益和相位(如前所述,c 将是随时间变化的相位,以调整小频率偏移,这将也存在)。
与二阶 IIR 陷波滤波器相比,PLL 实施具有明显的优势,因为它可以在 PLL 的跟踪范围内,在相对宽得多的带宽上跟踪和消除音调干扰。如果不进一步研究下面的实现,我不相信它会胜过二阶 IIR 陷波滤波器,但考虑到它比 PLL 方法简单得多,考虑一下它很有趣。
作为具有 2KHz 采样率的固定 50 Hz 源,音调发生器实现起来很简单,但如果您将其扩展到其他应用并为固定 50 Hz 复音发生器使用 NCO,您最终会得到一个可调谐的单音自适应消除器将在 LPF 的带宽范围内捕获和消除 NCO 的任何频率设置附近的任何单音!消除环路将使 50 Hz 干扰源降低到滤波器发出的本底噪声 - 因此,滤波器越紧密,只要信号在滤波器带宽内,零点越深。
消除量将取决于输入信号幅度和相位的时间变化率。如上所示的方法对感兴趣的主信号具有零延迟,但它是根据过去的延迟时间 T 来估计干扰的特性,其中 T 受低通滤波器和环路的带宽(延迟)的影响零点环路的带宽(由 k 设置),因此对于可以抑制多少干扰信号的噪声带宽有一个频率上限(噪声带宽在干扰信号的功率谱密度中可见,基本上是 AM和 PM 噪声边带)。这个归零环路是对该干扰的高通滤波器;这是期望的,因为感兴趣的信号与噪声无法区分。
如果这种方法被证明是有用的,您可以通过使用递归最小二乘法(RLS 自适应算法)来进一步改进它,根据正交下变频器的误差项来确定应用于矢量调制器的复数权重。这以计算复杂性为代价收敛得更快。