1

目前我正在研究 BLDC 电机的模拟。我的模型正在工作。模拟是在 FOR 循环中实现的,而步骤是时间增量。

我的下一个目标是我计划通过 PWM 实现的电机速度控制。

问题是我不知道如何在 Python 中实现 PWM。我已经搜索了解决方案,但我得到的只是一些内置 PWM 的 Raspberry 库。

如何使用一些标准库获得 PWM?

我想获得功能:

def PWM(frequency, dutyCycle)

频率为 50 kHz。问题是 dutyCycle 可以在模拟的每个时间步发生变化。

4

1 回答 1

1

在您的模拟中,您可能有类似时间线之类的东西。

PWM基本上是通过计算给定时间的电压来实现的。

例如,如果您希望 PWM 在开始时为 1,具有f50 kHz 和介于 0 和 1 之间的占空比,则您的“开启”时间为 20 µs * dutyCycle,关闭时间为 (20 µs * 1- dutyCycle)。

因此,您的功能应该类似于

def PWM(t, frequency, dutyCycle):
    #period = 1 / frequency
    #pt = tt / period
    pt = tt * frequency # "period" time, where 1 unit is 1 period on the "real" time stamp.
    tc = pt - trunc(pt) # cycle time within 1 period. 0..1.
    return 1 if tc < dutyCycle else 0 # where 1 means on and 0 means off

如果你的仿真时间远高于频率,你执行一个虚拟 RC 滤波,你会得到

def PWM(t, frequency, dutyCycle):
    return dutyCycle

因为这就是 PWM 的作用:提供一种改变电压的简单方法。

于 2015-05-21T11:23:51.760 回答