RCローパスフィルタのステップ応答

この記事では、ステップ入力によるRCローパスフィルタの過渡応答を計算していく。

RCローパスフィルタ回路図
RCローパスフィルタ回路図

上の回路図のように抵抗Rと静電容量Cのコンデンサでローパスフィルタを組む。そしてこの回路に\(Eu(t)\)のステップ電圧を入力した時の出力電圧の様子を調べていく。

ステップ電圧は、\(t \geqq 0\)で電圧が\(E\)ボルトとなるような信号のことである。ちょうど\(t=0\)で、電圧のスイッチをオンにしたと思ってもらえれば良い。

また、出力電圧はコンデンサの両端の電圧\(V_c\)である。

ここで電圧\(V_c\)は

$$V_c(t)=\frac{q(t)}{C} \tag{1}$$

である。

また、out端子につながる機材はハイインピーダンスであると考えて、電流はoutへほとんど流れないものとする。するとコンデンサに蓄えられる電気量の変化量が回路へ流れる電流と考えることができるので

$$\frac{dq(t)}{dt}=I(t) \tag{2}$$

である。よって、

$$q(t)=\int I(t)dt \tag{3}$$

となる。

式3を式1へ代入すると

$$V_c(t)=\frac{1}{C}\int I(t)dt \tag{4}$$

が導き出される。

さて、ラプラス変換により電流\(I(t)\)は次の通り導き出される。この詳しい説明は前回記事を参考に。

$$I(t)=\frac{E}{R}e^{-\frac{1}{CR}t} \tag{5}$$

式5を式4に代入すると

$$V_c(t)=\frac{1}{C}\int \frac{E}{R}e^{-\frac{1}{CR}t} dt \tag{6}$$

である。

指数関数の積分は次の通り(ただしDは積分定数)。
$$\int e^{kx}dx = \frac{1}{k}e^{kx}+D \tag{7}$$

式7より式6は、

$$V_c(t)=\frac{E}{CR}(\frac{1}{-\frac{1}{CR}}e^{-\frac{1}{CR}t} + D) \tag{8}$$

$$V_c(t)=-Ee^{-\frac{1}{CR}t}+\frac{E}{CR}D \tag{9}$$

となる。

\(\frac{E}{CR}D\)は定数なのでまとめてDと置き換えてしまう。すると式9は、

$$V_c(t)=-Ee^{-\frac{1}{CR}t}+D \tag{10}$$

となる。

ここでDについて考えてみよう。\(t=0\)の時、コンデンサの電圧は0Vであるから

$$V_c(0)=-Ee^{-\frac{1}{CR}0}+D=0 \tag{11}$$

である。よって、

$$D=E \tag{12}$$

である。

式12を式10へ代入すれば

$$V_c(t)=-Ee^{-\frac{1}{CR}t}+E \tag{13}$$

となり、

$$V_c(t)=E(1 - e^{-\frac{1}{CR}t}) \tag{14}$$

となる。これがRCローパスフィルタにステップ入力したときの過渡応答である。

プログラミング

せっかくなので式14をPythonでプログラミングしてプロットしてみよう。前回と同様に、Eを5V、Rを1kΩ、Cを1μFとしてシミュレーションしてみた。

前回の記事はこちら

from matplotlib import pyplot as plt
import math


if __name__ == '__main__':
    E = 5  # 5V
    R = 1 * pow(10, 3)  # 1kΩ
    C = 1 * pow(10, -6)  # 1uF
    T = R * C  # 時定数
    sample = 1000
    sec = 10 * pow(10, -3)  # mS
    times = [t * sec/sample for t in range(0, sample)]
    Vc = []

    for t in times:
        Vc.append(E*(1-pow(math.e, -1/(C*R)*t)))
    print("時定数: {}".format(T))
    plt.figure(figsize=(16, 9), dpi=100)
    plt.plot(times, Vc)
    plt.title('Step Response RC LPF')
    plt.xlabel('t[s]')
    plt.ylabel('Vc[t]')
    plt.legend()
    plt.show()

RCローパスフィルタのステップ応答
RCローパスフィルタのステップ応答

プログラムの実行結果がこちら。ステップ入力の急激な変化がなだらかになった。つまり高周波成分がフィルターされたということである。

時定数

\(t=CR\)のとき

$$V_c=E(1-e^-1)$$

より、

$$V_c=0.632E$$

である。この時のCRを時定数τと呼ぶ。

この時定数を利用して、Arduinoでコンデンサの容量を測定してみたのでよかったら参考に。

また、次の記事では伝達関数によるステップ応答を調べる方法を解説したので参考に。

おすすめの制御工学入門書

最後に、私が使っている制御工学の書籍をおすすめしておく。ラプラス変換に慣れれば、これらの制御工学の書籍も読み解くことができる。

制御工学の基礎
制御工学の基礎

演習問題,章末問題を豊富に用意し,フィードバック制御を主題として短時間でその本質を理解できるように解説した初学者向けのテキスト.

Amazon
Pythonによる制御工学入門
Pythonによる制御工学入門

本書は、Pythonを使って制御工学を行うための入門書です。機械学習やデータマイニングで多用され、さらにその枠を越えて主流のプログラミング言語となりつつあるPythonを制御系設計に導入したい人向けに、Pythonプログラムを実行しながら「使ってみる、やってみる」を通して、制御工学を体感することができる書籍です。

KindleAmazonRakuten

Amazonでお得に購入するなら、Amazonギフト券がオススメ!

\Amazonギフトがお得/

コンビニ・ATM・ネットバンキングで¥5,000以上チャージすると、プライム会員は最大2.5%ポイント、通常会員は最大2%ポイントがもらえます!
Amazonギフト券

\この記事をシェアする/