• 正文
    • 1 預(yù)備知識(shí)
    • 2 simulink 仿真
    • 3 simulink 運(yùn)行結(jié)果
    • 4 matlab 實(shí)現(xiàn)
    • 5 matlab 運(yùn)行結(jié)果
    • 6 C 語言實(shí)現(xiàn)
    • 7 C 語言運(yùn)行結(jié)果
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

快速掃盲 | 一階RC低通數(shù)字濾波器算法實(shí)現(xiàn)

2020/07/06
306
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
  • 1 預(yù)備知識(shí)
  • 2 simulink 仿真
  • 3 simulink 運(yùn)行結(jié)果
  • 4 matlab 實(shí)現(xiàn)
  • 5 matlab 運(yùn)行結(jié)果
  • 6 C 語言實(shí)現(xiàn)
  • 7 C 語言運(yùn)行結(jié)果

1 預(yù)備知識(shí)

低通濾波器LPF)可以濾除頻率高于截止頻率的信號(hào),類似的還有高通濾波器帶通濾波器,帶阻濾波器。一階 RC 低通濾波器的電路如下圖所示;

2 simulink 仿真

這里直接根據(jù)公式③構(gòu)建一搞Subsystem;

Subsystem

整體的仿真圖如下:其中Sine Wave頻率設(shè)置為2*pi*50

其中Sine Wave1頻率設(shè)置為2*pi

所以這里需要使得2*pi*50的信號(hào)衰減,所以根據(jù),截止頻率的計(jì)算公式,可以改變增益的值,具體如下所示;

3 simulink 運(yùn)行結(jié)果

最終的仿真的運(yùn)行結(jié)果如下圖所示;Gain Value0.005

Gain Value0.0318

4 matlab 實(shí)現(xiàn)

根據(jù)公式

實(shí)現(xiàn)數(shù)字一階 RC 低通濾波器,具體 matlab 程序如下;

Serial?=?0:0.1:100;
Fs?=?1;
Phase?=?0;
Amp?=?1;

%?高頻信號(hào)
N0?=?2*pi*Fs*Serial?-?Phase;
X0?=?Amp*sin(N);
subplot(4,1,1);
plot(X0);

%?低頻信號(hào)
Fs?=?0.02;
N1?=?2*pi*Fs*Serial?-?Phase;
X1?=?Amp*sin(N1);
subplot(4,1,2);
plot(X1);

%?高頻低頻疊加的信號(hào)
X2=X0+X1;
subplot(4,1,3);
plot(X2);

%Xi-Yi=RC*(Yi?-?Yi-1)/DetalT
len?=?length(X2);
X3=X2;
p=0.05;

%?一階 RC 濾波得到 X3
for?i=2:len
????X3(i)?=?p*X2(i)+(1-p)*X3(i-1);
end

subplot(4,1,4);
plot(X3);

5 matlab 運(yùn)行結(jié)果

運(yùn)行結(jié)果如下所示;

6 C 語言實(shí)現(xiàn)

low_filter.h

typedef?struct
{
?????int16_t??Input;
?????int16_t??Output[2];
?????int32_t??FilterTf;??
?????int32_t??FilterTs;
?????int32_t??Kr;
?????int32_t??Ky;
?
}?low_filter;


void?low_filter_init(low_filter?*v);
int16_t?low_filter_calc(low_filter?*v);

其中;

  • FilterTs為采樣時(shí)間;FilterTfRC時(shí)間常數(shù)

具體參考下圖;

low_filter.c

void?low_filter_init(low_filter?*v){
?
?????v->Kr?=?v->FilterTs*1024/(v->FilterTs?+?v->FilterTf);
?????v->Ky?=?v->FilterTf*1024/(v->FilterTs?+?v->FilterTf);
}

int16_t?low_filter_calc(low_filter?*v){

????int32_t?tmp?=?0;

????tmp?=?((int32_t)v->Kr*v->Input?+?v->Ky*v->Output[1])/1024;
?
????if(tmp>32767){
??????tmp?=?32767;
????}
?
???if(?tmp?<?-32768){
????tmp?=?-32768;
???}
?
????v->Output[0]?=?(int16_t)tmp;
????v->Output[1]?=?v->Output[0];
???return?v->Output[0];
}

7 C 語言運(yùn)行結(jié)果

實(shí)際測試結(jié)果;

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
66107-4 1 TE Connectivity III+ PIN,26-24,30AU/FL,LP

ECAD模型

下載ECAD模型
$0.9 查看
CRH-20470 1 Okaya Electric America Inc RC Network, Isolated, 6W, 47ohm, 0.22uF, Chassis Mount, 2 Pins,
$13.28 查看
19099-0014 1 Molex Fork Terminal, 0.8mm2,

ECAD模型

下載ECAD模型
$0.22 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

CSDN博客專家,公眾號(hào)小麥大叔主筆,資深嵌入式系統(tǒng)工程師,曾從事移動(dòng)終端,智能硬件以及物聯(lián)網(wǎng)等消費(fèi)電子產(chǎn)品的軟硬件研發(fā),分享,總結(jié),提高,相互交流,共同進(jìn)步。