设计一个RC二RC一阶低通滤波器器,要求将100HZ以上的信号滤掉,衰减率至少为20db

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

本文整理自网络、《匠人手记》等书籍文章

  • 模拟电路低通滤波时域、频域


直流、交流、脉冲信号都可鉯用它


Ui的单位是伏特RC的单位为秒,τ=RC;


假设电容初始电压值为0


图2 一阶RC系统的阶跃响应曲线

以电容电压作为输出电路的网络函數为:





幅频特性图的对数表示:

-当ω<ωc时,幅值是平行于坐标的直线基本无衰减; 

-当ω>>ωc时,是斜率与-20dB/十倍频成比例的一条直线; 

-當ω=ωc时增益衰减至0.707,即-3dB相位滞后45度,对应低通滤波器该频率通常被称为截止频率。

采用这种模拟滤波器抑制低频干扰时要求滤波器有较大的时间常数和高精度的RC网络,增大时间常数要求增大R值其漏电流也随之增大,从而降低了滤波效果;

-采用数字滤波算法来实现动态的RC滤波则能很好的克服模拟滤波器的缺点;
-在模拟常数要求较大的场合这种算法显得更为实用;
-其对于周期干扰有良好的抑制作用,

-不足之处是带来了相位滞后导致灵敏度低
-同时它不能滤除频率高于采样频率的二分之一(称為奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)对于高于奈奎斯特频率的干扰信号应该采用模拟滤波器。
-對没有乘、除法运算指令的单片机来说程序运算工作量较大

频率分析中一阶RC低通滤波在S域的传递函数:

通过z变换(方法很哆,如一阶前向差分、双线性变换等这里用一阶后向差分法)


推导转化为差分方程后可得:


通过Z变换把S域的传递函数转化成时域的差分方程分析可得到

一阶RC数字滤波的基本算法

X为输入,Y为滤波后得输出值则:

a为与RC值有关的一个参数,称为滤波系數其值决定新采样值在本次滤波结果中所占的权重,其值通常远小于1当采样间隔t足够小的时候,

-滤波系数越小滤波结果越平稳,但是灵敏度越低;
-滤波系数越大灵敏度越高,但是滤波结果越不稳定

-本次输出值主要取决于上次滤波输出值当前采样值对本次输出贡献比较小,起到修正作用;

按照一阶滤波的基本原理与公式写程序如下:

 /*程序中整数运算比小数运算快,为加快程序的处理速度为计算方便,a取一整数1-a用256-a来代替,a则取0~255,代表新采样值在滤波结果中的权重(也可将1-a的基数改为100-a计算结果做相应处理,这里不做说明)*/
 

 
减少乘、除的运算佽数以提高运算速度
具体优化办法:
先将新采样值与上次滤波结果进行比较,然后根据比较采用不同的公式计算这样程序的运算效率提高了一倍;
化解基本公式可得:





k 滤波系数(0~255)(代表在滤波结果中的权重)
滤波分析:
当滤波系数为30的时候:
当滤波系数为128的时候:
当滤波系数为200嘚时候:
可见滤波系数越小,滤波结果越平稳但是灵敏度越低;滤波系数越大,灵敏度越高但滤波结果也越不稳定;

 
-灵敏度和平穩度间的矛盾
-小数舍弃带来的误差
比如:本次采样值=25,上次滤波结果=24滤波系数=10;
根据算法得本次结果=24.0390625
在单片机中,很少采用浮点数小數部分要么舍弃,要么进行四色五入这样结果就变成24;假如采样值一直为25那么,结果永远是24;滤波结果和实际数据一直存在无法消除的誤差
严重时会导致,在数据采样数据稳定在某一数值上时滤波结果曲线偏离实际值(即滤波结果在稳定时与实际结果存在较大误差);

 
改变滤波系数,增大会导致平稳度降低滤波系数太大滤波也就丧失意义;
将小数位参与计算,会给CPU带来沉重运算压力;

优化方法 —– 动态调整滤波系数

 
 
1、实现功能:
-当数据快速变化时滤波结果能及时跟进,并且数据的变化越快灵敏度应该越高(灵敏度优先原则)
-当数据趋于稳定,并在一个范围内振荡时滤波结果能趋于平稳(平稳度优先原则)
-当数据稳定后,滤波结果能逼近并最终等于采样数据(消除因计算中小数带来的误差)
2、调整前判断:
-数据变化方向是否为同一个方向(如当连续两次的采樣值都比其上次滤波结果大时视为变化方向一致,否则视为不一致)
-数据变化是否较快(主要是判断采样值和上一次滤波结果之间的差徝)
3、调整原则:
-当两次数据变化不一致时说明有抖动,将滤波系数清零忽略本次新采样值
-当数据持续向一个方向变化时,逐渐提高濾波系数提供本次采样值得权;
-当数据变化较快(差值>消抖计数加速反应阈值)时,要加速提高滤波系数

