全彩LED灯控制原理
全彩 LED 灯, 实质上是一种把红、绿、 蓝单色发光体集成到小面积区域中的 LED 灯,控制时对这三种颜色的灯管输出不同的光照强度,即可混合得到不同的颜色,其混色原理与光的三原色混合原理一致。
例如,若红绿蓝灯都能控制输出光照强度为[0:255]种等级,那么该灯可混合得到使用RGB888 表示的所有颜色(包括以 RGB 三个灯管都全灭所表示的纯黑色)。
RGB 灯就是一种全彩 LED 灯,前面介绍 LED 基本控制原理的时候,只能控制 RGB 三色灯的亮灭, 即 RGB 每盏灯有[0:1]两种等级, 因此只能组合出 8种颜色。
要使用 STM32 控制 LED 灯输出多种亮度等级,可以通过控制输出脉冲的占空比来实现。
示例图中列出了周期相同而占空比分别为 100%、 80%、 50 和 20%的脉冲波形, 假如利用这样的脉冲控制 LED 灯, 即可控制 LED 灯亮灭时间长度的比例。若提高脉冲的频率,LED 灯将会高频率进行开关切换, 由于视觉暂留效应,人眼看不到 LED 灯的开关导致的闪烁现象,而是感觉到使用不同占空比的脉冲控制 LED 灯时的亮度差别。即单个控制周期内,LED 灯亮的平均时间越长,亮度就越高,反之越暗。把脉冲信号占空比分成 256 个等级, 即可用于控制 LED 灯输出 256 种亮度, 使用三种这样的信号控制 RGB 灯即可得到 256256256 种颜色混合的效果。 而要控制占空比,直接使用 STM32 定时器的 PWM 功能即可。
软件设计
控制 RGB 灯的颜色实质就是控制各个 PWM 通道输出脉冲的占空比, 而占空比可以通过设置定时器相应通道的输出比较寄存器值修改,又因为定时器已经把单个控制脉冲周期分成[0:255]份,然后控制时只要把 RGB888 各通道的颜色值直接赋予给输出比较寄存器即可。