关注且发送"001"即可获取完整全文内容;
一、序言
如果想要驱动一个三基色LED灯亮出不同的颜色,只需要控制三路PWM的输出即可实现。但是如何控制三路的输出使三基色LED灯亮出我们想要得到的理想目标颜色并且只有很小的色差就没有那么简单了。本文将介绍一种基于色坐标的三基色LED调光算法。
二、传统调光算法
传统采用的调光方式就很简单,由于三基色的R值、G值和B值的范围均为0-255,在忽略调节精度时,将三路PWM的周期值均设置为256,PWM的开始值设置为0,那么PWM的结束值可取的范围就是三基色的范围0-255,这样就实现了一一对应。这种实现方式就忽略了三基色LED中R灯、G灯、B灯的电流等差异。实际中三基色LED中的R灯、G灯以及B灯的电流等差异还是蛮大的,特别是R灯,所以使用这种方式实现的调光虽然肉眼很难分辨出来,但是当使用仪器(比如积分球)来测量时会发现,与目标颜色相差甚多。因此这种调光方式只适用于对色差没什么要求的产品,而那些对色差要求很高的产品则不能采用这种调光方式。
三、基于色坐标的调光算法
对色差要求比较高的产品,在产品测试时都会对其色差进行标定。如果采用上述传统调光算法,那么最后的色差标定结果一定不会满足测试要求,和理想色差值会有很大的偏差,所以本文介绍一种基于色坐标的调光算法,使色差更接近理想色差值。色坐标也就是颜色的坐标。常用的颜色坐标,横轴为x,纵轴为y。有了色坐标,可以在色度图上确定一个点。这个点精确表示了发光颜色。即:色坐标精确表示了颜色。一般会用色温来大概表示照明光源的发光颜色,即色坐标。
色彩的坐标系即表色系,国际上色彩的定量表述有很多方法,本文的算法仅仅会涉及到RGB表色系、XYZ表色系以及CIExyY色度图(Yxy表色系)这三种,各色系之间在一定条件下是可以转换的。
- RGB表色系:
三原色可以合成包括单色光在内的所有的颜色。不同的待配色光达到匹配时三原色光亮度不同,用颜色方程C = R(R)+ G(G)+ B(B),其中(R)、(G)、(B)代表产生混合色的红、绿、蓝三原色的单位量,R、G、B分别为匹配待配色所需要的红、绿、蓝三原色的数量,称为三刺激值。把等能量的单色光,用三刺激值分别求出各自在RGB三维空间的坐标,得到CIE1931xy色度图。 - XYZ表色系:
CIE在RGB表色系基础上,改用三个假想的原色XYZ建立了一个新的色度系统,将它匹配等能光谱的三刺激值,定名为CIE1931标准色度观察者光谱三刺激值,简称XYZ表色系。 - CIExyY色度图(Yxy表色系):
XYZ表色系经过变换,色度坐标均为正值,XY坐标进行归一化处理,可得x-y色度坐标,又称CIExyY色度图,其中Y轴用于表示亮度。CIExyY色度图的建立给定量分析颜色创造了条件。
色坐标之间的转换公式如下所示:
接下来就是具体调光算法的实现,实现该算法之前需要获取如下一些数据:
- 用积分球或其他测量仪器分别测量光源R、G、B满电流工作下的Y、x、y值(不同规格、不同生产批次以及不同厂家的三色灯测量出来的数值均可能不同),假设测量出的数据如下所示:(Y值为光通量,分别为Yr、Yg、Yb)
- 提供标准白光的xy值,而Y值(光通量)作为参数进行传入,但是不能大于Yr、Yg、Yb三者之和,假设给定白光的xy值如下所示:(提供的白光值作为后续计算的参考值)
根据色度学原理,两种颜色相加产生的第三种颜色总是在连接两种颜色的直线上,如下图所示。
上图中,R、G、B分别表示为红光、绿光、蓝光在CIEx-y色品图上的位置。红光和蓝光进行混合可以得到中间色P,P在R、B连线上的具体位置将由R和B的混合比例决定。同理可在利用中间色P与绿光混合出目标色M。因此三角形RGB内所包含的颜色都可以通过控制R、G、B的不同比例混合实现。
当驱动RGB的三通道PWM占空比成倍数线性变化时,会发现其色品坐标基本不发生改变,而光通量相应地线性变化,所以可以近似认为光通量与占空比成正比例函数关系,所以如下所示:
根据加混色原理和色坐标之间的转换关系,占空比分别为Dr、Dg、Db时,光源R、G、B混光后的色品坐标满足如下所示:
在PWM调光下,占空比是控制色品坐标的唯一因素。若期望的光通量为Ym,期望的色品坐标为(x,y),将PWM的占空比当作未知数,则三通道的占空比可结合上述两个算式进行求得:
将之前测量的电源R、G、B的满电流Y、x、y值以及预期得到的Ym、x、y值带入上式中即可求得PWM占空比。
下面将会介绍整个算法流程:
- 提供的标准白光的xy值作为参考依据,而最大的光通量值(即Y值)则作为参数进行传入,算法中会根据这一组标准白光的Yxy值计算出一组R、G、B的标准参考值,这一组标准参考值在后续计算中会用到;
- 假设要在RGB三色灯上面显示RGB值为(Rx、Gx、Bx)的颜色,首先要将这一组RGB值经过一系列的色坐标转换,转换成Yxy值(RGB值→XYZ值→Yxy值,其中包含两个转换过程,所以需要依次调用两个接口完成转换);
- 将转换后的期望Yxy值以及之前测量的电源R、G、B的满电流Y、x、y值带入上述算法公式即可求得当前需要输出的三通道PWM占空比;
- 最后将上述计算出来的PWM占空比进行对应更新并输出即可。
最后经过此算法校准过的三色灯,最终显示的颜色产生的色差误差基本可以忽略不计。
“如果你喜欢这篇文章,请关注我们,未来还有更多精彩等着你。”