如何在Python中实现PWM(脉冲宽度调制)?

时间:2015-05-21 11:01:36

标签: python simulation pwm

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

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

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

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

我想获得功能:

def PWM(frequency, dutyCycle)

频率为50 kHz。 问题是,dutyCycle可以在模拟的每个时间步骤中改变。

1 个答案:

答案 0 :(得分:0)

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

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

电子。例如,如果您希望PWM在开始时为1,f为50 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的用途:提供一种简单的方法来变化电压。