1. PWM概念
脉冲宽度调制(英语:Pulse-width modulation,缩写:PWM),简称脉宽调制, 是将模拟信号转换为脉冲的一种技术,
一般转换后脉冲的周期固定,但脉冲的工作周期会依模拟信号的大小而改变。
PWM涉及到两个重要的概念频率
和占空比
-
频率 Frequency (freq)
PWM完成一个周期的速度,如100Hz即是每秒100个周期。理解为PWM在高低态电平之间切换的速度。ESP8266的频率范围为
0 < freq < 78125
-
占空比 Duty Cycle (duty)
表示在一个周期内,工作时间与总时间的比值。对应到引脚电路中,即是信号位于高状态的时间量占完成一个周期所花费的总时间的百分比。
较低的占空比对应于较低的功率,因为电源大多数时间是关闭的。ESP8266的duty取值范围为
0 <= duty <= 1023
下面这一张就能很好的理解周期和占空比的概念。
2. 通俗理解
从电路知识方面来通俗理解,PWM其实就是把直流电逆变为交流电,频率决定交流电的切换周期、占空比其实就是控制输出电压。都已经输出可调的电压了,那么用来控制电机转速、控制LED灯亮度、控制蜂鸣器音量大小就比较容易理解了嘛。
占空比为100%时,其实就是一直输出高电平,那输出电压就等于输入直流电压,占空比为50%可以认为输出一半的电压。
PWM输出来不是那种标准交流电的正弦波形,而且一种模拟出来的脉冲波形,通过改变占空比就能近似模拟出正弦波的效果,比如依葫芦画瓢法(SPWM)
原理不过多解释了,知道那么回事儿就得了
3. 使用方法
声明PWM引脚时需要指定使用的GPIO引脚和对应的频率、占空比参数,也可以声明后再变更频率和占空比
from machine import Pin,PWM
pwm = PWM(Pin(15, Pin.OUT