找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22964|回復(fù): 1
收起左側(cè)

TCS230顏色識別(c51單片機(jī))帶白平衡源程序與資料

[復(fù)制鏈接]
ID:383374 發(fā)表于 2018-12-7 18:27 | 顯示全部樓層 |閱讀模式
0.png

0.png 0.png 0.png 0.png 0.png

1 .TCS230芯片的結(jié)構(gòu)框圖與特點(diǎn):
TCS230是TAOS公司推出的可編程彩色光到頻率的轉(zhuǎn)換器,它把可配置的硅光電二極管與電流頻率轉(zhuǎn)換器集成在一個單一的CMOS電路上,同時在單一芯片上集成了紅綠藍(lán)(RGB)三種濾光器,是業(yè)界第一個有數(shù)字兼容接口的RGB彩色傳感器,TCS230的輸出信號是數(shù)字量,可以驅(qū)動標(biāo)準(zhǔn)的TTL或CMOS邏輯輸入,因此可直接與微處理器或其他邏輯電路相連接,由于輸出的是數(shù)字量,并且能夠?qū)崿F(xiàn)每個彩色信道10位以上的轉(zhuǎn)換精度,因而不再需要A/D轉(zhuǎn)換電路,使電路變得更簡單,圖1是TCS230的引腳和功能框圖。
0.png

圖1中,TCS230采用8引腳的SOIC表面貼裝式封裝,在單一芯片上集成有64個光電二極管,這些二極管分為四種類型,其16個光電二極管帶有紅色濾波器;16個光電二極管帶有綠色濾波器;16個光電二極管帶有藍(lán)色濾波器,其余16個不帶有任何濾波器,可以透過全部的光信息,這些光電二極管在芯片內(nèi)是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識別的精確度;另一方面,相同顏色的16個光電二極管是并聯(lián)連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時,通過兩個可編程的引腳來動態(tài)選擇所需要的濾波器,該傳感器的典型輸出頻率范圍從2Hz-500kHz,用戶還可以通過兩個可編程引腳來選擇100%、20%或2%的輸出比例因子,或電源關(guān)斷模式。輸出比例因子使傳感器的輸出能夠適應(yīng)不同的測量范圍,提高了它的適應(yīng)能力。例如,當(dāng)使用低速的頻率計數(shù)器時,就可以選擇小的定標(biāo)值,使TCS230的輸出頻率和計數(shù)器相匹配。
從圖1可知:當(dāng)入射光投射到TCS230上時,通過光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經(jīng)過電流到頻率轉(zhuǎn)換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強(qiáng)對應(yīng)不同頻率的方波;還可以通過輸出定標(biāo)控制引腳S0、S1,選擇不同的輸出比例因子,對輸出頻率范圍進(jìn)行調(diào)整,以適應(yīng)不同的需求。
     下面簡要介紹TCS230芯片各個引腳的功能及它的一些組合選項(xiàng)。
S0、S1用于選擇輸出比例因子或電源關(guān)斷模式;S2、S3用于選擇濾波器的類型;OE反是頻率輸出使能引腳,可以控制輸出的狀態(tài),當(dāng)有多個芯片引腳共用微處理器的輸出引腳時,也可以作為片選信號,OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓,表1是S0、S1及S2、S3的可用組合。

2 .TCS230識別顏色的原理

     由上面的介紹可知,這種可編程的彩色光到頻率轉(zhuǎn)換器適合于色度計測量應(yīng)用領(lǐng)域,如彩色打印、醫(yī)療診斷、計算機(jī)彩色監(jiān)視器校準(zhǔn)以及油漆、紡織品、化妝品和印刷材料的過程控制和色彩配合。下面以TCS230在液體顏色識別中的應(yīng)用為例,介紹它的具體使用。首先了解一些光與顏色的知識。

(1)三原色的感應(yīng)原理

      通常所看到的物體顏色,實(shí)際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng)。白色是由各種頻率的可見光混合在一起構(gòu)成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y、綠G、青V、藍(lán)B、紫P)。根據(jù)德國物理學(xué)家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍(lán))混合而成的。

(2)TCS230識別顏色的原理

     由三原色感應(yīng)原理可知,如果知道構(gòu)成各種顏色的三原色的值,就能夠知道所測試物體的顏色。對于TCS230來說,當(dāng)選定一個顏色濾波器時,它只允許某種特定的原色通過,阻止其他原色的通過。例如:當(dāng)選擇紅色濾波器時,入射光中只有紅色可以通過,藍(lán)色和綠色都被阻止,這樣就可以得到紅色光的光強(qiáng);同時,選擇其他的濾波器,就可以得到藍(lán)色光和綠色光的光強(qiáng)。通過這三個值,就可以分析投射到TCS230傳感器上的光的顏色。

