您的位置 首页 > 数码极客

如何用软件30路PWM

我们知道STM32 的定时器可以设置捕获比较模式,产生 pwm波, 这是个非常帅气的功能。 有时候在我们使用一部分芯片里面, 可能也没有包含此功能。 那怎么办呢?那肯定需要自己通过软件来实现了。 所以我们就介绍一下, 关于利用软件算法, 来产生一个 PWM 波。

pwm原理

百度百科上的解释我们就不看了,我们看点实在的。PWM 英文全拼为 “ PulseWidth Modulation” 即脉冲宽度调制。 有时间可以看看自动控制原理这本书,上面有深入的剖析。可能好多书上都有介绍,可能是本人是自动化专业出生的,对自动控制原理这个书就比较熟。 对于 PWM 波形原理, 都是从比较复杂的采样控制原理里面推导出来的,即“冲量相等而形状不同的窄脉冲加在具有惯性的环节上时, 其效果基本相同。 ” 冲量指窄脉冲的面积; 效果基本相同, 是指环节的输出响应波形基本相同。看下图, 我们可以知道,不管是第一张里面的方波, 第二张里面的三角波, 第三张里面的正弦, 以及第四张里面的脉冲, 只要其面积相等, 那么如果其以一种惯性环节输出( 可以简单地理解成系统输出具有一个储能元件) , 这四张图的波形相应基本相同。

我们可以简单地以 SPWM 技术为例。脉冲宽度按正弦规律变化而和正弦波等效的 PWM 波形, 要改变等效输出正弦波幅值, 按同一比例改变各脉冲宽度即可。我们假设 PWM 的每个方波的幅度相同, 并且正弦波被分割成相同的等份, 那因此, 只需要让每一份的正弦波面积, 等于方波面积, 那其效果就相同了。 因此只要让方波的时间进行改变,即可以改变输出的电压幅度了。 因此我们将正弦波推广到直流电压里面, 如果我们要将直流电压降低 n 倍, 只需要让方波的占空比为 1/n 即可。 这就是 PWM 的原理。

自己动手写 PWM 的程序

首先, 我们来概括一下 PWM 的两个最基本的要素, 第一个要素, 即为 PWM的频率, 第二个要素, 即为 PWM 的占空比。 如图 65 所示。 我们将 T 的倒数,称为 PWM 波的频率, t1 与 T 的比值, 称为 PWM 波的占空比。

接着, 我们来编写一个函数, 这个函数的作用即是来输出 PWM 波的频率。同样的, 我们利用基本定时器 T2 来产生一个基础最小频率, 为了方便计算, 我们在这里将这个最小的频率设置为 100kHz。

我们来分析一下这个波形, 由于它是一个 100K 的方波, 因此, 我们可以知道, 定时器在 1s 内中断了 200k 次。 假设我们的占空比变化率在 0-100% 内任意可调, 因此我们可以将没 100 次中断作为一个基准, 所以在我们这个基础上面可以将 PWM 波的频率设置成 2K。最后, 我们 PWM 波的基本思路就是, 定义一个变量作为“ 占”( 即高电平)的时间, 随后我们可以得到“空” ( 即低电平) 时间就是 100-“ 占” 的时间。 以上就是 PWM 波的大致思路。

看一下波形:

这做一个呼吸灯是不是分分钟的事了。

更多的内容请关注头条号:小5嵌入式

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何用软件30路PWM”边界阅读