python中怎么产生阶跃函数_Python计算RC电路响应

未经私信同意禁止转载!

前言

Python具备强大的数据计算功能,用来做电路的仿真当然不成问题。近日在网上看到有人用Python做电路数值计算的相关工作,正好符合我最近将Python应用到硬件技术各个领域的主题,就算把文章转译过来,让大家了解一下,自己也借机学习一下。
尊重作者权益,先放上原文链接,大家也可以直接去原文链接直接看到更多的信息:https://arachnoid.com/BiQuadDesigner/index.html

今天就抽取这篇文章的一部分,简要地介绍一下如何使用Python计算RC电路的阶跃响应,并展示了当输入为正弦波时,RC低通滤波电路的输出。

一、基本的理论

下图是一个典型的RC电路和它的阶跃响应

bb22a8e3e379733f55acff44b268ea28.png

在这个简单电路中流动的瞬时电流与电阻两端的电压成正比,电容器电压变化的速率也与电流成正比。在零时,电容两端的电压为零,因此电阻的电压和电路的电流最大。 随着时间的推移,电容器两端的电压增加,导致电阻器的电压下降。这意味着电路的电流下降,导致电容器的电压变化率下降。换一句话说,电容器电压接近电源电压的速率与电容器和电源之间的剩余电压差逐步下降。

在零时刻,输出电压等于0:

在以后的任意时刻,1A的电流会导致1F电容以1V/s的速率改变电压。我们用差分方程形式来表示这一计算:
vi(n)=vi(n−1)+(v−vi(n−1))*tc

其中v是系统输入电压,tc为时间常数,它表示了相邻时刻的电压变化。输入电压与输出电压的压差乘以时间常数tc就是充电量。tc计算式为:
tc = 1.0 / (r * c * sample_rate)

二、阶跃响应的计算

RC电路的参数是10K和100uF。我们用4k的采样率来对模拟信号进行抽样。初始时刻电路输出电压为0,以后的任意时刻用上面的差分方程来计算。差分方程在程序中的具体形式是这样的:
vi += (v-vi) * tc
这一点应该不难理解。

对于一个阶跃信号,其Pyhon 源码如下:

import 

运行结果如下:

c03c158fbbce247f909ca01495250692.png
阶跃响应

三、正弦型号的输出

当我们给RC电路输入正弦信号的时候,计算过程和阶跃函数其实样的,只要把阶跃函数的输出电压替换成正弦信号即可,源码如下:

import 

运行结果如下:

12502b5b193476bb6667c78a551dd341.png

其中黄色线是输出信号。

后记

使用Pyhon可以完成一些电路计算,当然这需要你对电路的原理和数学形式有很深的了解,并且需要你有足够好的编程能力对这些计算进行实现。当然现在,很多软件都已经完成各种形式的电路仿真计算,应该有很多以前的代码可以借鉴。原文的作者用这种方式进行滤波器的设计,有兴趣的读者可以去了解下。

进入我的主页,你可以看到Pyhon是如何在MCU和FPGA上应用的,甚至你能看到使用Python来进行硬件描述语言的编程。关注我的专栏《电子工程师有多无聊》你可以看到更多Pyhon在硬件领域的应用,希望能给你的工作带来帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值