我们已经可以用GPIO控制LED灯一闪一闪亮晶晶了,这样只有亮和灭的状态似乎还是太简单了,能不能对LED的亮度进行调整呢?
当然没问题,这就要用到接下来学习的PWM脉冲宽度调制了。
PWM脉冲宽度调制原理
在GPIO的数字输入和输出模式中,只有高低电平,高电平一般是3.3V或者5V,低电平就是0V,如果我想要一个折中一点的电压怎么办呢?PWM大家了解一下。
PWM,全称是脉冲宽度调制,是一种对模拟信号电平进行数字编码的方法,通过高分辨率计数器,调制出一定占空比的方波,通过这种方式对模拟信号的电平进行编码。
通俗点来说,如果我们有一个10W的灯泡,在一个小时中亮了半个小时,那我们宏观来看,它在这一个小时中的功率就是5W,这样就相当于是它的电压被降低了。而我们还可以通过改变这一个小时中,灯泡被点亮的时长,来等效出不同的电压。
然后,我们把一个小时缩短为很小的一个时间,到达一定的微分程度,表现出来的就是电压的变化,而这个很小的时间,就是PWM频率的倒数,被点亮的时间在这个很小的时间中所占的百分比就叫做占空比。
这里大家也要注意,虽然PWM在尽力呈现出模拟信号的样子,但本质还是数字信号,因为在给定的某一任何时刻,引脚只能高电平或者低电平。
通过PWM技术,可以让数字电路产生类似模拟信号的效果,从而实现类似的无级控制,比如风扇的转速,或者屏幕的亮度,很多都是通过PWM技术实现的调节。
全部0条评论
快来发表一下你的评论吧 !