1次フィルタ

参考文献及びWEB

参考文献

シミュレーティングで学ぶアナログ&ディジタルフィルタ入門 小野浩司著

あわせて読む

1次アナログフィルタ

フィルタ

フィルタは必要な信号を取り出す。

振幅特性とは?

フィルタに入力した信号の振幅が、何倍になって出力されるかを表現したもの。

通過域では1倍 -> 信号はそのまま通過する
阻止域では0倍 -> 信号は除去される

通過域と阻止域との境界にあたる周波数を、遮断周波数f_cと呼ぶ。

1次ローパスフィルタ

上記のようなCR回路を考える。
このCとRで構成される回路はローパスフィルタとなる。

このローパスフィルタのf_cは、

 f_c = \frac{1}{2\pi CR}

いま入力を

 V_{in} = sin(2\pi \cdot 10^3 \cdot t) + sin(2\pi \cdot 3 \cdot 10^3 \cdot t)+ sin(2\pi \cdot 10 \cdot 10^3 \cdot t)

とする。つまり

1kHzの正弦波と3kHzの正弦波と10kHzの正弦波

をあわせたものである。

そして 100kHzと5kHzと0.5kHz以上を除去するローパスフィルタを作る。

fc [kHz] 100 5 0.5
C [uF] 0.01 0.01 0.1
R [kΩ] 0.159 3.18 3.18

fc = 100kHzの場合

入力は緑、出力は赤

 f_c = \frac{1}{2\pi 0.01 \cdot 10^{-6}\cdot 0.159\cdot 10^3}
     =  100 \cdot 10^3

■結果
すべて通す

fc = 5kHzの場合

入力は緑、出力は赤

 f_c = \frac{1}{2\pi 0.01 \cdot 10^{-6}\cdot 3.18\cdot 10^3}
     =  5 \cdot 10^3

■結果

10kHz 減衰
5kHz  すこし減衰
1kHz  通過

fc = 0.5kHzの場合

入力は緑、出力は赤

 f_c = \frac{1}{2\pi 0.1 \cdot 10^{-6}\cdot 3.18\cdot 10^3}
     =  0.5 \cdot 10^3

■結果

10kHz 減衰
5kHz  減衰
1kHz  減衰

理論計算

 V_{in} = ( R + \frac{1}{j\omega C} ) I
 V_{out} = ( \frac{1}{j\omega C} ) I

 V_{out} = \frac{1}{1+ j\omega CR} V_{in}

ここで、
 H = \frac{1}{1+ j\omega CR}
とすると

 V_{out} = H V_{in}

この H を伝達関数と呼ぶ。

入力 V_{in}  H に印加したら出力 V_{out} を得るという意味となる。

■[復習]  z = \frac{ a + jb }{ c + jd } を極形式(オイラー版)を用いて表す。

 a + jb = \sqrt{a^2 + b^2} e^{j\tan^{-1 \frac{b}{a} }}
 c + jd = \sqrt{c^2 + d^2} e^{j\tan^{-1 \frac{d}{c} }}

