文章目录:
一、先看百度百科给出的定义及原理
二、一图看懂PWM脉宽调制原理
三、Arduino中PWM脉宽调制信号的使用
脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。
脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等但宽度不一致的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
对于上述文字读起来的确专业但更晦涩难懂,因此我们通过下文来了解其基本原理;
上图为给端口分别输出高电平及低电平时的波形,其分别恒定在高低两个电平不会发生变化,且输出电压也分别恒定在5V与0V,但如果想输出中间数值的电压,则需要进行PWM脉宽调制。
如上图所示,每两条蓝色虚线之间为一个周期,通过调节一个周期内高低电平的占比从而可以得到不同的输出电压,此时高电平所占一个周期的比例,称之为“占空比”。
比如占空比为75%时,则可以输出3.75V的电压——即5V * 75%;
比如占空比为20%时,则输出1V的电压——即5V * 20%。
观察arduino板中数字信号区域(DIGITAL),其中3、5、6、9、10、11号端口后都带有“~”符号,也就表示这几个端口都可以输出PWM信号,使用方法也很简单:
通过LED发光二极管的亮度控制来演示PWM信号的使用:
void setup()
{
pinMode(3,OUTPUT);
pinMode(4,OUTPUT); //设置3、4号端口为输出
digitalWrite(4, LOW); //设置4号端口为低电平
}
void loop()
{
analogWrite(3, 0); //亮度最暗
delay(1000); //延时1000毫秒
analogWrite(3, 100); //逐渐变亮
delay(1000); //延时1000毫秒
analogWrite(3, 200); //逐渐变亮
delay(1000); //延时1000毫秒
analogWrite(3, 255); //亮度最亮
}
观察上述程序,其可实现LED发光二极管不同亮度的变化,并注意PWM信号范围为0~255,即0为最低电平,255为最高电平,其中间的数值则按照比例进行转换成相应的电平。
除了可以使用PWM脉宽调制信号来控制LED发光二极管的亮度外,也可用于控制风扇的转速等。
关于PWM脉宽调制信号的具体实例可参考文章——Arduino项目式编程教学第二章——呼吸灯