目录
介绍
脉冲宽度调制(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引脚
NodePU PWM的Arduino功能
analogWrite(pin, dutycycle)
:在指定引脚上启用软件PWM。占空比范围为0到PWM最大范围,默认为1023。
analogWrite(pin, 0)
:禁用指定引脚上的PWM。
analogWriteRange(new_range)
:该功能用于改变PWM范围(占空比)。
analogWriteFreq(new_frequency)
: PWM频率默认为1kHz。调用此功能可以用新频率更改它.PWM频率在1 – 1000Khz范围内。
例
让我们编写一个Arduino程序,在NodeMCU的第6个引脚上设置PWM,并通过连接到NodeMCU的ADC引脚的电位器改变它的占空比。这里我们连接PWM引脚上的LED,以显示PWM变化的效果(LED的亮度)。
使用NodeMCU PWM进行LED亮度控制
用于PWM的Arduino程序
uint8_t LEDpin = D6;
/* By default PWM frequency is 1000Hz and we are using same
for this application hence no need to set */
void setup(){
Serial.begin(9600);
analogWrite(LEDpin, 512); /* set initial 50% duty cycle */
}
余下程序: