在現(xiàn)代工業(yè)生產(chǎn)中,顏色識別技術(shù)已經(jīng)成為了一個非常重要的技術(shù)。顏色識別可以用于產(chǎn)品質(zhì)量檢測、物料分類、機(jī)器視覺等領(lǐng)域。本文將介紹如何使用FPGA結(jié)合ZC-CLS381RGB進(jìn)行顏色識別。
本教程通過對采集到的圖像信息中,R、G、B三個顏色分量的占比,來判斷識別到的顏色信息。本教程只實現(xiàn)對紅色、綠色、藍(lán)色的識別,如果各位讀者要想實現(xiàn)對其它色彩信息的識別,可根據(jù)三個色彩分量的占比來判斷。
ZC-CLS381RGB簡介
ZC-CLS381RGB是一款基于RGB三基色原理的顏色識別傳感器。它可以通過對物體反射光的RGB三基色分量進(jìn)行測量,來判斷物體的顏色。該傳感器具有高精度、快速響應(yīng)、穩(wěn)定性好等特點,廣泛應(yīng)用于自動化生產(chǎn)線、機(jī)器人、智能家居等領(lǐng)域。
配置寄存器組
ZC-CLS381RGB是一款RGB LED驅(qū)動器芯片,需要通過配置寄存器來讓該模塊正常工作。下面就對顏色識別需要配置的寄存器進(jìn)行介紹。
主控寄存器
01
MAIN_CTRL Register是主控寄存器,下圖是主控寄存器的配置介紹:
? bit7~bit5,bit3,bit0:保留位(Reserved),使用時將這幾位置0即可。
? bit4:軟件復(fù)位位(SW Reset),當(dāng)該位被置1時,芯片會進(jìn)行軟件復(fù)位,即將所有寄存器的值恢復(fù)為默認(rèn)值。在使用ZC-CLS381RGB時,如果出現(xiàn)異常情況,例如芯片無法正常工作或者輸出異常,可以通過將SW Reset位置1來進(jìn)行軟件復(fù)位,以恢復(fù)芯片的正常工作狀態(tài)。同時,在初始化芯片時,也可以通過將SW Reset位置1來確保芯片的寄存器值處于默認(rèn)狀態(tài),以避免出現(xiàn)不可預(yù)期的問題。但是如果軟件復(fù)位位一直為高電平,模塊就無法正常采集顏色,一直處于復(fù)位狀態(tài),如果要關(guān)閉該位則還需要發(fā)送一次指令。因此在本設(shè)計初始化時,將該位置為0,不啟用軟件復(fù)位。
? bit2:顏色傳感器模式位(CS Mode),該位置為1時,表示所有的光傳感器通道都被激活,包括RGB(三原色)、IR(紅外光)和COMP(環(huán)境光)。這意味著該傳感器可以同時測量紅、綠、藍(lán)三種顏色的光線強(qiáng)度、紅外線的強(qiáng)度以及環(huán)境光的強(qiáng)度,并將這些數(shù)據(jù)傳輸?shù)郊拇嫫髦羞M(jìn)行處理。初始化配置時,需將該位置為1。
? bit1:環(huán)境光傳感器/顏色傳感器使能位(ALS/CS Enable),當(dāng)該位置1時,表示使能環(huán)境光傳感器和顏色傳感器。在本設(shè)計中,需要使用到這兩個傳感器,因此在初始化時需要將該位置為1。
檢測速率寄存器
02
ALS_CS_MEAS_RATE Register是環(huán)境光傳感器和顏色傳感器檢測速率寄存器,下圖是對該寄存器的配置介紹:
?bit7、bit3:保留位(Reserved),使用時這兩位需要置0。
? bit6,bit5,bit4:環(huán)境光傳感器和顏色傳感器速率位(ALS/CS Resolution),初始化時設(shè)置{bit6,bit5,bit4}=100,利用最快的時間對采集到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
?bit2,bit1,bit0:環(huán)境光傳感器和顏色傳感器測量速率位(ALS/CS Measurement Rate),初始化設(shè)置{bit2,bit1,bit0}=000,利用最快的采集速率采集數(shù)據(jù)。
增益寄存器
03
ALS_CS_MEAS_RATE Register是環(huán)境光傳感器和顏色傳感器增益寄存器,下圖是對該寄存器的配置介紹:
?bit7~bit3:保留位(Reserved),使用時這兩位需要置0。
? bit2~bit0:環(huán)境光傳感器和顏色傳感器增益率位(Reserved),初始化時設(shè)置{bit2,bit1,bit0}=100,將增益率調(diào)到最大,以此增強(qiáng)信號的強(qiáng)度,使得信號更容易被檢測到。
線上交流會
04
因為本教程采集的是紅色、綠色、藍(lán)色數(shù)據(jù),芯片手冊提供的寄存器組如下圖所示:
0x0D、0x0E、0x0F分別表示綠色信息的低8位、中8位、高8位數(shù)據(jù);0x10、0x11、0x12分別表示紅色信息的低8位、中8位、高8位數(shù)據(jù);0x13、0x14、0x15分別表示藍(lán)色信息的低8位、中8位、高8位數(shù)據(jù)。在使用中,直接讀取這些寄存器內(nèi)的數(shù)據(jù),然后拼接起來,即可得到紅、綠、藍(lán)色數(shù)據(jù),再根據(jù)三個數(shù)據(jù)的占比,從而對采集到的物體顏色進(jìn)行判斷。
狀態(tài)轉(zhuǎn)移圖和信號波形圖繪制
在正式開始使用器件時,需要等待一段時間讓器件穩(wěn)定下來,如圖所示:
待機(jī)喚醒時間最大為10ms,表示在測量的時候,兩次獲取數(shù)據(jù)的時間間隔最大為10ms。由于在數(shù)據(jù)手冊內(nèi),未說明上電后直到模塊穩(wěn)定需要等待的時間,在這里我們?nèi)藶樵O(shè)置上電等待的時間為20ms,給模塊一個緩沖的時間,然后再對它進(jìn)行配置。配置寄存器組信號波形圖如下圖所示:
其中,i2c_start作為i2c控制模塊的開始信號,檢測到該開始信號后,就開始配置寄存器,向各個寄存器內(nèi)寫入數(shù)據(jù)。綜上繪制的i2c控制模塊配置寄存器組的狀態(tài)轉(zhuǎn)移圖如下圖所示:
為了設(shè)計方便,對于50MHZ的系統(tǒng)時鐘,將其分頻為1MHZ的i2c驅(qū)動時鐘用來驅(qū)動后續(xù)模塊,同時令一個SCL時鐘周期為4us,高電平持續(xù)時間為2us,低電平持續(xù)時間也為2us。這樣設(shè)計的好處是,滿足SCL高電平持續(xù)時間大于0.6us,SCL低電平持續(xù)時間大于1.3us。如下圖所示:
綜上,繪制的分頻信號波形圖如下圖所示:
結(jié)合狀態(tài)轉(zhuǎn)移圖,繪制的配置寄存器信號波形圖如下圖所示:
需要注意的是,配置寄存器組跳轉(zhuǎn)條件為skip_en_0,這里配置的寄存器是向寄存器里面寫入數(shù)據(jù),總共需要配置三個,三個寄存器配置完成后,才能讀出顏色數(shù)據(jù)。因此,step從0自增到1,必須要在cfg_num為3并且檢測到結(jié)束信號的情況下進(jìn)行。
審核編輯:劉清
-
傳感器
+關(guān)注
關(guān)注
2551文章
51106瀏覽量
753658 -
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603463 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120385 -
RGB
+關(guān)注
關(guān)注
4文章
798瀏覽量
58511
原文標(biāo)題:【知識分享】ZC-CLS381RGB顏色識別+8x8點陣指示——配置顏色識別寄存器組(上)
文章出處:【微信號:FPGA創(chuàng)新中心,微信公眾號:FPGA創(chuàng)新中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論