调整濾波系数的程序流程:

 
 

几个常量参数及其取值范围:
(不同的取值会影响滤波的灵敏度和稳定度)
1、消抖计数加速反应阈值取值根据数据凊况确定
2、消抖计数最大值,一般取值10;
3、滤波系数增量一般取值范围为10~30
4、滤波系数最大值,一般取值255;

在调用一阶滤波程序前先调用调整滤波系数程序,对系数进行即时调整

 
 

 
1、当采样数据偶嘫受到干扰滤波结果中的干扰完全被滤除
2、当数据在一个范围内振荡时,滤波结果曲线非常平滑几乎是一根直线
3、当采样数据发生真實的变化时,滤波结果也能比较及时地跟进
4、当采样数据趋于稳定时滤波结果逐渐逼近并最终等于采样数据
-最终改进算法,兼顾了灵敏喥和平稳度的要求;同时又不太消耗系统的RAM;
-只要合理调整几个常量以使得算法更合适实际应用;

 
下面是一个使用了动态调整滤波嘚例子:
//用MPU6050测得数据;对x轴滤波处理
/*****带系数修改的一阶滤波函数
 OLD_DATA 上次滤波获得的角度结果
 k 滤波系数(代表在滤波结果中的权重)
 flag 上次数据变化方向
出口: result 本次滤波角度结果
 //角度变化方向,new_flag=1表示角度增加=0表示角度正在减小
 if(new_flag_x==flag) //此次变化与前一次变化方向是否一致,相等表示角度变化方向一致
 //当变化角度大于Threshold_1度的时候进行计数器num快速增加,以达到快速增大K值提高跟随性
 



 

 
修改程序中的阈值1和阈值2,可获得不同的滤波效果
 

————————————

 
再次声明:本文整理自网络、《匠人手记》等书籍文章僅作为个人学习笔记
}

精品:rc一阶电路响应测试 rc正弦振蕩电路 正弦稳态响应 rc二阶滤波 一阶rc电路 一阶rc电路的研究 一阶无源rc滤波电路 一阶rc 已知rc一阶电路 rc二RC一阶低通滤波器

}

本文整理自网络、《匠人手记》等书籍文章

  • 模拟电路低通滤波时域、频域

直流、交流、脉冲信号都可以用它

基尔霍夫电压定律得: 


图2 一阶RC系统的阶跃响应曲線

幅值和相角函数: 




-当ω<ωc时幅值是平行于坐标的直线,基本无衰减; 

-当ω>>ωc时是斜率与-20dB/十倍频成比例的一条直线; 

-当ω=ωc時,增益衰减至0.707即-3dB,相位滞后45度对应低通滤波器,该频率通常被称为截止频率

采用这种模拟滤波器抑制低频干扰时,要求滤波器有較大的时间常数和高精度的RC网络增大时间常数要求增大R值,其漏电流也随之增大从而降低了滤波效果;

-采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点; 
-在模拟常数要求较大的场合这种算法显得更为实用; 
-其对于周期干扰有良好的抑制作用 

-不足之处是带来了相位滞后,导致灵敏度低; 
-同时它不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz则它不能滤除50Hz以上的干扰信号)对于高于奈奎斯特频率的干扰信号,应该采用模拟滤波器 
-对没有塖、除法运算指令的单片机来说,程序运算工作量较大

频率分析中一阶RC低通滤波在S域的传递函数: 

通过z变换(方法很多如┅阶前向差分、双线性变换等这里用一阶后向差分法) 

带入S域传递函数中: 

推导转化为差分方程后可得: 


通过Z变换把S域的传递函数转化成時域的差分方程,分析可得到

一阶RC数字滤波的基本算法

X为输入Y为滤波后得输出值,则: 

a为与RC值有关的一个参数称为滤波系数,其值决定新采样值在本次滤波结果中所占的权重其值通常远小于1,当采样间隔t足够小的时候 

-滤波系数越小,滤波结果越平稳但是灵敏度越低;
-滤波系数越大,灵敏度越高但是滤波结果越不稳定

-本次输出值主要取决于上次滤波输出值,当前采样值对本次输出贡献比较小起到修正作用;

按照一阶滤波的基本原理与公式写程序,如下:

 /*程序中整数运算比小数运算快为加快程序的处理速度,为计算方便a取一整数,1-a用256-a来代替a则取0~255,代表新采样值在滤波结果中的权重(也可将1-a的基数改为100-a,计算结果做相应处理这里不做说明)*/
 
 

 
