产生带中断的 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的主要内容,如果未能解决你的问题,请参考以下文章

stm32 外部中断打断PWM

STC15系列PWM中断控制寄存器介绍以及PWM相关示例

stm32 如何产生秒脉冲中断

怎么解决用stm32 发射2m方波,求大神!!!!!

STM32F4 PWM和中断用同一个定时器

STM32-定时器详解