(3)白平衡和顏色識別原理

      白平衡就是告訴系統(tǒng)什么是白色。從理論上講,白色是由等量的紅色、綠色和藍(lán)色混合而成的;但實(shí)際上,白色中的三原色并不完全相等,并且對于TCS230的光傳感器來說,它對這三種基本色的敏感性是不相同的,導(dǎo)致TCS230的RGB輸出并不相等,因此在測試前必須進(jìn)行白平衡調(diào)整,使得TCS230對所檢測的"白色"中的三原色是相等的。進(jìn)行白平衡調(diào)整是為后續(xù)的顏色識別作準(zhǔn)備。在本裝置中,白平衡調(diào)整的具體步驟和方法如下:將空的試管放置在傳感器的上方,試管的上方放置一個白色的光源,使入射光能夠穿過試管照射到TCS230上;根據(jù)前面所介紹的方法,依次選通紅色、綠色和藍(lán)色濾波器,分別測得紅色、綠色和藍(lán)色的值,然后就可計算出需要的3個調(diào)整參數(shù)。
    當(dāng)TCS230識別顏色時,就用這3個參數(shù)對所測顏色的R、G和B進(jìn)行調(diào)整。這里有兩種方法來計算調(diào)整參數(shù):1、依次選通三顏色的濾波器,然后對TCS230的輸出脈沖依次進(jìn)行計數(shù)。當(dāng)計數(shù)到255時停止計數(shù),分別計算每個通道所用的時間,這些時間對應(yīng)于實(shí)際測試時TCS230每種濾波器所采用的時間基準(zhǔn),在這段時間內(nèi)所測得的脈沖數(shù)就是所對應(yīng)的R、G和B的值。2、設(shè)置定時器為一固定時間 (例如10ms),然后選通三種顏色的濾波器,計算這段時間內(nèi)TCS230的輸出脈沖數(shù),計算出一個比例因子,通過這個比例因子可以把這些脈沖數(shù)變?yōu)?55。在實(shí)際測試時,室外同樣的時間進(jìn)行計數(shù),把測得的脈沖數(shù)再乘以求得的比例因子,然后就可以得到所對應(yīng)的R、G和B的值。

3 應(yīng)用中需要注意的問題

1、顏色識別時要避免外界光線的干擾,否則會影響顏色識別的結(jié)果,最好把傳感器、光源等放置在一個密閉、無反射的箱子中進(jìn)行測試。
2、對光源沒有特殊的要求,但是光源發(fā)出的光要盡量集中,否則會造成傳感器之間的相互干擾。
3、當(dāng)?shù)?次使用TCS230時,或TCS230識別模塊重啟、更換光源等情況時,都需要進(jìn)行白平衡調(diào)整。


main()   
{   
P0=0xff;
   TMOD=0x51;//設(shè)定T0以工作方式1定時10毫秒
//  LCMInit();//LCD初始
   baipingheng();//上電時先白平衡一次
   while(1)
   {
     celiang();//顏色測試
     if (tab1[rb/16]>=tab1[gb/16])                  //紅色
                   {
                  P1=0xfe;
               }

                        if( tab1[gb/16]>=tab1[bb/16])          //綠色
                   {
                //   LED2=0;
                    P1=0xfd;
               }

                    if(tab1[bb/16]>=tab1[rb/16])          //藍(lán)色
                   {
                 //  LED3=0;
                   P1=0xfb;
               }

           DelayMs(250);//每隔0.25秒測試一次顏色         
   }
}
//******************************************************
//白平衡子程序
void   celiang()
{
     //*********求R值************************************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=0;//選擇紅色濾光器
     tcs230_en=0;
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數(shù)
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標(biāo)志
     TR0=0;//關(guān)閉定時0
     TR1=0;
     rb=(unsigned long)(TH1*256+TL1)*255/ryz;
     if(rb>255)rb=255;//判斷RGB值是否合法
     //***********求B值**************************************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=1;//選擇藍(lán)色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數(shù)
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標(biāo)志
     TR0=0;//關(guān)閉定時0
     TR1=0;
     bb=(unsigned long)(TH1*256+TL1)*255/byz;
     if(bb>255)bb=255;//判斷RGB值是否合法     
     //***********求G值**************************************   
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=1;
     tcs230_s3=1;//選擇綠色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數(shù)
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標(biāo)志
     TR0=0;//關(guān)閉定時0
     TR1=0;
     tcs230_en=1;
     gb=(unsigned long)(TH1*256+TL1)*255/gyz;
     if(gb>255)gb=255;//判斷RGB值是否合法  
}

全部資料51hei下載地址:
TCS230顏色識別(c51)_帶白平衡.rar (5.05 MB, 下載次數(shù): 176)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:78465 發(fā)表于 2019-2-17 19:24 來自觸屏版 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表