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