减少塖、除的运算次数以提高运算速度。
具体优化办法:
先将新采样值与上次滤波结果进行比较然后根据比较采用不同的公式计算,这样程序的运算效率提高了一倍;
化解基本公式可得:





k 滤波系数(0~255)(代表在滤波结果中的权重)
 
滤波分析:
当滤波系数为30的时候:
当滤波系数为128的时候:
當滤波系数为200的时候:
可见滤波系数越小滤波结果越平稳,但是灵敏度越低;滤波系数越大灵敏度越高,但滤波结果也越不稳定;

 
-灵敏度和平稳度间的矛盾
-小数舍弃带来的误差
比如:本次采样值=25上次滤波结果=24,滤波系数=10;
根据算法得本次结果=24.0390625
在单片机中很少采鼡浮点数,小数部分要么舍弃要么进行四色五入。这样结果就变成24;假如采样值一直为25那么结果永远是24;滤波结果和实际数据一直存茬无法消除的误差。
严重时会导致在数据采样数据稳定在某一数值上时,滤波结果曲线偏离实际值(即滤波结果在稳定时与实际结果存茬较大误差);

 
改变滤波系数增大会导致平稳度降低,滤波系数太大滤波也就丧失意义;
将小数位参与计算会给CPU带来沉重运算压力;

优化方法 —– 动态调整滤波系数

 
 
1、实现功能:
-当数据快速变化时,滤波结果能及时跟进并且数据的變化越快,灵敏度应该越高(灵敏度优先原则)
-当数据趋于稳定并在一个范围内振荡时,滤波结果能趋于平稳(平稳度优先原则)
-当数據稳定后滤波结果能逼近并最终等于采样数据(消除因计算中小数带来的误差)
2、调整前判断:
-数据变化方向是否为同一个方向(如当連续两次的采样值都比其上次滤波结果大时,视为变化方向一致否则视为不一致)
-数据变化是否较快(主要是判断采样值和上一次滤波結果之间的差值)
3、调整原则:
-当两次数据变化不一致时,说明有抖动将滤波系数清零,忽略本次新采样值
-当数据持续向一个方向变化時逐渐提高滤波系数,提供本次采样值得权;
-当数据变化较快(差值>消抖计数加速反应阈值)时要加速提高滤波系数

调整滤波系数的程序流程:

 
 

几个常量参数及其取值范围:
(不同的取值会影响滤波的灵敏度和稳定度)
1、消抖计数加速反应阈值,取值根据数据情况确定
2、消抖计数最大值一般取值10;
3、滤波系数增量,一般取值范围为10~30
4、滤波系数最大值一般取值255;

在调用一阶滤波程序前,先调用调整滤波系数程序对系数进行即时调整

 
 

 
1、當采样数据偶然受到干扰,滤波结果中的干扰完全被滤除
2、当数据在一个范围内振荡时滤波结果曲线非常平滑,几乎是一根直线
3、当采樣数据发生真实的变化时滤波结果也能比较及时地跟进
4、当采样数据趋于稳定时,滤波结果逐渐逼近并最终等于采样数据
-最终改进算法兼顾了灵敏度和平稳度的要求;同时又不太消耗系统的RAM;
-只要合理调整几个常量,以使得算法更合适实际应用;

 
下面是一个使用了動态调整滤波的例子:
//用MPU6050测得数据;对x轴滤波处理
/*****带系数修改的一阶滤波函数
 OLD_DATA 上次滤波获得的角度结果
 k 滤波系数(代表在滤波结果中的权重)
 flag 仩次数据变化方向
出口: result 本次滤波角度结果
 //角度变化方向new_flag=1表示角度增加,=0表示角度正在减小
 if(new_flag_x==flag) //此次变化与前一次变化方向是否一致相等表示角度变化方向一致
 //当变化角度大于Threshold_1度的时候,进行计数器num快速增加以达到快速增大K值,提高跟随性
 
 



 

 
修改程序中的阈值1和阈值2可获得不同的滤波效果
 

————————————

 
再次声明:本文整理自网络、《匠人手记》等书籍文章,仅作为个人学习笔记
}

我要回帖

更多关于 RC一阶低通滤波器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信