なので

 z = \frac{ a + jb }{ c + jd }
   = \frac{ \sqrt{a^2 + b^2} e^{j\tan^{-1 \frac{b}{a} }} }{ \sqrt{c^2 + d^2} e^{j\tan^{-1 \frac{d}{c} }} }
   = \frac{ \sqrt{a^2 + b^2} }{ \sqrt{c^2 + d^2} } \cdot e^{j\tan^{-1 \frac{b}{a} }} e^{-j\tan^{-1 \frac{d}{c} }}
 = \frac{ \sqrt{a^2 + b^2} }{ \sqrt{c^2 + d^2} } \cdot e^{j (\tan^{-1 \frac{b}{a} } - \tan^{-1 \frac{d}{c} })

 H = \frac{1}{1+ j\omega CR} を極形式で表す

 H = \frac{1}{\sqrt{1+ (\omega CR)^2}}e^{-j\arctan(\omega CR)}

ここで、

 G = \frac{1}{\sqrt{1+ (\omega CR)^2}}

 \theta = -\arctan(\omega CR)

とすると


 H = G e^{j\theta}

この H は周波数領域の特性を示している。
ここで、

 G :: 振幅特性 入力信号の振幅が何倍になるかを示す。
 \theta :: 位相特性 入力信号の位相がどれだけずれるかを示す。


フィルタの入出力関係をまとめる

 V_{out} = G e^{j\theta} V_{in}

いま、 V_{in} を正弦波とすれば

 V_{in} = e^{j\omega t} (= \sin\omega t) (1)

 V_{out} = G e^{j(\omega t + \theta)}
 = G \sin{(\omega t + \theta)} (2)

(1)と(2)を比較すると

 V_{out} の振幅は、 V_{in}  G
 V_{out} の位相は、 V_{in} より \theta 進んでいる

といえる。

■1次ローパスフィルタの周波数特性は?

振幅: V_{in} \frac{1}{\sqrt{1+ (\omega CR)^2}}

位相: V_{in}より\arctan(\omega CR) 遅れる。

fc = 1kHzのときを考える

C=0.01[uF] , R=15.9[kΩ]のfc = 1kHzのローパスフィルタを考える。

1[rad]=180/pi=57.2958度

2pi[rad]で360度

■入力0.1kHz

CR = 0.01*10^-6*15.9*10^3 =1.5900e-004

 G = \frac{1}{\sqrt{1+ (2\pi f CR)^2}}

G=1/sqrt(1+(2*pi*0.1*10^3*CR)^2)=0.9950

 \theta = -\arctan(2\pi f CR)

theta= -atan(2*pi*0.1*10^3*CR) = -0.0996[rad]

■入力1kHz

CR = 0.01*10^-6*15.9*10^3 =1.5900e-004

 G = \frac{1}{\sqrt{1+ (2\pi f CR)^2}}

G=1/sqrt(1+(2*pi*1*10^3*CR)^2)=0.7075

 \theta = -\arctan(2\pi f CR)

theta= -atan(2*pi*1*10^3*CR) = -0.7849[rad]

 \pi : 180^{\circ} = 0.7849 : x
(180*0.7849)/pi = 44.9715度

■入力10kHz

CR = 0.01*10^-6*15.9*10^3 =1.5900e-004

 G = \frac{1}{\sqrt{1+ (2\pi f CR)^2}}

G=1/sqrt(1+(2*pi*10*10^3*CR)^2)= 0.0996

 \theta = -\arctan(2\pi f CR)

theta= -atan(2*pi*1*10^3*CR) = -1.4710[rad]

周波数特性のグラフ

Matlabソース

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CR low-pass filter 
% C=0.01[uF] , R=15.9[kΩ] fc = 1kHz
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
echo off
clear all
close all

C=0.01e-6
R=15.9e3;

%%%%%%%% 振幅特性 %%%%%%%%%%%%%%%%
figure(1)
data=[];
freq=[];

for n=[0.01 0.05 0.07 0.1 0.3 0.5 0.7 1 3 5 7 10 30 50 70 100]
 f=n*10^3;
 freq=[freq,f];
 G=1/sqrt(1+(2*pi*f*C*R)^2);
 data=[data,G];
end
 
semilogx(freq,data,'r-','linewidth',3);

axis([0 Inf 0 Inf]);
grid on
xlabel('Frequency[Hz]','Fontsize',18)
ylabel('Gain','Fontsize',18)

h=legend('Amplitude Characteristic',...,
3);

set(h,'FontSize',18);

h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

print -djpeg cr_fc_1khz_amp.jpg

%%%% 位相特性 %%%%%
figure(2)
data=[];
freq=[];

for n=[0.01 0.05 0.07 0.1 0.3 0.5 0.7 1 3 5 7 10 30 50 70 100]
 f=n*10^3;
 freq=[freq,f];
 theta= -atan(2*pi*f*C*R);
 data=[data,theta];
end

semilogx(freq,data,'b-','linewidth',3);

axis([0 Inf -Inf 0]);
grid on
xlabel('Frequency[Hz]','Fontsize',18)
ylabel('\theta [rad]','Fontsize',18)

h=legend('Phase Characteristic',...,
3);

set(h,'FontSize',18);

h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

print -djpeg cr_fc_1khz_phase.jpg

%%%%%%%%%% End Of Macro %%%%%%%%%%%%%%%%

グラフ結果



遮断周波数

遮断周波数とは、 G = \frac{1}{\sqrt{2}} となる周波数

別の言い方をすると

遮断周波数とは、電力比が1/2となる周波数である。

■証明

電力は、 P = V \cdot I = V^{2}/R

 \frac{P_{out}}{P_{in}} = \frac{ {| V_{out} |}^2 /R }{ {| V_{in} |}^2 /R}
= \frac{ {| Ge^{j\theta}  V_{in} |}^2 }{ {| V_{in} |}^2 }
= { | Ge^{j\theta}| }^2
= Ge^{j\theta}(Ge^{j\theta})^*
= Ge^{j\theta}(Ge^{-j\theta})
= G^2

(ここで、 V_{in}  V_{out} は複素数なのでV_{in}^2ではなく|V_{in}|^2)

 \frac{P_{out}}{P_{in}} = \frac{ 1 }{ 2 } = G^2

ゆえに

 G = \frac{ 1 }{ \sqrt{2} }

ここでCRローパスフィルタのGが1/2のときを求めると、

 G = \frac{1}{\sqrt{1+ (2\pi f CR)^2}} = \frac{ 1 }{ \sqrt{2} }

 f_{c} = \frac{1}{(2\pi CR)}

デシベル(デシは1/10を表す接頭語、ベルは、電話の発明者)

振幅特性  20 \log_{10} G [dB]

増幅率 G 20log10G
100000 100
10000 80
1000 60
100 40
10 20
1 0
1/√2=0.7 -3
0.5 -6
0.1 -20
0.01 -40
0.001 -60
0.0001 -80
0.00001 -100

■Matlab ソース

echo off
clear all
close all 

C=0.01e-6
R=15.9e3;

%%%%%%%% 振幅特性 %%%%%%%%%%%%%%%%
figure(1)
data=[];
freq=[];

for n=[0.01 0.05 0.07 0.1 0.3 0.5 0.7 1 3 5 7 10 30 50 70 100]
 f=n*10^3;
 freq=[freq,f];
 G=1/sqrt(1+(2*pi*f*C*R)^2);
 G=20*log10(G);
 data=[data,G];
end
 
semilogx(freq,data,'r-','linewidth',3);

axis([0 Inf -Inf Inf]);
grid on
xlabel('Frequency[Hz]','Fontsize',18)
ylabel('Gain[dB]','Fontsize',18)

h=legend('Amplitude Characteristic',...,
3);

set(h,'FontSize',18); 

h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

print -djpeg cr_fc_1khz_amp_db.jpg

%%%%%%%%%% End Of Macro %%%%%%%%%%%%%%%%

■グラフ


減衰傾度

[dB/dec]


[dB/dec]について説明する。

decは、decade(ディケード、10で1つの塊の意)であり、

[dB/dec]とは、周波数が10倍になれば何[dB]下がるかを示している。

20[dB/dec]とは、周波数が10倍になると20dB下がることを示している。

[dB/oct]

[dB/oct]について説明する。

octは、octave(オクターブ、音階が1オクターブ上がると周波数は2倍)から来ている。

[dB/oct]とは、周波数が2倍になれば何[dB]下がるかを示している。

6[dB/oct]とは、周波数が2倍になると6dB下がることを示している。

[dB/dec]と[dB/oct]の関係

[dB/dec]は、10倍の周波数をひとかたまりにしているため
 \log_{10}f

f ... 0.1 1 10 100 1000 ...
log10 f ... -1 0 1 2 3 ...

[dB/oct]は、2倍の周波数をひとかたまりにしているため
 \log_{2}f

f ... 0.5 1 2 4 8 ...
log2 f ... -1 0 1 2 3 ...

つまり、

 \log_{10}f = \frac{\log_{2}f}{\log_{2}10}

          ÷log2 10 
         --------->
[dB/dec] <--------- [dB/oct]
          x log2 10
          

[例] 20[dB/dec]<->6[dB/oct]

20 / log2(10) = 6 [dB/oct]

位相特性

いま、振幅特性を理想的なものとし、位相特性だけを考える。


ローパスフィルタの遮断周波数をfc=3[Hz]

入力信号g(t)を1[Hz]と2[Hz]からなる

 g(t) = \sin(2\pi t) + \sin(4\pi t)

とする。

位相特性が異なる二つのフィルタに、入力信号g(t)を通したときの
出力波形を以下に示す。


f_c = 3[Hz]であるため、(2-a),(2-b)とも信号は全て通過する。

(2-a)では、入力g(t)に比べ出力g1(t)は遅れて出力される。
位相特性が(2-a)のような直線位相特性の場合、出力は時間的に遅れる。

(2-b)では、入力g(t)に比べ出力g2(t)は波形の形も変形してしまっている。
位相特性が直線位相ではない場合、入力と出力のパターンは変化してしまう。

このように、
位相特性とは、出力信号のパターンが「変わってしまうのか」、「変わらないのか」を表している。

Matlab コード

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 位相特性のチェック  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
echo off
clear all
close all

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
subplot(3,1,1); 

data=[];
time=[];

for t=[-0.5:0.01:2]
 y=sin(2*pi*t)+sin(4*pi*t);
 time=[time,t];
 data=[data,y];
end

plot(time,data,'r-','linewidth',3);

axis([-0.5 2 -2 2]);
grid on
ylabel('g(t)','Fontsize',18)
h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% theta_1の出力
subplot(3,1,2);

data=[];
time=[];

for t=[-0.5:0.01:2]
 y=sin(2*pi*t-2/3*pi)+sin(4*pi*t-4/3*pi);
 time=[time,t];
 data=[data,y];
end

plot(time,data,'b-','linewidth',3);
axis([-0.5 2 -2 2]);
grid on
ylabel('g_{1}(t)','Fontsize',18)
h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% theta_2の出力
subplot(3,1,3);

data=[];
time=[];

for t=[-0.5:0.01:2]
 y=sin(2*pi*t-2/9*pi)+sin(4*pi*t-8/9*pi);
 time=[time,t];
 data=[data,y];
end

plot(time,data,'g-','linewidth',3);
axis([-0.5 2 -2 2]);
grid on
xlabel('Time[s]','Fontsize',18)
ylabel('g_{2}(t)','Fontsize',18)
h=gca
set(h,'LineWidth',2,...,
'FontSize',18)

print -djpeg isou_tokusei.jpg
%%%%%%%%%% End Of Macro %%%%%%%%%%%%%%%%

位相特性(a)の計算

 \theta_{1} = - \frac{2\pi}{3} f

1[Hz]:  \theta_{1} = - \frac{2\pi}{3}

2[Hz]:  \theta_{1} = - \frac{4\pi}{3}

 g_{1}(t) = \sin(2\pi t - \frac{2\pi}{3} ) + \sin(4\pi t - \frac{4\pi}{3})

 g_{1}(t) = \sin(2\pi(t - \frac{1}{3}) ) + \sin(4\pi (t - \frac{1}{3}) )

 = g(t-\frac{1}{3})

つまり、

 T_{shift} = \frac{1}{3} [s]

となり、 g_{1}(t)は、 g(t)より1/3遅れて出力される。

位相特性が直線位相

 \theta = - T_{shift} \omega
であれば、出力信号は入力信号に対してT_{shift}[s]ずれる。

位相特性(b)の計算

\theta_{2} = -\frac{2\pi}{9}f^2

1[Hz]:  \theta_{2} = - \frac{2\pi}{9}

2[Hz]:  \theta_{2} = - \frac{8\pi}{9}

 g_{1}(t) = \sin(2\pi t - \frac{2\pi}{9} ) + \sin(4\pi t - \frac{8\pi}{9})

 g_{1}(t) = \sin(2\pi(t - \frac{1}{9}) ) + \sin(4\pi (t - \frac{2}{9}) )

 \neq g(t-1/9),g(t-2/9)

この式は、g(t)とg2(t)では波形それ自身のパターンが異なることを示している。

位相特性のまとめ

直線位相を有するフィルタは、フィルタリングされる信号のパターンそのものを重要視するときに使われる。
心電図などでは、波形そのものに重要な情報があるため、フィルタリングしたときに心電図が
歪んでしまっては正しく心電図を読むことができない。
このようなときは直線位相のフィルタが使われる。