目前我正在研究BLDC电机的仿真。 我的模特正在运作。模拟在FOR循环中实现,而步骤是时间增量。
我的下一个目标是电机速度控制,我计划通过PWM实现。
问题是我不知道如何在Python中实现PWM。我已经搜索了解决方案,但我得到的是一些用于构建PWM的Raspberry库。
如何通过使用一些标准库来获得PWM?
我想获得功能:
def PWM(frequency, dutyCycle)
频率为50 kHz。 问题是,dutyCycle可以在模拟的每个时间步骤中改变。
答案 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的用途:提供一种简单的方法来变化电压。