产生带中断的 PWM
Posted
技术标签:
【中文标题】产生带中断的 PWM【英文标题】:Generate PWM with interrupts 【发布时间】:2013-04-06 23:41:03 【问题描述】:我正在使用Arduino Mega 2560。我目前遇到的问题是我使用的伺服电机在空闲状态下会发出轻微的噪音。这是因为它不是一个纯粹的信号。如何为微控制器生成带有中断的 PWM?
使用中断是否每次都将计数器放置在完全相同的位置?如果不是,我该如何处理高分辨率伺服?
【问题讨论】:
你能贴一些代码吗? “非纯信号”是什么意思?通常在像这样的系统上,PWM 是由 MCU 生成的,这就是 Arduino 的analogWrite()
所做的:这是一种比 bit-banging 更清洁的方式来获取 PWM 信号,这就是我认为你所指的。
如果你还没有arduino.cc/en/Reference/Servo,你应该使用伺服库@
我想这是一个标准的RC级伺服?如果是这样,应该注意的是,即使你的脉冲是完美的,一些伺服系统在中心空闲时仍然会发出轻微的抖动噪音。有时解决方案是简单地施加少量恒定压力,如弹簧或橡皮筋。有时解决方案是增加或适当地为伺服提供电压。有时您只是忽略它,因为它通常被某些品牌认为是“正常的”。我说的是制造了很多遥控飞机的人。
【参考方案1】:
二进制代码调制 如果您确实需要大量 SoftPWM 通道而没有大量 CPU 开销,则可以使用。漂亮而简单的技术。
http://www.batsocks.co.uk/readme/art_bcm_3.htm https://github.com/zookzook/binary-code-modulation但是,一些专门的伺服库可能是更好的解决方案...
【讨论】:
以上是关于产生带中断的 PWM的主要内容,如果未能解决你的问题,请参考以下文章