TCS3200顏色傳感器使用說明_第1頁
TCS3200顏色傳感器使用說明_第2頁
TCS3200顏色傳感器使用說明_第3頁
TCS3200顏色傳感器使用說明_第4頁
TCS3200顏色傳感器使用說明_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選文檔  TCS3200顏色傳感器是一款全彩的顏色檢測器,包括了一塊TAOS TCS3200RGB感應芯片和4個白光LED燈,TCS3200能在一定的范圍內檢測和測量幾乎所有的可見光。它適合于色度計測量應用領域。比如彩色打印、醫療診斷、計算機彩色監視器校準以及油漆、紡織品、化妝品和印刷材料的過程控制。    通常所看到的物體顏色,實際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應。白色是由各種頻率的可見光混合在一起構成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y、綠G、青V、藍B、紫P)。

2、根據德國物理學家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍)混合而成的。    由上面的三原色感應原理可知,如果知道構成各種顏色的三原色的值,就能夠知道所測試物體的顏色。對于TCS3200D 來說,當選定一個顏色濾波器時,它只允許某種特定的原色通過,阻止其它原色的通過。例如:當選擇紅色濾波器時,入射光中只有紅色可以通過,藍色和綠色都被阻止,這樣就可以得到紅色光的光強;同理,選擇其它的濾波器,就可以得到藍色光和綠色光的光強。通過這三個光強值,就可以分析出反射到TCS3200D傳感器上的光的顏色。   TCS3

3、200D傳感器有紅綠藍和清除4種濾光器,可以通過其引腳S2和S3的高低電平來選擇濾波器模式,如下圖。     TCS3200D有可編程的彩色光到電信號頻率的轉換器,當被測物體反射光的紅、綠、藍三色光線分別透過相應濾波器到達TAOS TCS3200RGB感應芯片時,其內置的振蕩器會輸出方波,方波頻率與所感應的光強成比例關系,光線越強,內置的振蕩器方波頻率越高。TCS3200傳感器有一個OUT引腳,它輸出信號的頻率與內置振蕩器的頻率也成比例關系,它們的比率因子可以靠其引腳S0和S1的高低電平來選擇,如下圖。     這個測試實驗,我把TC

4、S3200傳感器OUT引腳輸出信號頻率與其內置振蕩器頻率比率因子設為2%,有了輸出頻率比例因子,但是如何通過OUT引腳輸出信號頻率來換算出被測物體由三原色光強組成的RGB顏色值呢?這還需進行白平衡校正來得到RGB比例因子才行!     白平衡校正方法是:把一個白色物體放置在TCS3200顏色傳感器之下,兩者相距10mm左右,點亮傳感器上的4個白光LED燈,用Arduino控制器的定時器設置一固定時間1s,然后選通三原色的濾波器,讓被測物體反射光中紅、綠、藍三色光分別通過濾波器,計算1s時間內三色光對應的TCS3200傳感器OUT輸出信號脈沖數(單位時間的脈沖數包含

5、了輸出信號的頻率信息),再通過正比算式得到白色物體RGB值255與三色光脈沖數的比例因子。有了白平衡校正得到的RGB比例因子,則其它顏色物體反射光中紅、綠、藍三色光對應的TCS3200輸出信號1s內脈沖數乘以R、G、B比例因子,就可換算出了被測物體的RGB標準值了。     現在談談,如何進行TCS3200各控制引腳與Arduino控制器的硬件連線問題,下圖分別是TCS3200傳感器和其連線圖。 上圖中TCS3200傳感器各控制引腳與Arduino控制器數字端口連線的對應關系,我設置為:#define S0    

6、 6 #define S1     5  #define S2     4  #define S3     3#define OUT   2                      #define

7、LED   7    當被測物體為不發光物體時,應該把TCS3200的LED引腳設置為高電平,以點亮TCS3200傳感器電路板上的四個白光LED燈。    下文展示了一個帶有白平衡的測試程序,把這個程序下載到Arduino控制器中,同時把一個白色物體放置在TCS3200顏色傳感器之下,點亮傳感器上的4個白光LED燈,再打開Arduino IDE的串口監視器,會出現下圖監視畫面,可以在該畫面中找到白色物體RGB值255以及RGB比例因子。(可通過QQ截圖來鎖定畫面,以便觀察。)(雙擊圖片,可以放大看!)    

8、60;把白平衡時放置在TCS3200顏色傳感器之下白色物體拿走,放上另一個黃色物體,在Arduino IDE串口監視器看到的這個黃色物體RGB值為233、157、56,如下圖所示。    打開電腦Windows操作系統自帶的畫圖板,點擊菜單欄“顏色”->“編輯顏色”->“規定自定義顏色”->右下角輸入RGB值,查看對應的顏色與實際測試的顏色是否相符。實際測試結果是測得的物體顏色與實際顏色有些偏色,但并不影響區分出被測物體是哪種顏色的物體。    介紹完TCS3200傳感器顏色識別原理和其與Arduino控制器的硬件連線,以及如何利用串口

9、監視器找到白平衡后的比例因子和被測物體的RGB值。下面展示的是Arduino測試程序。注意:下面的#include TimerOne.h> 要改為單括號形式。 Arduino程序:#include TimerOne.h> /申明庫文件/把TCS3200顏色傳感器各控制引腳連到Arduino數字端口#define S0    6   /物體表面的反射光越強,TCS3002D內置振蕩器產生的方波頻率越高,#define S1    5  /S0和S1的組合決定輸出信號頻率比例因

