嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

PWM控制在Arduino中的应用实例:LED亮度调节

PWM(Pulse Width Modulation),一般指脉冲宽度调节,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

对于PWN,如果你已经有了一定的了解和认知,那可以看一下接下来我要向大家展示的使用Arduino和PWM控制完成的两个小作品,大家有兴趣的话也可以自己动手尝试一下。

  • PWM调节LED亮度

在这一个应用中,通过控制两个开关,一个可以增加LED的亮度,一个反之是减小亮度,通过一个很简单地对LED的PWM信号写入,即可以改变其亮度并显示出来。需要注意的是,在Arduino中,PWM的范围为0-255,如需更大的信号输出,则可以在之后加上相应的放大装置。

所需硬件

2343_46e4e002e43ad121d37871c049a392c29ef97afd.jpg

电路图

6781_c12d9f733f0043fef3cd507c0bac8d10f7ba9363.jpg

图1:开关控制LED电路实物图

源代码

3451_c3f0905db8ea9b28aa290b1d3a6f31e0849ba33f.jpg

  • PWM控制马达转速

这一项应用我之前有在循迹小车的设计中使用过,其实原理十分简单。首先通过传感器感应线的方位,输入低平或高平的数字信号。之后,在不同的传感器所感应的不同道路的情况下,通过对马达的驱动模块进行编程,实现PWM模拟信号输出,即可以控制两边马达的不同转速,达到直行或转弯的目的。

下面是之前测试中的一个片段:

这是整个程序代码中关于PWM的一小段,大家可以进行一下参考:

2_98f1655d4815a1f1cdd1284f7619ba983f04f25b.jpg

这就是两个很有趣的实例了,但是如果你对它们很感兴趣但是苦于一些PWM的原理知识的话,不妨再往下看看吧!我将从背景,原理两方面向大家介绍一下更全面的PWM知识。

u1980719105%2C1073747117fm26gp02_303580924660ed8f6cc23774b3a477ab6b047f2d.jpg

图2: 通过模拟电流控制的音量旋钮

背景介绍[1]

PWM技术的出现是和电子技术密不可分的,其中,脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。

模拟电压和电流可直接用来进行控制,如对汽车收音机的音量进行控制。在简单的模拟收音机中,音量旋钮被连接到一个可变电阻。拧动旋钮时,电阻值变大或变小;流经这个电阻的电流也随之增加或减少,从而改变了驱动扬声器的电流值,使音量相应变大或变小。与收音机一样,模拟电路的输出与输入成线性比例。

通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。

基本原理

脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。

 1_6ad9e6ecd185bf89fd71add981c28ca74d2b7546.jpg

图3:由控制PWM恢复出的正弦信号[3]

就像图3中我们所看到的,原始的输入波形是蓝色的PWM脉冲信号,输出的信号是相对比较粗糙的类似正弦波的波形。而当这些信号的频率得以增加之后,我们就会看到所得到的正弦波行趋于平滑。

那么在实际应用中,PWM是如何工作的呢?PWM是用占空比(duty cycle)不同的方波,来模拟“模拟输出”的一种方式。所谓占空比,就是指高电平占周期的百分比,描述了高电平在这个脉冲中的占有率,占空比与频率没有直接关系。下图介绍了一些各种情况下占空比

1232_995db1014dbf8a5b15261379134026d9a4efeecb.jpg

图4:不同占空比所代表的不同波形

说得更明白一点,电脑输出的信号是数字信号,只有0和1,就像上图中显示的一样,但是如果我们需要一个模拟信号怎么办呢,那么输入一个方波信号再取有效值就可以了,要注意的,上图中所有的方波信号的频率都相同,只是有着不同的占空比,而所产生的有效值也是不同的,例如在50% duty cycle的情况下,输出的有效模拟数值为0.5,很现在100%的占空比就可以达到1的有效输出值。再这之后再通过普通的RC或者LC电路即可获得较为完整的模拟信号。

总结

PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。[1]

对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。

总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。

参考链接:

[1]: https://baike.baidu.com

[2]: http://www.diy-robots.com/?p=814

[3]: https://en.wikipedia.org/wiki/Pulse-width_modulation

Hello, world! this is Catherine from DesignSpark family. when I joined the DS community she was just 2 years old, but now 10! I learn a lot from the community and made many friends here. Was a Electrical designer, I love any new funny technology, enjoy to discuss the ideas with friends. Even a little spark maybe change the world, do you believe? come and join, just do it!