0

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

这是C18 C 编译器库

这是PIC18F87J1 数据表

这是我正在使用的关于 PWM 的代码片段。

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

感谢您的帮助,谢谢!

4

1 回答 1

1

首先,您将函数的参数颠倒过来。Open() 采用小于 256 的 char 值,而 Set() 采用 10 位数字。

也就是说,您选择了给出最低频率的最大值 (255)。正如数据表所解释的,Open() 函数将周期的值作为参数。频率越高,周期越短,反之亦然。

最后,您为什么想要 100% 的占空比?这与使引脚始终为高电平相同。在这种情况下,频率根本无关紧要。只需打开引脚,根本不要使用 PWM。

你还没有说你用这个 PWM 驱动什么,但一般来说,频率太高会导致问题。它会产生无线电干扰、过热等。

您的问题表明您误解了 PWM 的目的以及这些术语的含义,所以这里有一个 tl;dr。

PWM 通过快速将引脚转为高电平和低电平来模拟 0 和 Vcc 之间的电压。模拟电压与 time_high/(time_high + time_low) 成正比。引脚处于 Vcc 的时间百分比称为占空比。(因此 100% 占空比始终开启,提供 Vcc 电压。0% 占空比始终关闭,提供 0 V。)

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

于 2014-05-07T20:27:27.773 回答