我控制一个无刷直流电机与一个逆变器/驱动器IC做开关工作。我需要为驱动器提供6个PWM信号,所有的频率相同。确切的频率并不重要,只要它在5千赫到10千赫之间,所有的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?
提前谢谢。
帕特。
发布于 2014-11-20 11:39:44
您还没有包括您的电机控制器的芯片号码,但我很肯定,您将无法实现您想要的六个不同的定时器。问题是,不同引脚上的PWM必须是同步的,而不是仅仅在适当的时间内切换和关闭。
相反,您应该使用单个定时器,并在正确的同步中切换所有输出。这个页面在“位敲脉宽调制”一节中有一个例子的开始.你必须修改它来切换更多的引脚。
这个例子可能还不够好。相反,您应该使用中断服务例程来切换引脚。这样,PWM更独立地运行,并允许循环功能做更多的工作。
您的例程将连接到计时器上的输出比较中断,并且必须将各种PWM输出的值保存在一些易失性变量中。输出比较寄存器将被设置为为下一个切换唤醒。当例程运行时,它将执行切换并为切换设置输出比较寄存器。时间和同步的细节将取决于您的控制器的数据表。
回路功能可以读取输入和调整易失性变量以改变电机转速。
也有汽车司机为你做这一切。你所要做的就是提供一个方向和速度,芯片为您创建6 PWMs。
https://stackoverflow.com/questions/27030657
复制相似问题