孔憲青
(威海職業(yè)學(xué)院,山東威海 264200)
顏色檢測(cè)和調(diào)色日益受到廣泛重視。比較傳統(tǒng)的依據(jù)經(jīng)驗(yàn)的調(diào)色和檢色方法,現(xiàn)代新型傳感器可以把顏色轉(zhuǎn)變?yōu)閿?shù)值量輸出,直接給上位機(jī)進(jìn)行數(shù)值處理,具有多種優(yōu)勢(shì)。而TCS230/3200傳感器就是這些器件中比較典型的。本文就給出通過TCS230檢色在單片機(jī)AT89S52平臺(tái)上具體的實(shí)現(xiàn)方法。
TCS230是TAOS公司最新推出的帶數(shù)字兼容接口的RGB彩色光/頻率轉(zhuǎn)換器。該芯片外形見圖1左的中間部分,芯片大小為6x6mm的八個(gè)腳的芯片。其八個(gè)引腳排列見圖1右上所示。其原理是通過外部的S2和S3引腳選通陣列中分布排列的紅綠藍(lán)三種硅光電二極管陣列中的一種。當(dāng)相應(yīng)的光投射進(jìn)來時(shí),通過透光部分照射到的某種光電二極管陣列,就會(huì)有轉(zhuǎn)換的頻率輸出。外部投射的相應(yīng)光的強(qiáng)度與頻率的輸出數(shù)量呈線性關(guān)系。
圖1 TCS230模塊及管腳圖
TCS230的引腳OUT端輸出轉(zhuǎn)換后的頻率脈沖,范圍為2~500 kHz,用戶可通過兩個(gè)可編程引腳 S0、S1來選擇100%、20%或2%的輸出比例因子,輸出頻率的改變以適用不同的外設(shè)器件,其選擇方法見表1所示。OUT輸出為TTL電平,可直接與微處理器或其他邏輯電路連接。輸出使能端OE可將輸出置于高阻狀態(tài)。從而使多個(gè)器件共享一條微處理器輸入線。
通常使用時(shí),盡量在TCS230旁邊加4~6個(gè)白光LED,這樣在檢測(cè)時(shí)候可以使入射光變強(qiáng),增大相應(yīng)光的頻率輸出。圖1中,廠商的TCS230已經(jīng)在器件周圍加了四個(gè)白光LED。
TCS230與AT89S52連接時(shí),管腳S0、S1選擇輸出100%頻率,OUT管腳鏈接AT89S52的計(jì)數(shù)端T1,計(jì)數(shù)端最高接收500kHz的信號(hào),因此S0、S1管腳和電源的+5V端相連即可。如果只需要一個(gè)TCS230器件,那么OE端可直接與GND相連。因此測(cè)量一組顏色信息時(shí),TCS230和AT89S52只需要連接三個(gè)管腳OUT、S2和S3,如圖2。
圖2 TCS230與AT89S52連接圖
表1 S0、S1和 S2、S3 的組合
程序設(shè)計(jì)的目標(biāo)是通過TCS230得到檢測(cè)色中的紅、綠、藍(lán)三基色的組成比例。思路是白平衡基準(zhǔn)后,根據(jù)白平衡得到的時(shí)間再測(cè)待測(cè)顏色的三基色的頻率數(shù)。白平衡的原因是,TCS230接收三基色光的靈敏度不同,而且白光中三基色不均衡。簡(jiǎn)單的白平衡方法如下:在帶有白光 LED的TCS230前面放一個(gè)白板,距離根據(jù)實(shí)際測(cè)量的顏色的距離而定。通過單片機(jī)連接S2、S3端口,依次選通紅色、綠色和藍(lán)色濾波器。選通某濾波器后,打開單片機(jī)外部計(jì)數(shù)端T1,分別測(cè)得白光下的某色固定的頻率值,例如200,在計(jì)量頻率數(shù)的同時(shí),打開AT89S52的定時(shí)器。經(jīng)過三次測(cè)量,就得到三個(gè)不同的定時(shí)器值,這三個(gè)時(shí)間值就是實(shí)際測(cè)量時(shí)的時(shí)間基準(zhǔn),注意這三個(gè)時(shí)間基準(zhǔn)是不相同的。
實(shí)際測(cè)量時(shí),依次通過S2、S3,再依次選通三色濾波器。TCS230的OUT仍然輸出AT89S52的相應(yīng)的頻率數(shù),但測(cè)量時(shí)間是之前白平衡時(shí)保存的三個(gè)時(shí)間基準(zhǔn)。在三個(gè)不同的時(shí)間下測(cè)量,如果還是同樣的白光,測(cè)量得到的三個(gè)值還是200,如果待測(cè)顏色是不平衡三基色,那么返回的頻率值也會(huì)不同(見圖3)。即R、G和B三個(gè)頻率值發(fā)生偏差,再根據(jù)HSV模型的算法,就可得到顏色種類。
圖3 通過AT89S52測(cè)量RGB三個(gè)值的NS流程圖
通過單片機(jī)的定時(shí)和計(jì)數(shù)器,得到三基色在某一白平衡下的實(shí)際測(cè)量的三個(gè)返回值,分別是R、G和B的值。三個(gè)數(shù)無(wú)法判斷所測(cè)是哪種某種顏色,需要引入HSV六棱錐顏色模型(見圖4),這個(gè)模型把三個(gè)值轉(zhuǎn)換為一個(gè)值來進(jìn)行顏色判斷。圖中的H參數(shù)表示色彩信息,即所處的光譜顏色的位置。該參數(shù)用一角度量來表示,紅、綠、藍(lán)分別相隔120度。純度S為一比例值,范圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率。S=0時(shí),即為白光,只有灰度。
通過這個(gè)模型可以看出,通過RGB計(jì)算出S值,可以判斷顏色的均衡值,這個(gè)均衡值的大小根據(jù)實(shí)際而定,可進(jìn)一步判斷灰度。如果判斷為不均衡,就把RGB轉(zhuǎn)換角度。通過圖4可以看出,紅綠藍(lán)分別間隔120度,在他們的混合區(qū)段分別是黃青紫。下面就是依據(jù)此模型生成的可直接調(diào)用的判讀六種顏色的KeilC51函數(shù)。
圖4 HSV六棱錐顏色模型
以上顏色判斷只有三種基本色和三種混合色。可先用魯大師屏幕壞點(diǎn)檢測(cè)工具點(diǎn)亮LCD顯示屏幕來確定標(biāo)準(zhǔn)色的角度范圍,再根據(jù)實(shí)際測(cè)量顏色的環(huán)境來調(diào)整單色的范圍。如果要檢測(cè)更多的顏色,需要調(diào)整范圍同時(shí)提高傳感器的抗干擾性都是必要的。
TCS230檢測(cè)顏色時(shí)要注意干擾,盡量將傳感器和待檢顏色密閉。有些TCS230傳感器上不帶白光LED,建議在傳感器周圍加一圈,以提高可靠性和抗擾能力。白平衡是檢測(cè)顏色前必須的,當(dāng)改變環(huán)境時(shí)要重新進(jìn)行。在AT89S52上驅(qū)動(dòng)TCS230時(shí),需要兩個(gè)定時(shí)器,而且還有中斷,因此建議用AT89S2052專門驅(qū)動(dòng)TCS230。
本文從TCS230硬件出發(fā),介紹了顏色處理的相關(guān)知識(shí),其中要點(diǎn)是HSV數(shù)學(xué)模型把三維數(shù)據(jù)處理成一維進(jìn)行判斷,為類似的數(shù)據(jù)處理提供了參考。
[1]張松燦,肖本賢.高分辨率顏色傳感器TCS230的原理和應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,3:44-46.