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
在你的模拟中,你可能有时间线之类的东西。在
PWM基本上是通过计算给定时间的电压来实现的。在
例如,如果您希望PWM在开始时为1,则具有50 kHz的
f
和0到1之间的dutyCycle,则“打开”时间为20µs*dutyCycle
,而关闭时间为(20µs*1-dutyCycle
)。在你的功能应该是
如果你的模拟时间远远高于频率,你执行一个虚拟的RC滤波,你会得到
^{pr2}$因为这就是PWM的目的:提供一种简单的改变电压的方法。在
相关问题 更多 >
编程相关推荐