首页 > Python > Python 仿真RC电路瞬时响应

Python 仿真RC电路瞬时响应

2016年10月16日 发表评论 阅读评论

本文举例如何通过Python仿真简单的RC电路的瞬态响应,软件的数字算法是对模拟电路的一种等效描述。下面的电路是一个简单的RC充放电电路,或者也可以看作为低通滤波器电路。

RC_DC

解析法分析电路响应

由于这个电路比较简单,先可以用解析的方式来等到Vb的瞬态响应。公式(1)为此电路的微分方程,公式(2)为初始调条件。

V_b(t) + rc\frac{dV_b}{dt} = V_a \: (1)

 

V_b(0)=0 \: (2)

通过解析的方法解出微分方程,结果为下面的公式(3)

V_b = V_a(1-e^{-\frac{t}{rc}}) \: (3)

瞬态波形如下图所示

ana_result

源代码如下

import numpy as np
import matplotlib.pyplot as plt

r = 10e3
c = 100e-6

da = []
db = []

dt = np.linspace(-1,5,200)

for t in dt:
    Va = 0 if t<0 else 10
    Vb = Va*(1-np.exp(-t/(r*c)))
    da.append(Va)
    db.append(Vb)

 
plt.plot(dt,da,label="Va")
plt.plot(dt,db,label="Vb")
plt.ylim([-1,11])
plt.xlabel("Time(Sec)")
plt.ylabel("Amplitude(V)")
plt.legend(loc="best")
plt.title("RC low pass filter transient response")
plt.grid()
plt.show()

 

Python通过数值方法分析

 

由于解析不一定任何情况下都可以解出,尤其是一些复杂的情况,如果采用离散数值的方法,通过计算机可以在一定的精度条件下解出来。数字信号处理是基于下面的一些原则:

  • 第一步是把现实的信号从模拟信号转换成数字信号。
  • 用数字的方法表示原始的信号基于一个固定的周期,这个是系统的采样率
  • 采样率是由一系列时钟所组成,基于可以可靠的时间基准(比如晶振和锁相环等电路)
  • 如果给出数字数据流和采样率,很多之前所用的电路都可以用软件来等效

此电路的离散数值表达是如下,其中的tc为时间常数,它表示了相邻时刻的电压变化。Va和Vb之间的压差乘以时间常数tc就是每个采样周期内充电量。

V_b(n) = V_b(n-1) + (V_a - V_b(n-1))*tc) \: (4)

其python代码如下

import numpy as np
import matplotlib.pyplot as plt

sample_rate = 4000.0 # sample rate 4k Hz

ta = []
da = []
db = []

# resistor value, ohms
r = 10e3 

# capacitor value, farads
c = 100e-6 

# time constant
tc =  1.0 / (r * c * sample_rate) 

Vb = 0 # integration variable

for n in range(-int(sample_rate),int(sample_rate) * 5):
    t = n / sample_rate
    ta.append(t)
    # generate the test step function
    Va = (0,10.0)[t > 0]
    da.append(Va)
    # perform the filtering function
    Vb += (Va-Vb) * tc 
    db.append(Vb)


plt.plot(ta,da,label="Va")
plt.plot(ta,db,label="Vb")
plt.ylim([-1,11])
plt.xlabel("Time(Sec)")
plt.ylabel("Amplitude(V)")
plt.legend(loc="best")
plt.title("RC low pass filter transient response")
plt.grid()
plt.show()

仿真得出的波形如下,和前面的解析解一致

dig_result

 

总结

本文通过解析法和数值法都可以得到RC电路的瞬态响应。文章内容来自这里,有兴趣可以继续阅读。



分类: Python 标签:

无觅相关文章插件,快速提升流量