信号处理对于许多应用而言很重要。 借助现代计算机的强大功能,许多信号处理功能现在都可以通过数字方式完成。 本文,我们将说明如何使用Arm Mbed -DSP库进行数字信号处理和控制。

https://embed.notionlytics.com/wt/ZXlKd1lXZGxTV1FpT2lJd1lUVXdZVFU1WldGaU1qRTBNamhqT1RRNE5HUXlZalJqWldZNE5UazBZeUlzSW5kdmNtdHpjR0ZqWlZSeVlXTnJaWEpKWkNJNklsZHNTR2hsVEZSUFdXeHpaVmRhUW1ZNU1YQmxJbjA9

低通滤波器

在Arm Mbed 网站上,有关于如何设计和实现低通FIR(有限脉冲响应)滤波器的出色教程。 我们基本上将遵循该示例,并将其扩展到高通滤波器和带通/停止滤波器。

首先,我们需要使用MATLAB软件(www.mathworks.com)创建数字滤波器。 数字滤波器设计是一个复杂的主题,因为它涉及复杂的数学运算。 MATLAB有一个信号处理工具箱,可以使数字滤波器的设计更加简单。 FIR(有限脉冲响应)滤波器和IIR(无限脉冲响应)滤波器是常用的数字滤波器。 这里使用FIR滤波器,因为它不需要反馈环路并且更稳定。

以下是MATLAB代码,该代码使用“ fir1”函数创建了低通滤波器。 采样率为48,000 Hz,奈奎斯特频率为采样频率24,000 Hz的一半,截止频率为6000 Hz。 “ fir1”功能在归一化的频率范围(0到1)中创建一个28阶数字滤波器,其中1代表奈奎斯特频率,即24,000 Hz。 因此,归一化的截止频率将为6000 / 24,000 = –¼,或0.25。

下图显示了FIR低通滤波器及其29个(+1阶)系数。 现在,我们可以在mbed程序中使用这些系数来实现低通数字滤波器。

fir_coeff =-0.0018 -0.0016 0.0000 0.0037 0.0081 0.0085 -0.0000 -0.0174-0.0341 -0.0334 0.0000 0.0676 0.1522 0.2229 0.2505 0.2229 0.1522 0.0676 0.0000 -0.0334 -0.0341 -0.0174 -0.0000 0.0085 0.0081 0.0037 0.0000 -0.0016 -0.0018

以下是使用上述FIR低通滤波器系数的mbed示例。 它首先使用1000 Hz正弦波和15,000 Hz正弦波生成混合信号(32×20点),然后使用FIR低通滤波器滤除15,000 Hz。 最后,它通过虚拟COM端口将原始信号和滤波后的信号打印到计算机上。 在下图中,滤波后的信号上移了3 V,因此我们可以分别查看两个信号。

在此程序中,您将需要mbed-DSP库

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 如我们所见,经过滤波后,仅剩下1000 Hz信号。

高通滤波器

下图显示了相应的FIR高通滤波器及其29个(+1阶)系数。 现在,我们可以在mbed程序中使用这些系数来实现低通数字滤波器。

fir_coeff =0.0018 0.0016 -0.0000 -0.0037 -0.0080 -0.0085 -0.0000 0.01730.0340 0.0332 -0.0000 -0.0674 -0.1516 -0.2221 0.7487 -0.2221-0.1516 -0.0674 -0.0000 0.0332 0.0340 0.0173 -0.0000 -0.0085-0.0080 -0.0037 -0.0000 0.0016 0.0018

修改上述C程序,并使用新值更改FIR系数,如下所示。

下图显示了使用Arduino串行绘图仪的程序输出,原始混合信号在底部,滤波后的信号在顶部。 正如我们这次看到的,经过滤波后,仅剩下15,000 Hz的信号。

带通滤波器

对于带通滤波器,修改上述MATLAB代码,在这种情况下,仅允许通过0.5×24,000(12,000 Hz)到0.7×24,000(16,800 Hz)之间的频率。 其他频率被阻止。 下图显示了相应的FIR带通滤波器及其29个(+1阶)系数。

现在,我们可以在mbed程序中使用这些系数来实现带通数字滤波器。

fir_coeff =-0.0011 -0.0030 0.0033 0.0010 0.0000 -0.0024 -0.0171 0.03320.0207 -0.0974 0.0400 0.1292 -0.1494 -0.0622 0.2069 -0.0622-0.1494 0.1292 0.0400 -0.0974 0.0207 0.0332 -0.0171 -0.00240.0000 0.0010 0.0033 -0.0030 -0.0011