• 正文
    • 1 預備知識
    • 2 simulink 仿真
    • 3 simulink 運行結果
    • 4 matlab 實現
    • 5 matlab 運行結果
    • 6 C 語言實現
    • 7 C 語言運行結果
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

快速掃盲 | 一階RC低通數字濾波器算法實現

2020/07/06
307
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
  • 1 預備知識
  • 2 simulink 仿真
  • 3 simulink 運行結果
  • 4 matlab 實現
  • 5 matlab 運行結果
  • 6 C 語言實現
  • 7 C 語言運行結果

1 預備知識

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

2 simulink 仿真

這里直接根據公式③構建一搞Subsystem;

Subsystem

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

其中Sine Wave1頻率設置為2*pi

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

3 simulink 運行結果

最終的仿真的運行結果如下圖所示;Gain Value0.005

Gain Value0.0318

4 matlab 實現

根據公式

實現數字一階 RC 低通濾波器,具體 matlab 程序如下;

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

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

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

%?高頻低頻疊加的信號
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 運行結果

運行結果如下所示;

6 C 語言實現

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為采樣時間;FilterTfRC時間常數

具體參考下圖;

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 語言運行結果

實際測試結果;

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
1843266 1 Phoenix Contact Barrier Strip Terminal Block, 8A, 1 Row(s), 1 Deck(s), ROHS COMPLIANT

ECAD模型

下載ECAD模型
$3.6 查看
CBC3225T220MR 1 TAIYO YUDEN General Purpose Inductor, 22uH, 20%, 1 Element, Ferrite-Core, SMD, 1210, CHIP, 1210, ROHS COMPLIANT

ECAD模型

下載ECAD模型
$0.07 查看
DF13-2630SCFA(04) 1 Hirose Electric Co Ltd Connector Accessory, Contact, Phosphor Copper
$0.24 查看

相關推薦

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

CSDN博客專家,公眾號小麥大叔主筆,資深嵌入式系統工程師,曾從事移動終端,智能硬件以及物聯網等消費電子產品的軟硬件研發(fā),分享,總結,提高,相互交流,共同進步。