我正在控制带逆变器/驱动器IC的BLDC电机进行切换工作。 我需要为同一频率的驱动器提供6个PWM信号。确切的频率并不重要,只要它在5kHz到10kHz之间并且所有的PWM引脚都是相同的。
我目前正在使用Arduino Uno,我不知道如何编程每个PWM引脚(3,5,6,9,10,11)的频率与定时器的频率相同(0 ,1和2)特定引脚具有不同的时钟速度。
timer1和timer2就可以了,可以通过预分频器值8(7812.5Hz)按比例缩小。不知道如何让timer0达到相同的频率?
http://playground.arduino.cc/Main/TimerPWMCheatsheet
我确定解决方法相对简单。是否可以将timer0的频率除以一个不是预分频值的数字,比如40?
提前致谢。
专利
答案 0 :(得分:0)
您没有包含电机控制器的芯片编号,但我很确定您无法通过六个不同的计时器实现您想要的功能。问题是不同引脚上的PWM都必须同步,而不是只在适当的时间内打开和关闭。
相反,您应该使用单个计时器并在正确的同步时切换所有输出。这个page在“比特脉冲宽度调制”一节中有一个例子的开头。您必须修改它才能切换更多针脚。
这个例子可能还不够好。相反,您应该使用中断服务程序来切换引脚。这样,PWM运行更加独立,并允许循环功能做更多。
您的例程将附加到定时器的输出比较中断,您必须将各种PWM输出的值保存在某些易失性变量中。输出比较寄存器将被设置为在下一个切换时唤醒。例程运行时,它将执行切换并设置切换的输出比较寄存器。时序和同步的细节取决于控制器的数据表。
循环功能可以读取输入并调整易失性变量以改变电机速度。
还有一些马达驱动程序可以为您完成所有这些工作。您所要做的就是提供方向和速度,芯片为您创建6个PWM。