0

我正在控制一个带有逆变器/驱动器 IC 的 BLDC 电机来进行开关工作。我需要为驱动器提供 6 个相同频率的 PWM 信号。确切的频率并不重要,只要它在 5kHz 到 10kHz 之间并且所有 PWM 引脚都相同。

我目前正在使用 Arduino Uno,我不确定如何将每个 PWM 引脚(3、5、6、9、10、11)编程为与定时器(0、1 和 2)相同的频率,特别是引脚具有不同的时钟速度。

  • 引脚 5 和 6:由定时器 0 控制,基频 62500Hz
  • 引脚 9 和 10:由 timer1 控制,基频 31250Hz
  • 引脚 11 和 3:由定时器 2 控制,基频 31250Hz

timer1 和 timer2 可以,可以按预分频器值 8 (7812.5Hz) 缩小。不确定如何让 timer0 达到相同的频率?

http://playground.arduino.cc/Main/TimerPWMCheatsheet

我确信解决方法相对简单。是否可以将 timer0 的频率除以一个不是预分频器值的数字,比如 40?

提前致谢。

拍。

4

1 回答 1

0

您还没有包含电机控制器的芯片编号,但我很确定您将无法使用六个不同的计时器来实现您想要的。问题是不同引脚上的 PWM 都必须同步,而不仅仅是在适当的时间内打开和关闭。

相反,您应该使用单个计时器并在正确同步时切换所有输出。此页面在“Bit-banging Pulse Width Modulation”部分中有一个示例的开头。您必须对其进行修改以切换更多引脚。

这个例子可能还不够好。相反,您应该使用中断服务程序来切换引脚。这样,PWM 运行更加独立,并允许循环功能做更多事情。

您的例程将附加到定时器上的输出比较中断,并且您必须将各种 PWM 输出的值保存在一些易失性变量中。输出比较寄存器将设置为在下一次切换时唤醒。当例程运行时,它将执行切换并为切换设置输出比较寄存器。时序和同步的详细信息将取决于您的控制器的数据表。

循环功能可以读取输入并调整易失性变量以改变电机速度。

还有一些电机驱动器可以为您完成所有这些工作。您所要做的就是提供方向和速度,芯片会为您创建 6 个 PWM。

于 2014-11-20T11:39:44.903 回答