程書晗蘇宇鋒
(鄭州大學(xué)機(jī)械與動力工程學(xué)院,河南 鄭州 450001)
隨著現(xiàn)代工業(yè)生產(chǎn)向高速化、自動化方向的發(fā)展[1],顏色識別被越來越多地應(yīng)用于現(xiàn)代工業(yè)生產(chǎn)。由顏色傳感器識別到顏色信息傳遞給控制單元進(jìn)行處理,相比人眼獲得更客觀準(zhǔn)確的數(shù)據(jù)。顏色識別可應(yīng)用于工業(yè)自動化、遙感技術(shù)、圖像處理、產(chǎn)品質(zhì)檢以及一些需要色彩檢測的模糊檢測技術(shù)中。這些應(yīng)用中,許多對顏色檢測精度要求并不高,往往只需要區(qū)分不同顏色,比如:圖書館中利用給圖書添加各種顏色貼條對文獻(xiàn)分類;不同顏色的包裝或者裝潢表示內(nèi)部產(chǎn)品的不同特性;醫(yī)療行業(yè),批量檢測試管中血樣的有無等。
本文設(shè)計一種低功耗、可擴(kuò)展的顏色檢測系統(tǒng),此系統(tǒng)保證顏色數(shù)據(jù)傳輸準(zhǔn)確,過程穩(wěn)定,單次采集量可控,采集過程可滿足整個流程自動化,精度滿足一般工業(yè)對顏色采集的要求。
該系統(tǒng)整體框架如圖1 所示,分為上位機(jī)、數(shù)據(jù)采集模塊和顏色檢測模塊三部分,其中后兩部分都是以STC8F2K16S2 為核心,顏色檢測模塊通過陣列的排布,利用顏色傳感器對多個待檢測目標(biāo)的RGB值進(jìn)行檢測,得到的數(shù)據(jù)經(jīng)過處理后傳給數(shù)據(jù)采集模塊;數(shù)據(jù)采集模塊再把采集到的數(shù)據(jù)傳送給上位機(jī),通過上位機(jī)的監(jiān)測窗口可以看到待測物體的RGB 值。
圖1 系統(tǒng)總體框架圖
系統(tǒng)中各部分通過RS485 總線進(jìn)行通信,收發(fā)器選擇MAX487 芯片,保證顏色檢測模塊在數(shù)量上可以實(shí)現(xiàn)128×128 的擴(kuò)展。
供電電路如圖2 所示,通過開關(guān)電壓調(diào)節(jié)器LM2596 將24 V 直流電轉(zhuǎn)換為5 V 直流電供系統(tǒng)使用。也可通過調(diào)節(jié)撥碼開關(guān),不經(jīng)過降壓模塊,直接接入5 V 直流電。其中每個采集設(shè)備與檢測設(shè)備都分別與一個電源模塊相連,且同級設(shè)備并聯(lián),降低總線電流,減小電路損耗。
圖2 系統(tǒng)供電電路
RS485 通信模塊電路如圖3 所示,硬件電路采用自動收發(fā)式設(shè)計,電路可根據(jù)TXD 發(fā)送數(shù)據(jù)的起始位自動將收發(fā)器設(shè)置為發(fā)送模式,發(fā)送完畢后設(shè)置為監(jiān)聽模式。
圖3 RS485 通信電路圖
顏色檢測芯片為AMS 公司生產(chǎn)的TCS3200D芯片,該芯片通過將顏色信號轉(zhuǎn)換為頻率信號[2],通過單片機(jī)計數(shù)器接收到芯片信號,從而進(jìn)行顏色轉(zhuǎn)換。此部分主要目的就是對物體顏色進(jìn)行檢測,得到相應(yīng)的RGB 數(shù)據(jù)、處理后傳送給數(shù)據(jù)采集設(shè)備。顏色檢測模塊的電路如圖4 所示。
圖4 顏色檢測電路圖
顏色檢測電路中每個顏色檢測設(shè)備包含一個含有6 個LED 燈的照明燈,用于增加檢測精度。顏色檢測設(shè)備實(shí)物如圖5 所示,檢測設(shè)備分兩部分,一部分為顏色檢測,模塊化管理,另一部分為檢測部分供電以及與數(shù)據(jù)采集設(shè)備連接。
圖5 顏色檢測設(shè)備實(shí)物圖
軟件部分主要對整體流程框架進(jìn)行設(shè)計,包含對數(shù)據(jù)采集模塊與顏色檢測模塊之間的RS485 通信協(xié)議的設(shè)計,對采集模塊得到數(shù)據(jù)的處理。以及根據(jù)通信的命令對上位機(jī)的設(shè)計。在軟件設(shè)計時全部采用模塊化處理,便于后續(xù)命令的擴(kuò)展和對程序的移植。
通信部分都為點(diǎn)對多點(diǎn)的形式,將主機(jī)發(fā)送的數(shù)據(jù)按照地址幀與數(shù)據(jù)幀進(jìn)行分類,地址幀發(fā)送地址與命令,數(shù)據(jù)幀進(jìn)行主從機(jī)握手之后的數(shù)據(jù)傳輸。數(shù)據(jù)幀以數(shù)據(jù)包的形式發(fā)送。
(1)數(shù)據(jù)包結(jié)構(gòu)
顏色檢測模塊與數(shù)據(jù)采集模塊數(shù)據(jù)發(fā)送采用數(shù)據(jù)包的模式,方便對數(shù)據(jù)進(jìn)行解析和校驗(yàn)。數(shù)據(jù)包格式如下:
表1 數(shù)據(jù)包格式
其中數(shù)據(jù)字段為核心內(nèi)容數(shù)據(jù)字段,此部分長度可調(diào)節(jié)。
(2)數(shù)據(jù)包發(fā)送模塊
數(shù)據(jù)包在顏色檢測模塊的串口中斷2 中發(fā)送,串口中斷處理程序流程如圖6 所示。在串口中斷中進(jìn)行了顏色的檢測和數(shù)據(jù)的發(fā)送。
圖6 發(fā)送數(shù)據(jù)流程圖
其中數(shù)據(jù)處理包含傳感器多次測量去極值后所取的平均值和對數(shù)據(jù)包中的數(shù)據(jù)添加16 位的CRC校驗(yàn)碼,在數(shù)據(jù)發(fā)送過程中為數(shù)據(jù)包中添加1 byte的校驗(yàn)和。
(3)數(shù)據(jù)包接收模塊
數(shù)據(jù)包由數(shù)據(jù)采集模塊接收,接收部分在采集模塊串口2 中斷服務(wù)程序中,程序流程如圖7 所示,數(shù)據(jù)采集模塊接收來自多個顏色檢測模塊的RGB數(shù)據(jù),采用了數(shù)據(jù)和校驗(yàn)與循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,CRC)校驗(yàn)相結(jié)合的方式,CRC是通信領(lǐng)域常用的一種校驗(yàn)碼,用于檢測數(shù)據(jù)在傳輸過程中是否發(fā)生了被篡改的錯誤[3]。兩種校驗(yàn)共3 byte,此冗余設(shè)計保證了接收數(shù)據(jù)的準(zhǔn)確性。
圖7 接收數(shù)據(jù)流程圖
在輪詢從機(jī)時,對接收數(shù)據(jù)失敗的從機(jī),在第一輪輪詢從機(jī)結(jié)束后,再對通信失敗的從機(jī)進(jìn)行第二次詢問,重新進(jìn)行數(shù)據(jù)接收。
設(shè)計采用由主機(jī)控制從機(jī)機(jī)制,將命令分為廣播命令與點(diǎn)對點(diǎn)命令,廣播命令完成對所有從機(jī)的控制,點(diǎn)對點(diǎn)命令進(jìn)行主機(jī)與指定從機(jī)的通信。
為保證顏色檢測的實(shí)時性,顏色傳感器進(jìn)行顏色讀取的時間由上位機(jī)確定,上位機(jī)發(fā)送命令給數(shù)據(jù)采集設(shè)備,使其向所有顏色檢測設(shè)備發(fā)送讀取顏色命令;上位機(jī)發(fā)送命令使采集器對檢測并處理后的數(shù)據(jù)進(jìn)行分別采集;最后逐個收集采集器采集到的數(shù)據(jù),以此完成應(yīng)用層與感知層的間接通信。
(1)數(shù)據(jù)采集設(shè)備數(shù)據(jù)發(fā)送模塊
其中上位機(jī)與數(shù)據(jù)采集設(shè)備通信過程中,采集設(shè)備通過串口1 完成對上位機(jī)命令的接收以及采集數(shù)據(jù)的發(fā)送。其串口1 中斷流程如圖8 所示。
圖8 上位機(jī)與采集設(shè)備通信流程圖
(2)上位機(jī)模塊
上位機(jī)采用C#軟件編寫,軟件界面如圖9 所示,各部分功能清晰可視化??蓪?shí)現(xiàn)在命令區(qū)單獨(dú)發(fā)送命令或者在配置區(qū)與工作區(qū)進(jìn)行一些配置后,通過開始檢測按鈕直接對各采集設(shè)備與檢測設(shè)備自動化控制,完成從檢測到在上位機(jī)顯示RGB 值,以及間隔一定時間重新采集的自動化流程。在上位機(jī)接受區(qū)可以接收到各從機(jī)檢測到的RGB 數(shù)據(jù)。
圖9 上位機(jī)與采集設(shè)備通信流程圖
根據(jù)上述系統(tǒng)的設(shè)計,使用C 語言完成軟件部分各模塊的編程,生成hex 文件后使用STC-ISP 軟件燒錄到數(shù)據(jù)采集設(shè)備和顏色檢測設(shè)備中,連接通信電路、打開上位機(jī)軟件,使用自動檢測模式對系統(tǒng)進(jìn)行測試。
(1)數(shù)據(jù)準(zhǔn)確性測試
將程序中由顏色檢測傳感器采集RGB 值并處理后的數(shù)據(jù)改為已知的固定數(shù)據(jù),分別在設(shè)置不同CRC 校驗(yàn)碼與數(shù)據(jù)和校驗(yàn)碼的情況下對數(shù)據(jù)傳輸?shù)臏?zhǔn)確性進(jìn)行測試。
結(jié)果表明,只有當(dāng)CRC 校驗(yàn)碼與數(shù)據(jù)和校驗(yàn)碼檢測正確時,才能傳輸成功,否則數(shù)據(jù)采集設(shè)備內(nèi)部關(guān)于相應(yīng)顏色檢測設(shè)備的傳輸標(biāo)志位不置位,即表示傳輸失敗。由此可以看出此系統(tǒng)能夠準(zhǔn)確地傳輸數(shù)據(jù),并且在傳輸過程中出現(xiàn)錯誤導(dǎo)致數(shù)據(jù)不準(zhǔn)確時會由于雙重冗余校驗(yàn)導(dǎo)致傳輸失敗。
(2)穩(wěn)定性測試
將檢測系統(tǒng)數(shù)據(jù)采集設(shè)備設(shè)置為四個,顏色采集設(shè)備設(shè)置為五個。系統(tǒng)連接好后,在自動檢測模式下進(jìn)行自動化檢測待測物體RGB 值,經(jīng)測試,系統(tǒng)在連續(xù)工作13 h 的情況下檢測與傳輸過程未中止,且在此期間內(nèi)未丟失任何一組RGB 數(shù)據(jù),可以看出系統(tǒng)穩(wěn)定可靠。
(3)RGB 值檢測測試
使用此系統(tǒng),經(jīng)白平衡測試后,由顏色傳感器TCS3200D 檢測到的RGB 值對應(yīng)的顏色與實(shí)物的對比如表2 所示。
表2 RGB 值測試
該對比圖在待測物體與檢測裝置光源約3 mm處測得,從該對比圖可以看出檢測效果較為理想。但限于TCS3200D 顏色傳感器性能,對待測物體與檢測裝置之間距離以及白平衡測試準(zhǔn)度要求比較嚴(yán)格,需要仔細(xì)調(diào)試,否則得到的檢測結(jié)果誤差可能較大。
對于一些對RGB 值精度要求不高或者只需要進(jìn)行對顏色進(jìn)行區(qū)分的應(yīng)用場合,比如進(jìn)行糖尿病患者尿液血糖水平檢測[4],家具封裝中激光封邊的顏色檢測[5]等。本系統(tǒng)完全滿足此類工業(yè)中對顏色識別的使用要求。
該系統(tǒng)以STC8F2K16S2 為核心,通過顏色檢測設(shè)備對大量待測物體進(jìn)行RGB 值讀取,處理后通過RS485 協(xié)議對數(shù)據(jù)進(jìn)行準(zhǔn)確、穩(wěn)定的傳輸至數(shù)據(jù)采集設(shè)備,最后由數(shù)據(jù)采集設(shè)備將數(shù)據(jù)發(fā)送給上位機(jī),通過上位機(jī)檢測到每一個待測物體對應(yīng)的RGB 值。整個系統(tǒng)可以完全自動化的循環(huán)檢測,且可根據(jù)需求對單次檢測數(shù)量進(jìn)行擴(kuò)展。經(jīng)測試后系統(tǒng)精度適中、成本低、功耗低、性能穩(wěn)定,可以滿足一般工業(yè)中對顏色檢測的要求。