求教:波形的FFT与低通滤波截至频率。。。
如下图所示,是我通过ADC采集热敏电阻分压得到的电压值值:
从图上可知,信号中存在较多的干扰,所以需要一个低通滤波器进行,,可是我该把低通滤波器的截至频率设为多少呢???
为了知道信号的频谱,我参考网上的一个Python脚本对上面的波形进行了FFT,求的的频谱分布如下所示:
但是,我不知道这种方法是不是可行,,如果可行的话,那低通滤波器的截至频率是不是应该设为10Hz左右啊???如果这种方法不可行,那要怎样确定低通滤波器的截止频率呢???
还有,最上面那个波形到底可不可以用FFT进行频谱分析啊???
滤波前分析信号的频谱是必然的
而且Matlab做FFT很简单
不过从给出的频谱看 10Hz左右信号强度比起低频信号(0Hz)附近的非常弱啊 FFT点数明显不够啊。 对楼主的这种情况,用频谱分析法已经不使用了。
假设使用简单一阶RC低通滤波器:
我们知道其对阶跃输入的响应为O(t)=1-e^(-t/τ),误差为E(t)=e^(-t/τ),式中τ=R*C,为电路的时间常数。
如果系统要求在5秒内采集到与实际值误差在5%以内的数据,那么:
e^(-5/τ)<0.05
两边同时取倒数得:
e^(5/τ)>20
两边取对数得:
5/τ>ln(20)≈3
即:
R*C=τ < 5/3≈1.667 gzhuli 发表于 2012-4-26 17:36 static/image/common/back.gif
FFT点数明显不够啊。
您具体指什么“明显不够”???我不太懂。。。
你是想要下面这样子吗???
忘了说了:我的ADC采样频率是100Hz, eduhf_123 发表于 2012-4-26 17:49 static/image/common/back.gif
对楼主的这种情况,用频谱分析法已经不使用了。
假设使用简单一阶RC低通滤波器:
谢谢指教,,,
这个我不太懂,我先研究研究。。。 按照上述方法取参数,则:
f。= 1/(2*π*R*C) ≈ 0.1Hz、
值得注意的是,此时RC滤波电路中的R取值在百KΩ量级,无法驱动ADC,需要再加一级缓冲。 eduhf_123 发表于 2012-4-26 17:59 static/image/common/back.gif
按照上述方法取参数,则:
f。= 1/(2*π*R*C) ≈ 0.1Hz、
谢谢,0.1Hz截止频率的话,那好像真的跟FFT的方法确定的频率不太一样了,,
您能具体讲解一下,为什么针对这种情况FFT已经不适用了吗???{:smile:} 直流分量太大了,去掉再出曲线看看。
初步看5Hz附近有一个小峰,截止频率多少就要看滤波器特性了。
4楼是按1阶RC低通来算的,截止点当然低了,既然你都ADC采回来了,最理想的当然是DSP处理了。 既然都 matlab 了直接用 matlab做一个数字滤波 套到程序里就好 wear778899 发表于 2012-4-26 21:47 static/image/common/back.gif
既然都 matlab 了直接用 matlab做一个数字滤波 套到程序里就好
程序中的数字滤波当然是不可或缺的,但是对输入信号在进入ADC之前进行适当的硬件滤波也是必要的吧。。。 ADC采集看:主信号不是周期函数用FFT效果不明显,干扰比主信号频率高很多
最简单的滤波算法:采集256点总和再移8位,之后总和-ADC0+ADC256
总和=总和-ADC(N)+ADC(N+256)
A(N)=(总和)>>8
计算可以达到很快速度 XIVN1987 发表于 2012-4-26 22:09 static/image/common/back.gif
程序中的数字滤波当然是不可或缺的,但是对输入信号在进入ADC之前进行适当的硬件滤波也是必要的吧。。。 ...
只要干扰信号不超出ADC量程范围,可以不需要额外的硬件滤波。
移动平均法就是最简单的FIR滤波器,而且相位特性是线性的,没有过冲,特别适合这种阶跃信号。 随便搞个滑动平均就会改善很多。
页:
[1]