0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一阶低通滤波器的软硬件实现

冬至子 来源:王超的小站 作者:Chao Wang 2023-07-22 15:58 次阅读

数字电源软件中经常会用到低通滤波函数,如对AD采样数据或对上传监控数据的滤波等,那么本文首先介绍一阶低通滤波器的软硬件实现,最后给出dsPIC33C系列MCU 低通滤波器的代码实现给大家作为参考。

1. 模拟滤波器

1.jpg

import numpy as np
C = 220e-12
fc = 1000
R=1/(2np.piC*fc)
print("R =", R)

1.jpg

图片

图 2 - RC低通滤波器Bode图

获得上面Bode图的Python代码如下:

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl

s = ctrl.tf('s')

C = 220e-12
R = 750e3
fc = 1e3

Hp = 1/(1+(R*C)*s)

f = np.logspace(-1, 6, 1000)
w = 2 * np.pi * f

mag,phase,omega=ctrl.bode_plot(Hp,w,dB=True,Hz=True,deg=True,Plot=True,label='Hp')

plt.legend()
plt.show()

pole=ctrl.pole(Hp)

print("pole =", pole/(2*np.pi), "Hz")

2. 数字滤波器

1.jpg

获得上面Bode图的Python代码如下:

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl

############ continuous s transfer function. ############
s = ctrl.tf('s')

fc = 1e3    # low pass filter cut-off frequency is 1kHz

t = 1/(2*np.pi*fc)

Hp = 1/(1+t*s)

f = np.logspace(-1, 6, 1000)
w = 2 * np.pi * f

mag,phase,omega=ctrl.bode_plot(Hp,w,dB=True,Hz=True,deg=True,Plot=True, grid=True, label='Hp')

pole=ctrl.pole(Hp)

print("pole =", pole/(2*np.pi), "Hz")

############ discrete z transfer function. ############
z = ctrl.tf('z')

fs = 100e3    # sample frequency is 100kHz, fc is still 1kHz
Ts = 1/fs

Hpd = (1+z**(-1))/((Ts+2*t)/Ts - (2*t-Ts)/Ts*z**(-1))
print(Hpd)
Hpd.dt = Ts

mag,phase,omega=ctrl.bode_plot(Hpd,w,dB=True,Hz=True,deg=True,Plot=True, grid=True, label='Hpd')

plt.legend()
plt.show()

公式(2)进一步转化为软件可实现的差分方程见公式(3)。

1.jpg

求得上面系数的Python代码如下:

import numpy as np

fc = 1e3      # low pass filter cut-off frequency is 1kHz
fs = 100e3    # sample frequency is 100kHz
Ts = 1/fs

t = 1/(2*np.pi*fc)

Kxn = Ts/(Ts+2*t)
Kyn = (2*t-Ts)/(Ts+2*t)

print("Kxn =", Kxn, "Kyn=", Kyn)

由一阶低通滤波器的离散化差分方程 - 公式(3),可进行软件编码实现该滤波函数,dsPIC33C系列MCU的低通滤波函数参考代码如下。

#include "libq.h" 

typedef struct{
 /* Parameters */
 int16_t Kxn;
 int16_t Kyn;
 int16_t xn;
 int16_t yn;
}LPF_Obj;

int16_t LPF(int16_t x, LPF_Obj *L_obj)
{
 int16_t y;

    //y = Kxn * x + Kxn * xn + Kyn * yn
    //yn = y;
    //xn = x;
 y = _Q15add(_Q15add(__builtin_mulss(L_obj- >Kxn,x) > >15, __builtin_mulss(L_obj- >Kxn,L_obj- >xn) > >15), __builtin_mulss(L_obj- >Kyn,L_obj- >yn) > >15);
 L_obj- >yn = y;
 L_obj- >xn = x;
    
 return y;
}

为了调用定点Q格式数学函数,需要包含头文件libq.h,因此linker需要包含相应的库,生成连接属性-lq或-lq-dsp。操作如下图所示。

图片

图 4 - 链接属性设置

最后若一阶低通滤波函数不能满足要求可以两个该一阶低通滤波器进行级联获得二阶滤波器的效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 低通滤波器
    +关注

    关注

    14

    文章

    471

    浏览量

    47318
  • 数字电源
    +关注

    关注

    28

    文章

    510

    浏览量

    109270
  • python
    +关注

    关注

    56

    文章

    4781

    浏览量

    84442
  • MCU芯片
    +关注

    关注

    3

    文章

    246

    浏览量

    11383
  • AD采样芯片
    +关注

    关注

    0

    文章

    3

    浏览量

    2252
