孔宪青
(威海职业学院,山东威海 264200)
颜色检测和调色日益受到广泛重视。比较传统的依据经验的调色和检色方法,现代新型传感器可以把颜色转变为数值量输出,直接给上位机进行数值处理,具有多种优势。而TCS230/3200传感器就是这些器件中比较典型的。本文就给出通过TCS230检色在单片机AT89S52平台上具体的实现方法。
TCS230是TAOS公司最新推出的带数字兼容接口的RGB彩色光/频率转换器。该芯片外形见图1左的中间部分,芯片大小为6x6mm的八个脚的芯片。其八个引脚排列见图1右上所示。其原理是通过外部的S2和S3引脚选通阵列中分布排列的红绿蓝三种硅光电二极管阵列中的一种。当相应的光投射进来时,通过透光部分照射到的某种光电二极管阵列,就会有转换的频率输出。外部投射的相应光的强度与频率的输出数量呈线性关系。
图1 TCS230模块及管脚图
TCS230的引脚OUT端输出转换后的频率脉冲,范围为2~500 kHz,用户可通过两个可编程引脚 S0、S1来选择100%、20%或2%的输出比例因子,输出频率的改变以适用不同的外设器件,其选择方法见表1所示。OUT输出为TTL电平,可直接与微处理器或其他逻辑电路连接。输出使能端OE可将输出置于高阻状态。从而使多个器件共享一条微处理器输入线。
通常使用时,尽量在TCS230旁边加4~6个白光LED,这样在检测时候可以使入射光变强,增大相应光的频率输出。图1中,厂商的TCS230已经在器件周围加了四个白光LED。
TCS230与AT89S52连接时,管脚S0、S1选择输出100%频率,OUT管脚链接AT89S52的计数端T1,计数端最高接收500kHz的信号,因此S0、S1管脚和电源的+5V端相连即可。如果只需要一个TCS230器件,那么OE端可直接与GND相连。因此测量一组颜色信息时,TCS230和AT89S52只需要连接三个管脚OUT、S2和S3,如图2。
图2 TCS230与AT89S52连接图
表1 S0、S1和 S2、S3 的组合
程序设计的目标是通过TCS230得到检测色中的红、绿、蓝三基色的组成比例。思路是白平衡基准后,根据白平衡得到的时间再测待测颜色的三基色的频率数。白平衡的原因是,TCS230接收三基色光的灵敏度不同,而且白光中三基色不均衡。简单的白平衡方法如下:在带有白光 LED的TCS230前面放一个白板,距离根据实际测量的颜色的距离而定。通过单片机连接S2、S3端口,依次选通红色、绿色和蓝色滤波器。选通某滤波器后,打开单片机外部计数端T1,分别测得白光下的某色固定的频率值,例如200,在计量频率数的同时,打开AT89S52的定时器。经过三次测量,就得到三个不同的定时器值,这三个时间值就是实际测量时的时间基准,注意这三个时间基准是不相同的。
实际测量时,依次通过S2、S3,再依次选通三色滤波器。TCS230的OUT仍然输出AT89S52的相应的频率数,但测量时间是之前白平衡时保存的三个时间基准。在三个不同的时间下测量,如果还是同样的白光,测量得到的三个值还是200,如果待测颜色是不平衡三基色,那么返回的频率值也会不同(见图3)。即R、G和B三个频率值发生偏差,再根据HSV模型的算法,就可得到颜色种类。
图3 通过AT89S52测量RGB三个值的NS流程图
通过单片机的定时和计数器,得到三基色在某一白平衡下的实际测量的三个返回值,分别是R、G和B的值。三个数无法判断所测是哪种某种颜色,需要引入HSV六棱锥颜色模型(见图4),这个模型把三个值转换为一个值来进行颜色判断。图中的H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,即为白光,只有灰度。
通过这个模型可以看出,通过RGB计算出S值,可以判断颜色的均衡值,这个均衡值的大小根据实际而定,可进一步判断灰度。如果判断为不均衡,就把RGB转换角度。通过图4可以看出,红绿蓝分别间隔120度,在他们的混合区段分别是黄青紫。下面就是依据此模型生成的可直接调用的判读六种颜色的KeilC51函数。
图4 HSV六棱锥颜色模型
以上颜色判断只有三种基本色和三种混合色。可先用鲁大师屏幕坏点检测工具点亮LCD显示屏幕来确定标准色的角度范围,再根据实际测量颜色的环境来调整单色的范围。如果要检测更多的颜色,需要调整范围同时提高传感器的抗干扰性都是必要的。
TCS230检测颜色时要注意干扰,尽量将传感器和待检颜色密闭。有些TCS230传感器上不带白光LED,建议在传感器周围加一圈,以提高可靠性和抗扰能力。白平衡是检测颜色前必须的,当改变环境时要重新进行。在AT89S52上驱动TCS230时,需要两个定时器,而且还有中断,因此建议用AT89S2052专门驱动TCS230。
本文从TCS230硬件出发,介绍了颜色处理的相关知识,其中要点是HSV数学模型把三维数据处理成一维进行判断,为类似的数据处理提供了参考。
[1]张松灿,肖本贤.高分辨率颜色传感器TCS230的原理和应用[J].单片机与嵌入式系统应用,2005,3:44-46.