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

示波器探头(4)

2010年12月30日 没有评论

五、探头及附件准确度验证
下图是一个例子:被测信号是一个频率456MHz,边沿时间约65ps的时钟信号,分别使用不同类型的探头和探头附件的测试结果。
A图是使用12GHz的1169A差分探头和N5381A 12GHz焊接探头附件的测试结果,几乎完全复现被测信号;
B图是使用500MHz的无源探头的测试结果,显示的信号完全失真;
C图是使用12GHz的1169A差分探头和较长的测试引线的测试结果,显示的信号出现很大的过冲;
D图是使用4GHz的1158A单端探头和较长的测试引线的测试结果,显示的信号几乎是正弦波,失真较大。

4-1

从图中可见探头和探头附件对测试精确度的影响是非常大的,是我们测试高速信号应该重点注意的内容之一。那我们应该如何验证探头和探头附件呢?
验证探头和探头附件需要使用一台脉冲码型发生器(如:81134A,3.35GHz速率,60ps边沿的脉冲码型发生器),如果示波器自带高速信号输出功能,也可以使用示波器的这个辅助输出口代替脉冲码型发生器(如: Infiniium示波器的AUX OUT端口可以发一个高速时钟:456MHz频率,约65ps边沿)。另外,需要同轴电缆和测试夹具(Infiniium示波器配置的探头校准夹具可以作为探头和探头附件验证测试夹具)。测试夹具的外表是地(Ground),里面走线是信号(Signal),如下图所示。使用时,通过同轴电缆把一端接到脉冲码型发生器或示波器的辅助输出AUX OUT端口,另外一端通过适配器连接到示波器的通道1上。

4-2

然后把被验证的探头连接到通道2上,探头通过探头附件可以接触到测试夹具的信号和地(如果是差分探头,那么把+端连接到测试夹具的信号线,把-端连接到测试夹具的地上)。
1、如果探头不接触信号线,则屏幕上会出现一个原始波形,存为参考波形;
2、当用探头探测信号线时,通道1的波形会发生变化,这个变化后的波形就是被探头和探头附件影响后的被测信号;
3、这时,连接探头的通道2会出现一个波形,这个波形是探头测试到的波形;
4、通过对比参考波形,通道1的波形,和连接探头的通道2的波形,就可以直观的看出或通过测试参数读出三者的差别,可以验证探头和探头附件的影响。

4-3

下图是实际验证的一个例子,图A把示波器的AUX OUT通过同轴电缆连接到测试夹具,测试夹具的另一端通过SMA-PBNC适配器连接到示波器的一个通道上(此例连接到通道3),把探头连接到通道1上,此时调整屏幕上的波形,使得出现一个边沿阶跃波形,如图C所示,并把此波形存为参考波形。如图B把被验证探头和附件点测到测试夹具上,如图D所示,屏幕上出现3个波形,兰色的是参考波形,绿色的是受探头影响后的被测波形,黄色的是探头显示的波形,通过测试上升时间参数,过冲参数等,可确认探头和探头附件的性能。4-4

分类: 测量仪器 标签: ,

ADS单端S参数转换成差分的方法

2010年12月29日 没有评论

ADS的bulan器件可以很方便的把单端s参数转换成差分S参数,SNP文件的详细规格请参见这里,以S4P文件为例,单端的S参数是4x4的矩阵,S11,S12…,S44,差分S参数可以看作是差分和共模的组合,差分的输入和输出,共模的输入和输出。如下图中S4P组件S参数源文件为Molex2006_1_T.s4p,用2个balun作为产分和单端的转换。差分阻抗为100欧姆,共模阻抗为25欧姆,如图中的Term1~Term4。通过S参数仿真就能得出差分共模S参数。比如要看SDD12就是输出结果的S13,SDD11就是输出结果的S11

schematic

SDD11和SDD12的结果如下图所示:

sdd11_sdd12

同样可以用SPview来查看做对比,结果如下:

spview

仿真的源文件下载地址:http://www.box.net/shared/5vshoiop1p

分类: S参数 标签:

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