1.5 PWM呼吸灯

PWM 波

Pasted image 20260627164106

脉宽调制(Pulse Width Modulation, PWM)

他本质上是一种方波, 具有如下属性

  • 周期: 一个周期所占用的时间, 图上是 4e-3s
  • 频率: 周期的倒数, 也就是一秒钟有多少个完整的周期, 图上是 250Hz(1 / 4e-3)
  • 占空比: 高电平持续时间占一周期的比值, 这里是 25%(1/4)
  • 电平(类似振幅?): 高低电平的电压差(我们这里的是 3.3v)

PWM 波在 TIM 定时器中的形成方式

首先TIM定时器会将输入频率根据PSC进行预分频为定时器主频, 之后以向上计数为例, CNT 从 0 增加到 ARR

我们引入一个新的量为比较值(Capture Compare Register, CCR), 然后我们在代码中设定: 当 CNT < CCR 的时候输出一种电平, CNT > CCR 的时候输出另一种电平

Pasted image 20260701001512

如上图所示⬆️, 这样我们还可以确定这个 PWM 波的占空比了


呼吸灯

人眼在超过60Hz 的灯光变化会产生视觉暂留现象

依照上面的图片, 占空比是描述电平 1 的时间所占一周期总时间的比值

我们使用高频的 PWM 波 - 如果这个波的占空比越大, 比如占空比为 80%, 我们人眼观察到的灯光是较亮的(因为 电平 1 的比值大, 亮着的时间长) - 如果这个波的占空比较小, 我们人眼看到的灯光是较暗的

现在我们知道, 我们可以通过改变PWM 波的占空比来调节灯的亮度, 那么我们如何实现呼吸灯呢?

答案就是我们动态的去调节 PWM 波的占空比, 也就是说动态的去改变 CCR 的值, 当变化 CCR 的时间间隔足够小, 就会产生视觉暂留效应, 于是觉得灯是连续变化的(亮度是连续的, 亮度的变化也是连续的) 可以发现, 如果我的占空比一开始是 10% , 此时是较暗的, 然后占空比慢慢提高, 灯慢慢变亮, 最后占空比达到 100% 灯最亮. 这样就实现了呼吸灯


硬件电路连接

Pasted image 20260701004853