韦东山Linux嵌入式课程社区
直播中

张小林

7年用户 182经验值
私信 关注

请问pwm是怎么实现呼吸灯的

今天面试被问到pwm实现呼吸灯的效果,发现ARM新一期的视频老师讲的定时器这部分就讲了定时器中断,这些基本概念什么的讲的很少,哪位大哥教教我pwm是干嘛用的???

回帖(1)

王蔚

2019-4-30 14:20:21
对于灯,电流越大,灯就越亮。现在灯固定不变,也就电阻不变,I=U/R,即电压越大,灯就会越亮。

所以,现在就得控制单片机输出不同的电压,原理如图:


在一个固定的时间里,单片机引脚 不断的进行高低电平的切换,其中高电平所占用的时间越多,电压也就会越大。
比如第一个,高低电平均匀的各占一半,总的是5V,一半就2.5V,这是微观分析,宏观的来看。
第二个高电平占的时间比低电平多,电压就是高于2.5V。

也就说,我们现在可以控制电压在0到5V之间任意一个值,也就可以控制亮的亮度了。

然后再在定时器里设置每次更亮一点或者更暗一点,宏观的来看就是一个递增或者递减亮度的过程,就像呼吸一样。

控制高低电平各自占据的多少,叫PWN(Pulse-width modulation)的中文名是脉冲宽度调制。
可以用过自己写程序控制常规的GPIO来实现,也可以直接使用单片机的PWM引脚,设置好寄存器后就自动输出指定大小的“电压”。
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分