简单到复杂电气计算的类集合

eecalp的Python项目详细描述


#eecalpy python模块

[![PYPI包](https://badge.fury.io/py/eecalpy.svg)](https://badge.fury.io/py/eecalpy) [![生成状态](https://travis-ci.org/wese3112/eecalpy.svg?branch=master)](https://travis-ci.org/wese3112/eecalpy

python模块的电气工程计算是 用于简单到复杂电气计算的类集合,其中 特别注重处理公差。

##安装

python包索引(pypi)中提供了eecalpy包。该软件包需要Python3+,您可以使用以下命令安装它:

$ pip install eecalpy

##简介

检查下面的分压器。对于两个电阻器,其公差和 给出了温度系数α(百万分之α)。

啊![简单分压器](img/vdiv.png?raw=真“分压器”)

让我们为它们创建两个变量。

>>> r1 = R(resistance=1000, tolerance=0.05, alpha_ppm=250)
>>> r2 = R(2e3, 0.01, 100)
>>> r1; r2
1.0kΩ ± 5.0% (± 50.0Ω) [0.9500 .. 1.0500]kΩ @ 20°C α=250ppm
2.0kΩ ± 1.0% (± 20.0Ω) [1.9800 .. 2.0200]kΩ @ 20°C α=100ppm

分压系数的公式为r1/(r1+r2)。要计算它,请使用r.分压器(其他电阻器):

>>> r1.voltage_divider(r2)
0.33 ± 4.0% [0.3199 .. 0.3465]

您也可以使用速记符号:

>>> r1 // r2
0.33 ± 4.0% [0.3199 .. 0.3465]

注意:此处不要使用r1/(r1+r2)语句,因为它将使用公差限制 两次(加和除),因此产生错误的结果。

上面的结果是factor类的一个实例。现在只缺少电压。 使用U(电压,公差=0.0)创建。

假设输入电压为24伏,公差为1%,输出电压为 分压器为:

>>> vin = U(24, 0.01)
>>> vout = r1 // r2 * vin
>>> vout
8.0V ± 5.0% (± 400.0mV) [7.6000 .. 8.4000]V

注意:语句vout=vin*r1//r2不起作用。它是从左到右计算的,因此python首先尝试vin*r1这是未实现的(电压乘以电阻),但您始终可以使用括号:

>>> vin * (r1 // r2)
8.0V ± 5.0% (± 400.0mV) [7.6000 .. 8.4000]V

为了演示,让我们计算一些分压器参数。

电流通过r1r2(至GND):

>>> vin / (r1 + r2)
8.01mA ± 3.33% (± 266.81µA) [7.7394 .. 8.2730]mA

电阻器的功耗:

>>> vout**2 / r1
65.46mW ± 21.35% (± 13.97mW) [51.4842 .. 79.4301]mW
>>> (vin - vout)**2 / r2
128.26mW ± 12.3% (± 15.78mW) [112.4776 .. 144.0351]mW

让我们看看当环境温度为200°C时,vout如何变化:

>>> r1.at_T(200) // r2.at_T(200) * vin
8.14V ± 4.97% (± 404.16mV) [7.7359 .. 8.5443]V

r.at(温度)r.at(温度)相同。 它返回给定温度(单位为°C)下的新电阻对象。

当然,你也可以使用完美的价值观,所以没有宽容和 温度系数:

>>> r1 = R(1e3)
>>> r2 = R(2e3)
>>> vin = U(24)
>>> r1; r2; vin
1.0kΩ @ 20°C
2.0kΩ @ 20°C
24.0V
>>> vout = r1 / (r1 + r2) * vin
>>> vout
8.0V

顺便说一下,您可以使用+和 使用的阻力:

>>> r1 + r2
3.0kΩ @ 20°C
>>> r1 | r2
666.67Ω @ 20°C
>>> r1 | (R(5e3) + R(3e3)) | r2  # complex statements allowed!
615.38Ω @ 20°C

##课程

可用的课程有:

  • 电压u(电压,公差=0.0)
  • 电阻r(电阻,公差=0.0,αppm=无)
  • 电流i(电流,公差=0.0)
  • 功率p(功率,公差=0.0)
  • 因子因子(因子,公差)(无单位因子,如下示例)
  • 平方电压(V 2)usq(电压,公差=0.0)
  • 平方电流(A 2)isq(电压,公差=0.0)

所有类都有以下成员(使用电压时的示例):

>>> v1 = U(24, 0.04)
>>> v1
24.0V ± 4.0% (± 960.0mV) [23.0400 .. 24.9600]V
>>> v1.value
24
>>> v1.min
23.04
>>> v1.max
24.96
>>> v1.unit
'V'

当 已知下限和上限(最小/最大):

>>> P.from_min_max(3, 4)
3.5W ± 14.29% (± 500.0mW) [3.0000 .. 4.0000]W

所有单位都有加、减、乘和除运算符。计算 仅当结果的类型是上述类之一时才有效:

这是因为结果类型是已知类之一:

>>> U(10) + U(20)
30.0V
>>> I(2e-3) - I(10e-3)
-8.0mA
>>> U(10) * I(2e-3)
20.0mW
>>> U(10) / I(2e-3)
5.0kΩ @ 20°C
>>> U(10) * Factor(2)
20.0V
>>> I(10e-3) * R(150)
1.5V
>>> P(200) / U(5)
40.0A
>>> U(3) * U(3)
9.0V²
>>> U(3)**2  # U squared
9.0V²
>>> U(3)**2 / R(1e3)
9.0mW

这不起作用,因为电压除以功率不是已知的类别:

>>> U / P
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'type' and 'type'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
空字符串检查在java中未按预期工作   JavaSpringWebClient:自动计算主体的HMAC签名并将其作为头传递   foreach是否有一个Java等效的foreach循环和一个引用变量?   java如何在Eclipse中导入jar   使用特定第三方或java时lombok触发错误。*方法或构造函数   安卓 java将对象数组转换为int数组   java使一定百分比的JUnit测试通过   java Android:将Seekbar的一个值与另一个值进行比较   java将int数组(图像数据)写入文件的最佳方式是什么   java取代了系统。yml的构造函数内的getProperty   sqlite Java将公钥和私钥转换为字符串,然后再转换回字符串   安卓获取白色像素并将其保存到java opencv中的数组中   java为什么是ServerSocket。setSocketFactory静态?   Java数组似乎在不直接修改的情况下更改值