目录
介绍
脉冲宽度调制(PWM)是一种在保持波的频率恒定的同时改变脉冲宽度的技术。
LED PWM
PWM生成
脉冲周期包括ON周期(VCC)和OFF周期(GND)。在一段时间内信号导通的分数称为占空比。
例如,周期为10ms的脉冲将保持ON(高电平)2ms。因此,占空比将为
D = 2ms / 10ms = 20%
通过PWM技术,我们可以使用ON-OFF信号控制输送到负载的功率。PWM信号可用于控制直流电机的速度和改变LED的强度。此外,它还可用于生成正弦信号。脉冲宽度具有不同占空比的调制信号如下所示。
PWM占空比
基于NodeMCU的ESP8266通过软件编程具有PWM接口的功能。它是通过定时器中断方法实现的。ESP8266的PWM频率范围可调至1KHz。
NodeMCU PWM引脚
NodeMCU PWM功能
让我们看看用于在NodeMCU Dev Kit上设置PWM的PWM功能。请注意,PWM功能仅适用于NodeMCU Dev Kit上图所示的引脚。
pwm.close()
该功能用于退出/关闭指定GPIO引脚的PWM模式。
句法:
pwm.close(pin)
参数:
- pin:引脚 1至12(9,10,11除外)
返回: null
pwm.getclock()
该功能用于在指定引脚上运行PWM时钟(频率)。
句法:
pwm.getclock(pin)
参数:
- pin:引脚 1至12(9,10,11除外)
返回:返回引脚的PWM频率。
pwm.getduty()
该功能用于在指定引脚上获得PWM占空比。
句法:
pwm.getduty(pin)
参数:
- pin:引脚1至12(9,10,11除外)
返回:返回引脚的占空比。最大值是1023
pwm.setclock()
该功能用于设定指定引脚的PWM频率。
请注意,任何引脚的PWM频率设置都适用于所有其他PWM引脚(如果这些引脚也用作PWM)。所有PWM引脚只允许一个PWM频率。
句法:
pwm.setclock(pin, clock)
参数:
- pin:别针 1至12(9,10,11除外)
- clock: PWM频率在1~1000之间。
返回: null
pwm.setduty()
该功能用于设置指定引脚的占空比。
句法:
pwm.setduty(pin, duty)
参数:
- pin:别针 1至12(9,10,11除外)
- duty: PWM占空比介于0~1023(10bit)之间。
返回: null
pwm.setup()
该功能用于将PWM模式设置为具有频率和占空比的指定引脚。
句法:
pwm.setup(pin, clock, duty)
参数:
pin:引脚 1至12(9,10,11除外)
duty: PWM占空比介于0~1023(10bit)之间。
clock: PWM频率在1~1000之间。
返回: null
pwm.start()
该功能用于在指定引脚上启动PWM。
句法:
pwm.start(pin)
参数:
- pin:引脚1至12(9,10,11除外)
返回: null
pwm.stop()
该功能用于停止指定引脚的输出PWM波形。
句法:
pwm.start(pin)
参数:
pin
: 引脚 1至12(9,10,11除外)
返回: null
例
让我们写一个Lua脚本,在NodeMCU的第6个引脚上设置PWM,并通过连接到NodeMCU的ADC引脚的电位器改变其占空比。在这里,我们连接PWM引脚上的LED,以显示PWM变化的效果(LED的亮度)。
通过PWM控制LED亮度
用于PWM的Lua脚本
本教程完整程序下载: