PWM一般指脉冲宽度调制,通过控制一个周期内高电平的脉冲宽度,可以达到一些想要达到的效果,如控制LED灯的亮度,控制舵机的角度等应用,下面将通过介绍LED灯的渐变讲解PWM的使用。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 PWM的基本参数 pwm的频率: 是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);也就是说一秒钟PWM有多少个周期;单位: Hz pwm的周期: T=1/f;周期=1/频率;50Hz = 20ms(一个周期);如果频率为50Hz ,也就是说一个周期是20ms 那么一秒钟就有 50次PWM周期 占空比: 是一个脉冲周期内,高电平的时间与整个周期时间的比例;单位: % (0%-100%);表示方式:20%
以单片机为例,我们知道,单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平 假设高电平为5V 低电平则为0V 那么我们要输出不同的模拟电压,就要用到PWM,通过改变IO口输出的方波的占空比从而获得使用数字信号模拟成的模拟电压信号 我们知道,电压是以一种连接1或断开0的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压 比方说 占空比为50% 那就是高电平时间一半,低电平时间一半,在一定的频率下,就可以得到模拟的2.5V输出电压 那么75%的占空比 得到的电压就是3.75V pwm的调节作用来源于对“占周期”的宽度控制,“占周期”变宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占周期”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降 也就是,在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压 pwm就是通过这种原理实现D/A转换的。
总结: PWM就是在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压
上手前如果不熟悉PWM波的概念可以先阅读上述关于PWM的知识点普及部分,也可以参考太极创客视频教程,笔者的程序是基于该程序上修改得来的,感谢太极创客的教程。
主程序
/* 通过PWM控制LED亮度
* 目的:该例程为以太网控制舵机的例程
* 作者:Zeeland
* 最后修改时间:2021年11月9日 18:33:34
* https://gitee.com/zeeland/projects
*/
void setup() {
pinMode(9,OUTPUT);
}
void loop() {
for(int i=0;i<255;i++) {
analogWrite(9,i); // 对9引脚输出,占空比 i/255
delay(10);
}
}