如何实现更高的PWM频率?

时间:2014-05-07 16:47:45

标签: embedded microcontroller pic microchip pwm

我正在使用C18编译器提供的库来打开和设置PWM使用的占空比。我注意到100%占空比可以获得的最大PWM频率约为13.5 KHz。占空比越低,PWM频率越高。如何在100%占空比的情况下实现更高的PWM频率?是否有可能至少超过13.5 KHz?我无法弄清楚我错过了什么,也许有人可以在这里帮忙,我正在使用PIC18F87J1。

以下是C18 C Compiler Libraries

这是PIC18F87J1 datasheet

以下是我使用的关于PWM的代码片段。

 TRISCbits.TRISC1 = 0;
 OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
 OpenPWM2(0x03ff);
 SetDCPWM2(255);

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您可以反转功能的参数。 Open()获取小于256的char值,Set()占用10位数。

那就是说,你选择了最大的值(255),它给出了最低的频率。正如数据表所述,Open()函数将周期值作为参数。较高的频率相当于较短的时间段,反之亦然。

最后,为什么你想要一个100%的工作周期?这与引脚始终很高相同。在这种情况下,频率根本不重要。只需打开引脚即可完全不使用PWM。

你还没有说过用这种PWM驱动你的东西,但一般来说,频率太高会引起问题。它会产生无线电干扰,过热等现象。

你的问题表明你误解了PWM的目的以及术语的含义,所以这里是tl;博士。

PWM通过快速将引脚高电平和低电平来模拟0到Vcc之间的电压。模拟电压与time_high /(time_high + time_low)成比例。引脚处于Vcc的时间百分比称为占空比。 (因此,100%的占空比总是打开,给Vcc伏特.0%占空比总是关闭,给0伏。)

此开/关周期重复的速率称为PWM频率。如果频率太小(周期太长),负载将看到引脚电压波动。目标是以足够快的速度运行PWM以平滑负载所看到的电压,但不会导致其他问题。可用频率适用于大多数应用。另请注意,将频率设置为高(周期较小)也会降低占空比的准确性。数据表中对此进行了解释。原因基本上是占空比必须最终转换为时钟节拍而不是时钟节拍。频率越快,在每个周期中划分时钟周期的方法就越少。