存档

‘EDA软件’ 分类的存档

LTSpice中使用Laplace公式

2016年11月13日 没有评论

ltspice有几个比较独特的电压源,可以用表达式的方式来实现所需的目的,典型的有B source, 和E source. 官方自带的手册没有详细的说明,可以在ltwiki找到undocumented 说明。

本文还是以之前这篇文章的RC充电电路为例,这个例子比较简单,又有明确的解析解。 电路的表达除了可以时域,还可以频域。往往频域分析更为简单。通常可以用laplace变换,比傅里叶变换更优的地方在于可以很好的表达初始状态,这方面知识在电路原理或者电路分析的书上都可以找到,在此不详叙述。

rc_cir

时域仿真原理图如上图。如果转到频域,电阻还是R,但是电容则为\frac{1}{sC},C为电容值,s等效于j\omega

b点电压值,其传递函数为

 H(s)= \frac{Vb}{Va} = \frac{\frac{1}{sC}}{R+\frac{1}{sC}} = \frac{1}{1+RCs}

所以可以通过下面的E元素,VCVS(压控电压源)来表示laplace变换

rc_laplace

仿真波形如下,和RC电路吻合

voltage_plot

但是laplace也有其缺点,比如需要FFT运算,在仿真时间会长和速度也会慢一些。

分类: Spice 标签: ,

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 标签:

S参数查看软件-SPChart发布

2011年2月12日 4 条评论

SPChart谋划和编写了很久,现在终于能正式发布了。在网上搜索了下S参数查看软件,基本上都是商业收费软件,而且支持混合S参数的也不多,所以萌生了自己写一个这样工具的想法。软件基本功能完成,并已经发布到sourceforge上面了。

软件特点

目前软件已经实现下面的功能:

  • 支持SNP从S1P到S9P ,S10P以上不支持,实际上使用的也比较少
  • 混合模式目前之支持4端口
  • 能导出eps, emf, pdf, png, ps, svg 等格式图片
  • 支持相位曲线

软件主页:http://spchart.sourceforge.net/

spchart_maingui

安装方法

软件是用python编写,如果源代码运行的话,需要预先安装python,numpy以及matplotlib库。当然也有编译好的exe文件,解压直接运行,或者用安装包。

软件下载地址:https://sourceforge.net/projects/spchart/files/

软件的精度

可以和商业软件如SPView做对比。

单端S参数:

SPchart

SPChart_SEmode

SPview

SPView_SEmode

混合S参数

SPChart

SPChart_mixmode

SPview

SPView_mixmode

ImpedCalc被softpedia收录了

2010年9月3日 1 条评论

softpedia是国外的一个软件下载站,把我的ImpedCalc收录了。并做了个简单的介绍,看来是人工输入的。

A transmission line impedance calculator

ImpedCalc is a simple, easy to use, handy tool specially designed to offer users a transmission line impedance calculator.

并且还逐一界面截了图。

http://www.softpedia.com/progScreenshots/ImpedCalc-Screenshot-168339.html

主页下载地址

http://www.softpedia.com/get/Science-CAD/ImpedCalc.shtml

软件认证

ImpedCalc 0.00 - 100% Free

http://www.softpedia.com/progClean/ImpedCalc-Clean-168339.html

我做的传输线阻抗求解器

2010年8月29日 4 条评论

花了周末2天的时间写了一个计算传输线阻抗的小工具ImpedCalc。界面基本仿照Polar软件写的,但是所有的代码和图片都是自己写的。基本界面如下,基本功能很简单,输入尺寸之后就可以计算出阻抗值。目前就做了表层微带线,对称带状线,非对称带状线和差分微带线。

软件的计算是基于公式计算,而不是2维场求解,所以只能在一定范围内相对精确。我做了精确度评估,基本上还是很准确的。

表层微带线

下面是在H=4.5,T=1.2,Er=4.2时改变W时,ImpedCalc计算的阻抗和Polar软件的比较结果。表层单端传输线的精确度还是比较准确的。

对称带状线

下面分别计算在H=8和H=12时的区别。T=1.2,Er=4.2。

 

结果基本上还是准确的,后面还会做更多的测评。

现在这个软件做成了开源的放在了sourceforge上了,主页如下。可以在点击download下载编译好的程序。有安装版本,双击安装;也有绿色版本,解压即可运行。同时提供源代码。

http://impedcalc.sourceforge.net

源代码可以用subversion查看,地址:

svn co https://impedcalc.svn.sourceforge.net/svnroot/impedcalc impedcalc

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