首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino Uno在所有PWM引脚上的频率

Arduino Uno在所有PWM引脚上的频率
EN

Stack Overflow用户
提问于 2014-11-20 02:25:02
回答 1查看 2.4K关注 0票数 0

我控制一个无刷直流电机与一个逆变器/驱动器IC做开关工作。我需要为驱动器提供6个PWM信号,所有的频率相同。确切的频率并不重要,只要它在5千赫到10千赫之间,所有的PWM引脚都是一样的。

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

  • 引脚5和6:由timer0控制,基频62500 by
  • 引脚9和10:由timer1控制,基频350 by
  • 引脚11和3:由timer2控制,基频350 by

timer1和timer2可以通过预分频器值8 (7812.5Hz)缩小。不知道如何将timer0调到相同的频率?

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

我相信周围的工作是相对简单的。是否可以将timer0的频率除以一个不是预分频器值的数字,例如40?

提前谢谢。

帕特。

EN

回答 1

Stack Overflow用户

发布于 2014-11-20 11:39:44

您还没有包括您的电机控制器的芯片号码,但我很肯定,您将无法实现您想要的六个不同的定时器。问题是,不同引脚上的PWM必须是同步的,而不是仅仅在适当的时间内切换和关闭。

相反,您应该使用单个定时器,并在正确的同步中切换所有输出。这个页面在“位敲脉宽调制”一节中有一个例子的开始.你必须修改它来切换更多的引脚。

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

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

回路功能可以读取输入和调整易失性变量以改变电机转速。

也有汽车司机为你做这一切。你所要做的就是提供一个方向和速度,芯片为您创建6 PWMs。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27030657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档