該項(xiàng)目用于檢測(cè)顏色并使用TCS3200顏色傳感器模塊和Arduino板在LCD上顯示顏色名稱。傳感器使用彩色光電二極管輸出紅色,綠色和藍(lán)色的反射光值。顏色輸出以頻率顯示,其值取決于強(qiáng)度。
顏色識(shí)別理論
為了了解眼睛感知到的特定顏色,將眼睛接收到的信號(hào)分為紅色,綠色和藍(lán)色,以名稱三刺激值表示。任何特定顏色的三刺激值是R,G和B的三個(gè)分量。我們使用的傳感器還提供類似于三刺激值的信號(hào)。
必須從接收為Vr,Vg和Vb的R,G和B的值中計(jì)算出兩個(gè)稱為“色度坐標(biāo)”的值。國(guó)際照明委員會(huì)(CIE)在1931年引入了計(jì)算這兩個(gè)x和y坐標(biāo)的公式。
圖1:色度圖,x和y為紅色和綠色坐標(biāo)
該委員會(huì)在讀取了成千上萬(wàn)個(gè)具有各種顏色對(duì)象的視覺(jué)觀察員的讀數(shù)后,得出了稱為色度圖的圖表,如圖1所示。根據(jù)計(jì)算出的x和y坐標(biāo),可以通過(guò)繪制顏色來(lái)確定顏色( x,y)點(diǎn)在圖表中。
x = Vr /(Vr + Vg + Vb)
y = Vg /(Vr + Vg + Vb)
例如,x = 0.2且y = 0.35給出藍(lán)綠色,而x = 0.47且y = 0.45給出黃色。該圖表具有馬蹄形形狀,雖然很奇怪,但這是CIE詳盡研究的結(jié)果。圖表的邊緣顯示了最純凈的顏色,并在其中指出的某些點(diǎn)上顯示了光譜波長(zhǎng)值。
例如,藍(lán)色始于400nm,綠色始于500至540nm,黃色始于575nm,紅色始于640nm。
圖表的底部是互補(bǔ)色,包括紫色和洋紅色。中心顯示的白色區(qū)域是白色的近似范圍,盡管某些顏色的坐標(biāo)也落在該白色橢圓形區(qū)域內(nèi)。該圖表是精確的,但是此處顯示的帶有顏色之間的界線的圖表僅是近似值。
因此,所顯示的區(qū)別出的曲線(例如綠色和淡黃色綠色)僅是近似的。在此圖表中,主要顏色為十七種。因此,本文中的電路和程序旨在識(shí)別多達(dá)22種顏色,包括補(bǔ)色。
電路與工作
用于顏色識(shí)別的電路圖如圖2所示。它圍繞著Arduino Uno板(Board1),16×2 LCD(LCD1),TCS3200顏色傳感器模塊(CS)和一些分立的組件而構(gòu)建。TCS3200顏色傳感器模塊如圖3所示。
圖2:用于顏色識(shí)別的電路圖
圖3:TCS3200顏色傳感器模塊
所示電路使用頻率輸出。Arduino的外部中斷引腳INT0(引腳2)用于計(jì)數(shù)頻率值。我們選擇10kHz作為最大范圍。引腳S2和S3按00、11和01的順序選擇顏色。只有紅色(R),綠色(G)和藍(lán)色(B)的所謂三刺激值可用。顏色傳感器模塊的詳細(xì)信息已發(fā)布在“使用TCS3200的RGB顏色檢測(cè)器”中
現(xiàn)在可以在此鏈接上獲得傳感器模塊的DIY文章。
這三個(gè)頻率值用于確定色度坐標(biāo),從而使用我們的搜索算法從CIE色度圖中識(shí)別22種分類的顏色中的一種。根據(jù)顏色標(biāo)定的CIE圖表(圖2),為每個(gè)對(duì)象指示色度坐標(biāo)(乘以10)以及最接近的顏色名稱。這些R和G值用于顏色匹配。
LCD連接到Arduino開(kāi)發(fā)板,以顯示坐標(biāo)R和G以及顏色名稱。R和G用于顏色匹配,因?yàn)閮蓚€(gè)相同的有色對(duì)象將具有相似的值。
該電路還與一個(gè)兩行字符LCD顯示器相連。LCD的引腳3連接到10千歐(VR1)電位計(jì),以在0至5V之間調(diào)節(jié)電壓,以改變LCD模塊上顯示的字符的對(duì)比度。
數(shù)據(jù)包括到LCD(11-14)的引腳D4至D7的四線連接。引腳15連接到+ 5V,用于LCD的背光,引腳16通過(guò)電阻R2接地。
在這里,我們使用的是四線數(shù)據(jù)連接,而不是八線數(shù)據(jù)連接。因此,程序必須在兩個(gè)連續(xù)的寫(xiě)操作中發(fā)送命令和地址值。使用四線連接可以節(jié)省微控制器上的引腳。
圖4中顯示了被檢測(cè)并顯示在LCD上的淡黃色物體以及信號(hào)值。
圖4(a和b):淡黃色物體的檢測(cè)
該單元的程序(colour_sense.bas)是在Oshon AVR Simulator IDE上開(kāi)發(fā)的。該軟件有助于開(kāi)發(fā)項(xiàng)目。
完成編碼(用BASIC編寫(xiě))后,編譯代碼或?qū)⑸傻氖M(jìn)制文件加載到Arduino Uno板上的ATmega328P芯片中。Xloader程序用于加載十六進(jìn)制文件。執(zhí)行Xloader程序后,將打開(kāi)一個(gè)窗口,如圖5所示。為Arduino Uno板連接的USB插座指定COM端口號(hào)??梢詮腜C /筆記本電腦上Windows上的“設(shè)備管理器”中找到此號(hào)碼。
從XLoader窗口瀏覽十六進(jìn)制代碼,如圖5所示,然后按上載按鈕。加載代碼后,從筆記本電腦上斷開(kāi)Arduino板的連接,然后將9V適配器連接到其DC插座(或?qū)?V電源連接到其5V和接地引腳)。
圖5:Xloader窗口
建設(shè)與測(cè)試
圖6中顯示了用于顏色識(shí)別的PCB布局,圖7中顯示了其組件布局。在PCB上組裝電路后,將其封裝在合適的盒子中。將傳感器模塊和LCD固定在前面板上,并將電線連接到PCB上的相應(yīng)連接器。
圖6:顏色識(shí)別的PCB布局
圖7:PCB的組件布局
-
lcd
+關(guān)注
關(guān)注
34文章
4405瀏覽量
166930 -
顏色傳感器
+關(guān)注
關(guān)注
2文章
89瀏覽量
18161 -
Arduino
+關(guān)注
關(guān)注
187文章
6457瀏覽量
186502 -
TCS3200
+關(guān)注
關(guān)注
0文章
23瀏覽量
15539
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論