目录
1.引言
2.时域
3.频域
4.传递函数和波特图
5.数字化的实现
一阶惯性滤波,常见的是RC电路,属于低通滤波器,加运算放大器就构成了有源低通滤波器。
可大于截止频率的信号衰减,低于截止频率的通过。主要是用来滤除噪声。
是阻抗和容抗的串联分压计算。
以上这段计算来自
RC低通滤波器截止频率公式推导_月光疾風的博客-CSDN博客_rc低通滤波电路
一般说滤波器到达稳态,需要3~5倍的时间常数,一般我们会说多少hz的滤波器,如何快速知道到达稳态的时间呢?
一个滤波器是x Hz ,反算6.28*RC = 1/x 。按照五倍的算,则是 5*RC*(6.28/5)=1/x
得出 5*RC = 5/(6.28* x) 5/6.285 = 0.8
比如1khz的滤波器,1/1khz = 1ms . 乘以0.8 就是0.8ms。
如果口头交流我们不用乘以0.8 。之间是频率的倒数 级别就是到达稳态时间。
传递函数为
其中T是滤波时间常数为电路中R和C的乘积。s是拉普拉斯的算子,在复频域
上式中有一个零点和一个极点,零点是?极点是?
极点就是让传递函数极大的点,叫极点。极点的相频特性是-45度,意味着,输出比输入滞后45度,比如之前输入和输出没有相位差,二者相位差是0度,频率到极点的时候,输出变为45度,滞后了45度。在补偿中,极点算滞后补偿。
零点就是让传递函数小到到零的点,故叫零点。零点的会让输出在原来输出的基础上,向前移动45度,同上面,频率为极点的时候,会滞后45度,此时在该频率加上一个零点,输入和输出之间的相位差就补偿回来了。补偿中,零点算超前补偿。
当s=∞ 时候,传递函数趋于0 ,故s无穷大时,存在零点,(输入频率无穷大,滤波器不衰减了)
波特图如下
波特图采用mathcad 绘制,详见
Mathcad tips_波特图绘制_csdn_dx的博客-CSDN博客_mathcad画bode图
如何通过计算绘制波特图呢?
参照波特图怎么分析_波特图分析方法-电子发烧友网
借用里面的图
采用后向差分法,将s域转换为z域,可得
其中Tsam是采样周期,将z函数逆变换成差分递推式(便于微处理器实现迭代计算),通过查下表。
逆变换是,表示前一拍的采样值。
对公式(5-1) 进行变换,用k替换z,k-1(前一拍)代替可得以下公式
令T= n*Tsam
得 y(k) = n/(n+1)*y(k-1) + 1/(n+1)*u(k)
令1/(n+1) = TempD
得 y(k) = (1-TempD)*y(k-1) + TempD*u(k)
当n=9,y(k) = 0.9*y(k-1) + 0.1*u(k) 表示时间常数为9倍的采样时间
(1)带浮点运算微处理器C语言代码实现
//k为时间常数,是采样周期的k倍。Target_Value被滤波的值。*temp_IQ_fifter是滤波后的值。
void filterLowPass(float k,float Target_Value,float *temp_IQ_fifter)
{
float TempD=0.0,temp_sum1=0.0,temp_sum2=0.0;
TempD=1.0/(k+1.0);
temp_sum1 = (1.0-TempD) * (*temp_IQ_fifter);
temp_sum2 = TempD * (float)Target_Value;
*temp_IQ_fifter = temp_sum1 + temp_sum2;
}
如调用filterLowPass(2,adc1,&temp)函数;
k=2时,时间常数为2倍的采样Tsam,滤波结果存在temp中。
(2)无浮点运算的MCU中,为了避免小数,采用右移处理。
取
无浮点处理的微处理器C语言代码实现实现方法如下:
u32 PQ_calc(u32 *x,u32 u_Q12,u8 N)
{
u_Q12=u_Q12<> N) + ( u_Q12 >> N);
return (*x)>>N;
}
调用方法:
PQ_calc(&Pq_temp,ADC_Value[0],12);
为避免右移将数值变为0,故先定标,先 u_Q12=u_Q12< 参考链接: 相关术语: (A)Z变换(英文:z-transformation)可将时域信号(即:离散时间序列)变换为在复频域的表达式。它在离散时间信号处理中的地位,如同拉普拉斯变换在连续时间信号处理中的地位。离散时间信号的Z变换是分析线性时不变离散时间系统问题的重要工具,在数字信号处理、计算机控制系统等领域有着广泛的应用。 (百度百科)