PWM是什么?
PWM即脉冲宽度调制(Pulse width modulation,PWM)技术,在单片机中PWM一般可以用来调节,led的亮度的高低,显示屏的亮度的高低,直流电机速度的快慢。PWM是什么?PWM其实是一个方波,我们可以调节方波的频率和占空比,从而达到调节led亮度的效果。
上图是一个方波,周期一样,但是占空比不一样,如果我们将这个方波接到led上即可驱动led的亮度。这是什么原理呢?大家可以看到上面的方波占空比分别为25%、50%、75%。占空比是什么意思就是高电平的时间除上周期,一个周期就是高电平的时间加上低电平的时间,比如占空比为25%就是高电平的时间除上周期的时间。
esp8266的PWM
esp8266没有硬件的PWM模块,不能像STM32的单片机那样配置好定时器之后就可以在IO口输出PWM方波,esp8266是使用高精度的定时器加上软件模拟PWM的方法,所以精度有限,由 FRC1 在软件上实现,可实现同频率、不同占空⽐的多路 PWM,可⽤来控制彩灯、蜂鸣器和电机等设备。
FRC1 是⼀个 23 bits 的硬件定时器。
PWM 的特性如下所示。
使⽤ NMI(Non Maskable Interrupt)中断,更加精确。
可扩展最多 8 路 PWM 信号。
小于14 bit 分辨率,最⼩分辨率 45 ns。
⽆需配置寄存器,调⽤函数接⼝即可完成配置。
PWM的一些基础知识
上图是一个方波,PWM我们关系几个知识点,就是频率,还有占空比。
周期:T = 高电平+低电平的时间。
频率:HZ = 1/T。即是周期的倒数,比如周期为1s,频率就是1HZ,周期为0.5s,周期就是2HZ。
占空比(duty cycle): duty = 高电平T / 周期T。
PWM控制电机速度的原理
MCU的GPIO的电平是3.3V,我们使用MCU输出PWM方波,幅值3.3v的PWM方波经过电机驱动芯片后会将方波放大为12V的PWM方波,12是因为电机驱动的电源就是12V,放大的幅值和电机驱动芯片的电压有关,具体可以参考电机驱动芯片的手册。
为啥需要经过驱动芯片,因为是MCU的IO口的电平只有3.3V,驱动电机的能力有限,所以需要放大到12v。
MCU可以通过修改PWM的duty,就是占空比可以实现调节电机速度的作用,原理是高电平的时候有电机两端有12v的电压,所以电机开始转动,通过调节占空比就是调节12V导通的时间长度,时间越长速度越快,如果占空比为0,电机慢慢的会停止转动,如果占空比为1,那么电机全速转动,占空比为50%,电机以50%的速度进行转动。
,那么电机全速转动,占空比为50%,电机以50%的速度进行转动。