基础电路

Chap1 RC充电电路

电路

充电过程

公式

时间常数:τ = R * C,R电阻,C电容;(τ很重要,倒数是角频率ω=2πf
初始条件:电容没有电荷开关S完全打开,当开关闭合时,时间从t=0开始,电流开始通过电阻流入电容;
电容电压为:
V C = V S ( 1 − e − t R C ) V_C=V_S (1-e^{ - \frac {t}{RC} } ) VC​=VS​(1−e−RCt​)
电容电流为:
I C = V S R ∗ e − t R C I_C=\frac {V_S} {R} * e^{ - \frac {t}{RC} } IC​=RVS​​∗e−RCt​

电容电压电流值跟时间常数τ的关系:

τ 倍数 电容电压Vs*% 电容电流Vs/R*%
0.5 39.35% 60.65%
0.7 50.34% 49.66%
1 63.21% 36.79%
2 86.47% 13.53%
3 95.02% 4.98%
4 98.17% 1.83%
5 99.33% 0.67%

【备注】每一个时间常数周期内充63.21%(因为充之前完全没有电荷,即100%*0.6321),如第二个周期充到63.21%+36.79%*0.6321≈86.47%(第二周期还有1-63.21%=36.79%的电荷没有充)

源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsex = [0,0.5,0.7,1,2,3,4,5]
volt = 1-1/np.exp(x)
curr = 1/np.exp(x)plt.figure()
plt.subplot(121)
plt.plot(x,volt*100,'bd:')
for a, b in zip(x, np.round(volt*100,2)):plt.text(a, b, (a,b),ha='left', va='top')
plt.grid(linestyle = ':')
plt.xlabel('时间常数τ = RC')
plt.ylabel('电容电压 %')plt.subplot(122)
plt.plot(x,curr*100,'rd:')
for a, b in zip(x, np.round(curr*100,2)):plt.text(a, b, (a,b),ha='left', va='top')
plt.grid(linestyle = ':')
plt.xlabel('时间常数τ = RC')
plt.ylabel('电容电流 %')plt.show()

仿真结果

【扩展】求10%~90%上升时间?假设Vs=1,那么Vc如下:
V C = 1 − e − t R C 0.9 = 1 − e − t 90 R C ⇒ t 90 = − ln ⁡ 0.1 ∗ R C 0.1 = 1 − e − t 10 R C ⇒ t 10 = − ln ⁡ 0.9 ∗ R C T r = t 90 − t 10 = R C ∗ ln ⁡ 0.9 0.1 ≈ 2.2 ∗ R C = 2.2 ∗ τ V_C=1-e^{ - \frac {t}{RC} } \\\ 0.9=1-e^{ - \frac {t_{90}}{RC} } \Rightarrow t_{90}=- \ln{0.1}*{RC} \\\ 0.1=1-e^{ - \frac {t_{10}}{RC} } \Rightarrow t_{10}=- \ln{0.9}*{RC} \\\ T_r=t_{90}-t_{10}=RC*\ln{\frac {0.9}{0.1}}\approx2.2*RC=\textcolor{Red}{2.2*τ} VC​=1−e−RCt​ 0.9=1−e−RCt90​​⇒t90​=−ln0.1∗RC 0.1=1−e−RCt10​​⇒t10​=−ln0.9∗RC Tr​=t90​−t10​=RC∗ln0.10.9​≈2.2∗RC=2.2∗τ
结论:信号从10%上升到90%,需要2.2个时间常数的时间;

频率响应(LPF低通滤波器)

1 j ω C R + 1 j ω C = 1 1 + j ω R C = 1 − j ω R C 1 + ( ω R C ) 2 = 1 1 + ( ω R C ) 2 − j ω R C 1 + ( ω R C ) 2 \frac{\frac{1}{jωC}}{R+\frac{1}{jωC}}=\frac{1}{1+jωRC}=\frac{1-jωRC}{1+(ωRC)^2}=\frac{1}{1+(ωRC)^2}-\frac{jωRC}{1+(ωRC)^2} R+jωC1​jωC1​​=1+jωRC1​=1+(ωRC)21−jωRC​=1+(ωRC)21​−1+(ωRC)2jωRC​
3dB截止频率(τ很重要,牢记): ω 3 d B = 1 R C = 1 τ ω{_3dB}=\frac{1}{RC}=\frac{1}{τ} ω3​dB=RC1​=τ1​
传递函数极点: 1 1 + j ω R C ⇒ 令 s = j ω 1 1 + s R C ⇛ s = − 1 R C = − 1 τ \frac{1}{1+jωRC} \xRightarrow{令s=jω}\frac{1}{1+sRC} \Rrightarrow s=-\frac{1}{RC}=-\frac{1}{τ} 1+jωRC1​令s=jω ​1+sRC1​⇛s=−RC1​=−τ1​

python源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsef = np.logspace(0,8,100)
w = 2*np.pi*f
R = 10E3
C = 10E-9
y=1/(1+np.square(w*R*C))-1j*(w*R*C)/(1+np.square(w*R*C))plt.figure()
plt.subplot(121)
plt.plot(w,np.abs(y),'b.-')
plt.grid(linestyle = ':')
plt.xscale('log')
plt.title('幅频特性曲线')
plt.xlabel('频率 Hz')
plt.ylabel('幅度 %')
plt.yticks([1,0.7,0.5,0.3,0],['100', '70', '50', '30', '0'])
plt.subplot(122)
plt.plot(w,np.angle(y)/(2*np.pi)*360,'r.-')
plt.grid(linestyle = ':')
plt.xscale('log')
plt.title('相频特性曲线')
plt.xlabel('频率 Hz')
plt.ylabel('相位 度')plt.show()

仿真结果

Chap2 同频不同相信号叠加

同幅度同频率,不同相位的信号叠加之后的,时域和频域的信号有什么区别?
相位差在[0,180]内越小,幅值越大;180度即反相,相互抵消;

公式

s i n ( ω t + a ) + s i n ( ω t + b ) = 2 ∗ s i n [ ω t + ( a + b ) / 2 ] ∗ c o s [ ( a − b ) / 2 ] c o s ( ω t + a ) + c o s ( ω t + b ) = 2 ∗ c o s [ ω t + ( a + b ) / 2 ] ∗ c o s [ ( a − b ) / 2 ] sin(ωt+a)+sin(ωt+b)=2*sin[ωt+(a+b)/2]*cos[(a-b)/2] \\\ cos(ωt+a)+cos(ωt+b)=2*cos[ωt+(a+b)/2]*cos[(a-b)/2] sin(ωt+a)+sin(ωt+b)=2∗sin[ωt+(a+b)/2]∗cos[(a−b)/2] cos(ωt+a)+cos(ωt+b)=2∗cos[ωt+(a+b)/2]∗cos[(a−b)/2]

python源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falset = np.linspace(0,1,100)
fb = 10
wb = 2*np.pi*fbout0   = np.sin(wb*t) + np.sin(wb*t)
out45  = np.sin(wb*t) + np.sin(wb*t+np.pi/4)
out90  = np.sin(wb*t) + np.sin(wb*t+np.pi/2)
out135 = np.sin(wb*t) + np.sin(wb*t+np.pi/4*3)
out180 = np.sin(wb*t) + np.sin(wb*t+np.pi)plt.figure()
plt.subplot(251)
plt.plot(out0,'b.:')
plt.grid(linestyle = ':')
plt.title('0相位差')
plt.ylim([-3,3])
plt.subplot(256)
plt.plot(np.abs(np.fft.fft(out0)),'r.:')
plt.ylim([0,100])plt.subplot(252)
plt.plot(out45,'b.:')
plt.grid(linestyle = ':')
plt.title('45相位差')
plt.ylim([-3,3])
plt.subplot(257)
plt.plot(np.abs(np.fft.fft(out45)),'r.:')
plt.ylim([0,100])plt.subplot(253)
plt.plot(out90,'b.:')
plt.grid(linestyle = ':')
plt.title('90相位差')
plt.ylim([-3,3])
plt.subplot(258)
plt.plot(np.abs(np.fft.fft(out90)),'r.:')
plt.ylim([0,100])plt.subplot(254)
plt.plot(out135,'b.:')
plt.grid(linestyle = ':')
plt.title('135相位差')
plt.ylim([-3,3])
plt.subplot(259)
plt.plot(np.abs(np.fft.fft(out135)),'r.:')
plt.ylim([0,100])plt.subplot(255)
plt.plot(out180,'b.:')
plt.grid(linestyle = ':')
plt.title('180相位差')
plt.ylim([-3,3])
plt.subplot(2,5,10)
plt.plot(np.abs(np.fft.fft(out180)),'r.:')
plt.ylim([0,100])plt.show()

仿真结果

Chap3 理解IQ信号

I/Q信号,时域和频域的信号是什么样子的?
【基础知识】
I:in-phase 表示同相,即相位差为0,Q:quadrature 表示正交,与I相位差90度。链接: I/Q信号的理解
载波:频率很高信号,便于通过天线发射;
调制:使一个信号(称为载波,类比火车/飞机载客)的某些参数(如幅度、频率或相位)随着另一个信号(原始信号)而变化。

python源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falset = np.linspace(0,1,200)
fb = 5
wb = 2*np.pi*fb
fc = 35         # 载波频率高
wc = 2*np.pi*fc# I路信号/Q路信号/时域基带信号/载波信号/调制输出信号
i = np.sin(wb*t)
q = np.cos(wb*t)
b = i + q
c = np.sin(wc*t)
d = np.cos(wc*t)
mod = q * d         # 普通调制
iqmod = i * c + q * d     # IQ调制plt.figure()plt.subplot(261)
plt.plot(i,'b.:')
plt.grid(linestyle = ':')
plt.title('I路信号')
plt.ylabel('时域')
plt.subplot(267)
plt.plot(np.abs(np.fft.fft(i))[0:50],'r.:')
plt.ylabel('频域')plt.subplot(262)
plt.plot(q,'b.:')
plt.grid(linestyle = ':')
plt.title('Q路信号')
plt.subplot(268)
plt.plot(np.abs(np.fft.fft(q))[0:50],'r.:')plt.subplot(263)
plt.plot(b,'b.:')
plt.grid(linestyle = ':')
plt.title('I+Q时域输出信号')
plt.subplot(269)
plt.plot(np.abs(np.fft.fft(b))[0:50],'r.:')plt.subplot(264)
plt.plot(c[0:50],'b.:')
plt.grid(linestyle = ':')
plt.title('载波信号')
plt.subplot(2,6,10)
plt.plot(np.abs(np.fft.fft(c))[0:50],'r.:')plt.subplot(265)
plt.plot(mod[0:50],'b.:')
plt.grid(linestyle = ':')
plt.title('普通调制')
plt.subplot(2,6,11)
plt.plot(np.abs(np.fft.fft(mod))[0:50],'r.:')plt.subplot(266)
plt.plot(iqmod[0:50],'b.:')
plt.grid(linestyle = ':')
plt.title('IQ调制')
plt.subplot(2,6,12)
plt.plot(np.abs(np.fft.fft(iqmod))[0:50],'r.:')plt.show()

仿真结果

Chap4 行驻波

行驻波的动态波形;
行波:行走的波;
驻波:驻扎在原地的波;

python源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falset = np.linspace(0,100,10001)    # 时间变量
z = np.linspace(0,20,201)   # 空间变量w = 2*np.pi
tran = 2    # 传播常数
re = 0.5    # 反射系数,0为行波,1为驻波while(1):plt.ion()for i in range(len(t)):plt.clf()# y  = np.real(np.exp(1j*(w*t[i]+tran*z)) + re*np.exp(1j*(w*t[i]-tran*z)))a = np.exp(1j*(w*t[i]+tran*z))b = np.exp(1j*(w*t[i]-tran*z))y = np.real(a + re*b)y0 = np.real(a + 0*b)y1 = np.real(a + 1*b)plt.plot(z,y,'b.:',z,y0,'r.:',z,y1,'g.:')plt.grid(linestyle = ':')plt.ylim([-2,2])plt.title('蓝:行驻波,红:行波,绿:驻波')plt.draw()plt.pause(0.01)plt.ioff()plt.show()

仿真结果

Chap5 RC串并联电路

RC文氏桥的谐振

电路

❶若没有C2,正弦信号Uo的电流由C1→R1→R2,通过R2上压降形成Uf输出电压。由于支路电流被电容C1移相超前Uo 90°,这超前相位的电流流过R2(电阻不产生相移!),使得输出电压Uf电压超前于Uo 90°。
❷在R2上并联C2,C2从R2取得电压,由于电容对电压的滞后作用,使得R2上电压也被强制滞后。(但不一定有90°,因为还有C1→R1→C2电流对C2上电压即Uf的影响,但在RC特征频率上,并联C2后Uf输出相位与Uo相同。)
➤➤➤简单分析:
低频情况:电容阻抗很大,电路等效C1和R2的串联,因为C1阻抗大,输入电压大多被C1分走,输出几乎为0,低频不通过;
高频情况:等效R1和C2串联,此时C2阻抗很小,输出几乎为0;
中频情况:或多或少两边都能分到一些,所以有输出。。。

python源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt
# from scipy.fftpack import fft# 解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsef = np.logspace(0,8,100)
w = 2*np.pi*f
R1 = 100
R2 = 100
C1 = 100E-9
C2 = 100E-9
y1 = R2/(1/(1j*w*C1)+R1+R2)
y2 = (R2/(1+1j*w*R2*C2))/(1/(1j*w*C1)+R1+(R2/(1+1j*w*R2*C2)))plt.figure()
plt.subplot(121)
plt.plot(w,np.abs(y1),'b.-',w,np.abs(y2),'r.-')
plt.grid(linestyle = ':')
plt.xscale('log')
plt.title('幅频特性曲线')
plt.xlabel('频率 Hz')
plt.ylabel('幅度 %')
plt.yticks([1,0.7,0.5,0.3,0],['100', '70', '50', '30', '0'])
plt.subplot(122)
plt.plot(w,np.angle(y1)/(2*np.pi)*360,'b.-',w,np.angle(y2)/(2*np.pi)*360,'r.-')
plt.grid(linestyle = ':')
plt.xscale('log')
plt.title('相频特性曲线')
plt.xlabel('频率 Hz')
plt.ylabel('相位 度')plt.show()

仿真结果

蓝色波形:无C2时的幅频/相频曲线,高通;(相位:低频因为有电容,相位超前90度(为什么?因为低频等效电容串联电阻,电容的电流超前电压90度,这个电流在R上形成电压,所以比电容电压超前90度);高频等效两个电阻分压,没有相位差;)
红色波形:有C2时的幅频/相频曲线,带通;(相位:低频超前90度,高频滞后90度,因为高频等效RC串联的低通滤波器;)

python电路仿真001相关推荐

  1. Python练习题 001:4个数字求不重复的3位数

    听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...

  2. python电路仿真_蔡氏电路仿真实验

    蔡氏电路仿真实验 模拟电路运行 采用MATLAB进行模拟.本电路为一常微分方程的初值问题. 取定参数 matlab代码实现 首次模拟的图像对比 参数调整后,模拟的图像对比 分析频谱 模拟非线性电路同步 ...

  3. 夕颜的python笔记001

    一直以来没搞懂python中对象创建的过程,这里作了一些小测试,进行学习首先如以下类A,t=A(),那这个过程中发生了什么在debug中发现该程序首先进入pydevd.py,执行一个 pydev_im ...

  4. 小甲鱼python 第001讲:我和Python的第一次亲密接触

    文章目录 第000讲:愉快的开始 第001讲:我和Python的第一次亲密接触 讲课思尻 思尻题 1.python是脚本类型的语言 2.IDLE是什么 3.print()的作用 4.为什么 >& ...

  5. 八上编程教育python笔记-001生日备忘录

    步骤: 1.在桌面新建一个文件夹(命名为:班级名+学号+姓名+项目名称) 2.复制  数据文件到了 '新建文件夹' 3.新建  python 文件(命名为:001) 4.编写程序 一.读取文件 1.o ...

  6. 从0开始的Python学习001快速上手手册

    假设大家已经安装好python的环境了. Windows检查是否可以运行python脚本 Ctrl+R 输入 cmd 在命令行中输入python 如果出现下面结果,我们就可以开始python的学习了. ...

  7. python 生成001开始的序号_你知道嘛:Python内建序列通用操作有6种实现方法(赶快收藏)...

    本文内容主要介绍了Python内建序列通用操作6种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! 数据结构式通过某种方式(例如对元素进 ...

  8. Python 案例001 (有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数)...

    题目内容来自网络 ,加入了个人理解的过程 ,和点评 #!/usr/bin/python # -*- coding: UTF-8 -*-#Author : Wumi#题目:有四个数字:1.2.3.4,能 ...

  9. 我的python印记001

    记录我的python学习过程,让成长的足迹,真实地留在时间的印记上.多年之后,我们有所成就时,能够看到这一路的光芒,其实早就因为你的奋起而一直熠熠发光. --python印痕 如何在pycharm中新 ...

最新文章

  1. 【jQuery】选择器
  2. Intellij自动生成测试类
  3. SAP Spartacus Unit List Component的设计明细 - UnitListComponent
  4. 封装(构造方法,构造器)
  5. 【笔记】UL/DL(上行/下行)方向上每个符号IQ的时序关系(U平面和C平面)
  6. Docker之数据卷和数据卷容器
  7. 读《单页web应用》-回顾作用域
  8. 推荐x61使用nhc软件控制风扇
  9. 如何实现大批量UKEY远程连接管控?
  10. 【最优估计学习笔记】概率密度函数
  11. android自动打开软键盘,Android打开关闭软键盘
  12. mybatis中显示Type interface com.javacto.dao.UserMapper is not known to the MapperRegistry.
  13. Seurat | 不同单细胞转录组的整合方法
  14. 一.学习前的准备-java程序员必备知识
  15. mysql类似于excel的删除重复项_删除重复数据 excel去除重复数据 怎么筛选重复数据 excel重复数据合并...
  16. 使用字节流和字符流对文件进行操作
  17. 北京移动动感地带收费项目个人使用总结
  18. 赛车游戏开发总结PHYSX OGRE
  19. 任务栏的输入法工具栏不见了
  20. 阿达的esp01s单路通电器

热门文章

  1. 2019年职称计算机考题,2019年职称计算机考试Excel备考试题(一)
  2. 如何使用万能地图下载器下载矢量建筑边界
  3. 排除计算机硬件故障,如何快速准确地排除电脑硬件故障
  4. OpenCV图像模糊:高斯滤波、双边滤波
  5. 如何参与到GitHub开源项目中
  6. facebook与人人网的网站后台架构对比
  7. Guice——轻量级注解Guice简单之美
  8. Live2D项目,桌面可爱玩偶(可以动的),html桌面化(exe)的实现
  9. RouterOS(ROS)软路由PPPOE拨号上网配置指南(附授权镜像下载)
  10. ue4怎么用虚幻商城场景_【更新】UE4虚幻引擎野外场景制作零基础入门教程