如何在Python中实现PWM(pulsewidth modulation)?

2024-09-22 16:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在进行无刷直流电机的仿真。 我的模型正在工作。仿真是在一个FOR循环中实现的,而步长是时间增量。在

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

问题是我不知道如何用Python实现PWM。我一直在寻找解决方案,但我得到的只是一些内置PWM的树莓库。在

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

我想得到函数:

def PWM(frequency, dutyCycle)

频率是50千赫。 问题是dutyCycle在模拟的每一个时间步都会发生变化。在


Tags: 模型目标for时间解决方案增量内置速度
1条回答
网友
1楼 · 发布于 2024-09-22 16:24:10

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

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

例如,如果您希望PWM在开始时为1,则具有50 kHz的f和0到1之间的dutyCycle,则“打开”时间为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滤波,你会得到

^{pr2}$

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

相关问题 更多 >