CR_Int

1764 days ago by takepwave

CR積分回路の応答波形の表示

ラプラス変換(基本法則と変換表のみを使用)で、方形波に対するCR積分回路の応答波形を以下の様に求めました。

$$ V_C = E \left \{ u(t) - u(t - T) - e^{-\frac{1}{CR}t} + e^{-\frac{1}{CR}(t - T)}u(t -T) \right \} $$

この応答波形をSageを使ってプロットしてみます。

(t, T, tau, E) = var('t T tau E') Vc = E*(1*(unit_step(t) - unit_step(t - T)) - e^(-1/tau*t) + e^(-1/tau*(t - T) )* unit_step(t - T)) 
       
show(Vc) 
       
# 方形波 U = E*(unit_step(t) - unit_step(t - T)) 
       
# 方形波とVcをプロットする関数を定義します def plot_Vc(Tc): fvc(t) = Vc(t, tau=0.001, T=Tc, E=2.0) Ut(t) = U(T=Tc, E=2.0) vc_plt = plot(fvc(t), [t, 0, 2*Tc], color='blue') ut_plt = plot(Ut(t), [t, 0, 2*Tc], color='green') (vc_plt + ut_plt).show(figsize=4) 
       
# Tc=0.01、周期50HzでのVcのプロット plot_Vc(Tc=0.01) 
       
# Tc=0.001、周期500HzでのVcのプロット plot_Vc(Tc=0.001) 
       
# Tc=0.0001、周期5kHzでのVcのプロット plot_Vc(Tc=0.0001) 
       
# 伝達関数から周波数特性を求める (s, f,R,C) = var('s f R C') Hc = 1/(R*C*s + 1) 
       
# s = jω, ω= 2πfを代入すると Hc(f) = Hc.subs_expr(s == 2*i*pi*f) show(Hc(f)) 
       
# 電気ではデジベルで表示するため、toDb関数を定義する def toDb(v): return 20*log(abs(v), 10) 
       
# 直接表示すると'unable to simplify to float approximation'のエラーがでるので、lambda式で回避した。 # plot(toDb(Hc(f, R=10000, C=10^-7)).n(), [f, 10, 10000], scale="semilogx", figsize=4, plot_points=1000) # plot(lambda f: toDb(Hc(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000) 
       
# 位相は以下の様になる PhiC(f) = arctan(-2*pi*f*R*C) show(PhiC) 
       
def toDeg(v): return v*180/pi 
       
plot(lambda f: toDeg(PhiC(f, R=10000, C=10^-7)).n(), [f, 10, 1000], scale="semilogx", figsize=(5, 3), plot_points=1000)