10、子,比例因子為2%                 /比率因子為TCS3200傳感器OUT引腳輸出信號頻率與其內置振蕩器頻率之比#define S2     4   /S2和S3的組合決定讓紅、綠、藍,哪種光線通過濾波器#define S3     3#define OUT    2  /TCS32

11、00顏色傳感器輸出信號連接到Arduino中斷0引腳,并引發脈沖信號中斷                  /在中斷函數中記錄TCS3200輸出信號的脈沖個數#define LED    7  /控制TCS3200顏色傳感器是否點亮LED燈float g_SF3;     /從TCS3200輸出信號的脈沖數轉換為RGB標準值的RGB比例因子int&

12、#160;  g_count = 0;  / 計算與反射光強相對應TCS3200顏色傳感器輸出信號的脈沖數/ 數組用于存儲在1s內TCS3200輸出信號的脈沖數,它乘以RGB比例因子就是RGB標準值int   g_array3;  int   g_flag = 0;   / 濾波器模式選擇順序標志 / 初始化TSC3200各控制引腳的輸入輸出模式/設置TCS3002D的內置振蕩器方波頻率與其輸出信號頻率的比例因子為2%void TSC_Init()  pinMode(S0,

13、OUTPUT);  pinMode(S1, OUTPUT);  pinMode(S2, OUTPUT);  pinMode(S3, OUTPUT);  pinMode(OUT, INPUT);  pinMode(LED, OUTPUT);  digitalWrite(S0, LOW);   digitalWrite(S1, HIGH); /選擇濾波器模式,決定讓紅、綠、藍,哪種光線通過濾波器void TSC_FilterColor(int Level01, int Level02)  if(Le

14、vel01 != 0)    Level01 = HIGH;  if(Level02 != 0)    Level02 = HIGH;  digitalWrite(S2, Level01);  digitalWrite(S3, Level02); /中斷函數,計算TCS3200輸出信號的脈沖數void TSC_Count()  g_count + ; /定時器中斷函數,每1s中斷后,把該時間內的紅、綠、藍三種光線通過濾波器時,/TCS3200輸出信號脈沖個數分別存儲到數組g_

15、array3的相應元素變量中void TSC_Callback()  switch(g_flag)      case 0:         Serial.println("->WB Start");         TSC_WB(LOW, LOW);   /選擇讓紅色光線通過濾波器的模式   

16、0;     break;    case 1:         Serial.print("->Frequency R=");         Serial.println(g_count);   /打印1s內的紅光通過濾波器時,TCS3200輸出的脈沖個數    

17、60;    g_array0 = g_count;    /存儲1s內的紅光通過濾波器時,TCS3200輸出的脈沖個數         TSC_WB(HIGH, HIGH);  /選擇讓綠色光線通過濾波器的模式         break;    case 2:      &#

18、160;  Serial.print("->Frequency G=");         Serial.println(g_count);   /打印1s內的綠光通過濾波器時,TCS3200輸出的脈沖個數         g_array1 = g_count;    /存儲1s內的綠光通過濾波器時,TCS3200輸出的脈沖個數 &

19、#160;       TSC_WB(LOW, HIGH);  /選擇讓藍色光線通過濾波器的模式         break;     case 3:         Serial.print("->Frequency B=");     &#

20、160;   Serial.println(g_count);   /打印1s內的藍光通過濾波器時,TCS3200輸出的脈沖個數         Serial.println("->WB End");         g_array2 = g_count;     /存儲1s內的藍光通過濾波器時,TCS3200輸出的脈沖個數

21、0;        TSC_WB(HIGH, LOW);   /選擇無濾波器的模式           break;   default:         g_count = 0;     /計數值清零      

22、60;  break;  /設置反射光中紅、綠、藍三色光分別通過濾波器時如何處理數據的標志/該函數被TSC_Callback( )調用void TSC_WB(int Level0, int Level1)      g_count = 0;   /計數值清零  g_flag +;     /輸出信號計數標志  TSC_FilterColor(Level0, Level1); /濾波器模式  Timer1.setPeriod(1

23、000000);     /設置輸出信號脈沖計數時長1s/初始化void setup()  TSC_Init();  Serial.begin(9600); /啟動串行通信  Timer1.initialize();   / defaulte is 1s  Timer1.attachInterrupt(TSC_Callback); /設置定時器1的中斷,中斷調用函數為TSC_Callback()  /設置TCS3200輸出信號的上跳沿觸發中斷,中斷調用函數為TSC_Count()

24、60; attachInterrupt(0, TSC_Count, RISING);  digitalWrite(LED, HIGH);/點亮LED燈  delay(4000); /延時4s,以等待被測物體紅、綠、藍三色在1s內的TCS3200輸出信號脈沖計數  /通過白平衡測試,計算得到白色物體RGB值255與1s內三色光脈沖數的RGB比例因子  g_SF0 = 255.0/ g_array0;     /紅色光比例因子  g_SF1 = 255.0/ g_array1 ;    /綠色光比例因子  g_SF2 = 255.0/ g_array2 ;    /藍色光比例因子  /打印白平衡后的紅、綠、藍三色的RGB比例因子  Serial.println(g_SF0,5);  Serial.println(g_SF1,5);  Serial.println(g_SF2,5);  /紅、綠、藍三色光分別對應的1s內

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論