收藏 人收藏

    评论

    相关推荐

    如何使用SaberEXP软件实现有源低通滤波器的设计?

    本实例使用SaberEXP软件描述了有源低通滤波器的工作原理。通过级联一阶和二滤波器来显示提高滤波器
    的头像 发表于 12-06 10:52 1167次阅读
    如何使用SaberEXP软件<b class='flag-5'>实现</b>有源<b class='flag-5'>低通滤波器</b>的设计?

    一阶低通滤波器的工作原理、电路结构、设计方法以及应用领域

    一阶低通滤波器种常见的电子滤波器,用于滤除高于定频率的信号成分。它具有简单的电路结构和容易实现
    的头像 发表于 12-07 16:41 6558次阅读

    如何实现一阶惯性滤波器和二滤波器的算法?

    MATLAB怎么进行软件滤波仿真一阶电路滤波器的软件方式实现
    发表于 04-06 08:11

    有源低通滤波器_最简单的二低通滤波器电路图

    滤波器数可分为一阶和高阶,数越高,幅频特性越陡峭,高阶滤波器通常可由一阶和二
    发表于 07-24 15:41 21.8w次阅读
    二<b class='flag-5'>阶</b>有源<b class='flag-5'>低通滤波器</b>_最简单的二<b class='flag-5'>阶</b><b class='flag-5'>低通滤波器</b>电路图

    一阶有源低通滤波电路与最经典一阶低通滤波器电路图

    滤波电路中含有有源元件,如集成运放等,则称为有源滤波器,一阶有源低通滤波电路是组成二、高阶有源低通
    发表于 07-24 20:03 17.6w次阅读
    <b class='flag-5'>一阶</b>有源低通<b class='flag-5'>滤波</b>电路与最经典<b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>电路图

    一阶低通滤波器_一阶低通滤波器公式_一阶低通滤波器原理

    滤波电路又称为滤波器,是种选频电路,能够使特定频率范围的信号通过,而使其它频率的信号大大衰减即阻止其通过。按其工作频率范围的不同,滤波电路可分为
    发表于 08-16 17:28 9.3w次阅读
    <b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>_<b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>公式_<b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>原理

    文看懂二lc低通滤波器的设计及原理

    本文首先阐述了LC滤波器的原理,其次介绍了二LC椭圆低通滤波器电路,最后介绍了二
    发表于 04-20 09:14 22w次阅读
    <b class='flag-5'>一</b>文看懂二<b class='flag-5'>阶</b>lc<b class='flag-5'>低通滤波器</b>的设计及原理

    怎么设计实现一阶数字滤波器

    一阶数字滤波计算简单,实现代价非常低。在滤除高频噪声时应用很广泛。其本质是 IIR 滤波器,为啥要单列出来介绍
    的头像 发表于 09-02 11:00 7205次阅读
    怎么设计<b class='flag-5'>实现</b><b class='flag-5'>一阶</b>数字<b class='flag-5'>滤波器</b>

    低通滤波器的设计与实现

    低通滤波器的设计是已知ow(dB3-截止频率 )、LPH0(直流增益 )、Q(在dB3-截止频率时的电压放大倍数与通带放大倍数数值之比)三个参数来设计电路,可选的电路形式为压控电压源低通滤波器和无限增益多路反馈低通滤波器。下面分
    发表于 04-22 09:23 77次下载
    <b class='flag-5'>低通滤波器</b>的设计与<b class='flag-5'>实现</b>

    一阶有源滤波器原理详解

    一阶有源滤波器原理详解
    的头像 发表于 11-14 09:52 2721次阅读

    一阶低通滤波器(LPF)学习

    导读:电压型磁链观测由于物理概念清晰、简单易用而备受关注。然而电压型磁链观测包含纯积分项,被积项的初始相位与直流偏置都会影响积分结果。所以对传统电压型磁链观测的改进措施有很多,
    的头像 发表于 01-16 09:52 7522次阅读

    一阶高通滤波器学习

    导读:本期文章主要介绍一阶高通滤波器一阶高通滤波器一阶
    的头像 发表于 01-29 16:03 6819次阅读

    一阶低通滤波器中该如何选值R和C

      问题:一阶低通滤波器中,当RC乘积确定,该如何选值R和C?
    的头像 发表于 04-08 11:26 1w次阅读
    <b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>中该如何选值R和C

    一阶低通滤波器的截止频率

    一阶低通滤波器种常见的电子滤波器,它可以有效地滤除高频信号,只保留低频信号。截止频率是指滤波器开始对信号进行衰减的频率。 在这篇文章中,
    的头像 发表于 12-01 16:24 5041次阅读

    一阶有源低通滤波器的上限截止频率受哪些因素影响

    一阶有源低通滤波器种常见的信号处理元件,广泛应用于信号调理、数据采集和通信系统。
    的头像 发表于 05-22 16:23 1400次阅读