?
基于STM32的軸承圖像采集與重現(xiàn)系統(tǒng)設(shè)計(jì)
0引言
軸承是機(jī)械設(shè)計(jì)中重要的基礎(chǔ)件之一,軸承質(zhì)量的好壞關(guān)系到機(jī)械運(yùn)行的質(zhì)量和效率,因此機(jī)械制造業(yè)對軸承質(zhì)量提出了較高的要求。而人工檢測軸承的效率比較低,利用先進(jìn)的檢測技術(shù)檢測軸承已經(jīng)成為一種必然趨勢。其中,較為常見的方法就是利用機(jī)器視覺技術(shù)。
圖像采集在機(jī)器視覺處理中起著基礎(chǔ)性的作用,傳統(tǒng)的圖像采集系統(tǒng)一般由CCD攝像機(jī)、圖像采集卡及匹配的采集軟件組成。使用圖像采集卡采集圖像具有實(shí)時(shí)性高的優(yōu)點(diǎn),但是其價(jià)格較高、操作復(fù)雜,且上位機(jī)須配備有PIC接口[1]。此外,傳統(tǒng)的圖像采集系統(tǒng)經(jīng)常會因?yàn)轵?qū)動的問題出現(xiàn)死機(jī)現(xiàn)象,嚴(yán)重影響了圖像的后續(xù)處理。為了解決這一系列問題,本文提出了基于串行通信的圖像采集方案。
串行通信具有硬件電路接口簡單、串口編程簡單等特點(diǎn),使用串口通信減少了開發(fā)周期,降低了開發(fā)成本,且能滿足各項(xiàng)性能要求。本文以COMS攝像頭為例,以STM32為核心處理器,讀取COMS攝像頭FIFO緩存數(shù)據(jù),通過串口傳輸實(shí)現(xiàn)圖像的采集與重現(xiàn)。該系統(tǒng)克服了使用采集卡過程的弊端,開發(fā)周期短、成本低,性價(jià)比高,為靈活使用COMS攝像頭采集圖像進(jìn)行圖像處理的研究奠定了基礎(chǔ)。
1圖像采集硬件系統(tǒng)設(shè)計(jì)
本文設(shè)計(jì)了基于COMS攝像頭的圖像采集與傳輸平臺。該平臺的系統(tǒng)硬件框圖如圖1所示。
圖1 系統(tǒng)硬件總體框圖
OV7670的像素時(shí)鐘最高可達(dá)24 MHz,由于STM32最高只有72 MHz,采用直接抓取的方式非常困難,且占用CPU,而OV7670的像素時(shí)鐘最高可達(dá)24 MHz,所以本課題采用的是OV7670攝像頭模塊,該模塊中帶有緩存圖像功能。單片機(jī)STM32的主要任務(wù)是實(shí)現(xiàn)圖像的采集與傳送。STM32通過串口與上位機(jī)連接,在上位機(jī)上,本文采用C#語言編寫圖像數(shù)據(jù)處理及顯示程序。
1.2硬件選擇
(1)攝像頭。
目前主流攝像頭主要分兩類,一類是CCD攝像頭,其具有光學(xué)靈敏度高、噪聲低、像素高等優(yōu)點(diǎn);但是其價(jià)格昂貴,且需要配合圖像采集卡才能使用。在滿足采集要求的情況下,本課題采取另一類攝像頭,即CMOS攝像頭,其具有體積小、工作電壓低、靈敏度高[2]等優(yōu)點(diǎn),且大幅降低了設(shè)計(jì)成本。綜上所述,本課題決定選擇OmniVision公司開發(fā)的30萬像素的OV7670CMOS彩色圖像傳感器芯片。
(2)控制器。
STM32是ST公司開發(fā)的高性能、低成本、低功耗的芯片,它相當(dāng)于一個(gè)小型的PC機(jī),其優(yōu)勢主要體現(xiàn)在控制方面[3]。綜合考慮系統(tǒng)的實(shí)時(shí)性要求及設(shè)計(jì)成本,本系統(tǒng)采用高性價(jià)比的STM32FI03ZET6芯片。
專題教學(xué)可以是同一作者相似作品連類而成的學(xué)習(xí),比如,學(xué)習(xí)蘇軾的《前赤壁賦》時(shí),和《后赤壁賦》進(jìn)行比較閱讀;學(xué)習(xí)莫泊桑的《項(xiàng)鏈》時(shí),和其《珠寶》進(jìn)行比較閱讀。相對于《前赤壁賦》和《項(xiàng)鏈》的單篇學(xué)習(xí),這樣的比較閱讀會讓學(xué)生更好地把握單篇的特點(diǎn),豐富對作者及作品的認(rèn)識。
(3)圖像采集系統(tǒng)。
圖像采集系統(tǒng)主要由支架、攝像頭、軸承、背光源4個(gè)部分組成。支架采用可移動支架來固定攝像頭的位置,使其鏡頭朝下,對準(zhǔn)軸承的位置。要判斷軸承是否存在缺珠、涂油等缺陷,在采集圖像時(shí)必須采集到軸承的孔洞信息。為了使攝像頭采集到高質(zhì)量的圖片以便于后續(xù)的處理,本課題采用背光源來采集圖像。但是由于軸承孔洞比較小,給采集帶來了很大的挑戰(zhàn)。為了能夠采集到清晰的孔洞信息,對光源提出了比較嚴(yán)格的要求,光照要求柔和、均勻,否則采集到的圖像輪廓不清,不便于后續(xù)處理。
2圖像采集軟件設(shè)計(jì)
2.1OV7670圖像采集模塊設(shè)計(jì)
OmniVision公司的OV7670是數(shù)字圖像傳感器,它具有體積小、工作電壓低等優(yōu)點(diǎn),其視頻圖形陣列(video graphics array,VGA)圖像刷新最高速率為30幀/s[4]。OV7670的所有圖像處理功能都可以通過SCCB接口編程,支持多種圖像輸出格式,廣泛應(yīng)用于嵌入式系統(tǒng)中。
OV7670輸出數(shù)據(jù)接口提供的主要控制信號如表1所示。
表1 OV7670接口信號
本文通過設(shè)定OV_PCLK、OV_VSYNC和OV_HREF/HSYNC等控制信號,實(shí)現(xiàn)對OV7670的輸出控制。本文采用QVG時(shí)序輸出,RGB565格式,行掃描輸出,即分辨率為320×240的輸出格式。當(dāng)OV_HREF為高時(shí),系統(tǒng)輸出圖像,每個(gè)OV_PCLK輸出一個(gè)字節(jié)。在輸出行時(shí),每行共需要320×2個(gè)OV_PCLK周期,320×2個(gè)字節(jié)輸出,其中每兩個(gè)字節(jié)組成一個(gè)像素,先高字節(jié)后低字節(jié)。在幀輸出時(shí),240行組成一幀,幀同步信號控制圖像輸出。通過硬件連接,圖片在時(shí)鐘信號下存儲到FIFO緩存,STM32在FIFO讀時(shí)序下,讀出一幀圖片。
圖像采集系統(tǒng)的整體編程思想是:采用外部中斷捕獲的方法,捕獲幀同步信號;在中斷處理程序中,啟動OV7670圖像存儲;當(dāng)下一個(gè)幀同步信號到來,即關(guān)閉數(shù)據(jù)存儲。采集系統(tǒng)的設(shè)計(jì)流程如圖2所示。
圖2 圖像采集系統(tǒng)流程圖
2.2數(shù)字圖像數(shù)據(jù)串口發(fā)送模塊設(shè)計(jì)
在串口發(fā)送時(shí),STM32對一個(gè)像素點(diǎn)提取R、G、B這3個(gè)顏色分量,再分別發(fā)送這3個(gè)分量到上位機(jī)。
圖像采用高彩色的方式表示,即一幀圖像中,每個(gè)色素用16位即兩個(gè)字節(jié)表示。通常情況下,接收兩種格式的位域,即555、565。采用紅、綠、藍(lán)的掩碼表示紅、綠、藍(lán)3個(gè)分量在16位中所占的位置。在565的格式中,紅、綠、藍(lán)的掩碼分別是0xF800、0x07E0、0x001F。R、G、B這3個(gè)分量的提取如下所示。
(1)
(2)
B=C×0x001F
(3)
式中:C為像素值;R為紅色分量;G為綠色分量;B為藍(lán)色分量。
在編寫串口發(fā)送程序的過程中,首先設(shè)置使能串口時(shí)鐘、GPIO時(shí)鐘、串口復(fù)位、GPIO端口模式;再初始化串口參數(shù),包括波特率、數(shù)據(jù)格式、起始位、停止位、奇偶校驗(yàn)位、收發(fā)模式等。數(shù)據(jù)發(fā)送調(diào)用STM32庫函數(shù),函數(shù)如下:
Void USART_SendData(USART_TypeDef*
USARTx ,uint16_t Data);
通過該函數(shù),向串口寄存器USART_DR寫入一個(gè)數(shù)據(jù)。其中:USART_TypeDef* USARTx 表示串口名,uint16_t Data表示要發(fā)送的數(shù)據(jù)。
3上位機(jī)圖像重現(xiàn)軟件設(shè)計(jì)
上位機(jī)軟件的主要作用是接收從下位機(jī)上傳的圖像數(shù)據(jù)并重現(xiàn)。圖像重現(xiàn)的核心技術(shù)就是與STM32的串口通信技術(shù)和基于模板填充的圖像重現(xiàn)技術(shù)。
串口通信目前實(shí)現(xiàn)的方法一般有3種。其一,是利用MSComm控件。MSComm控件能完成簡單串口的設(shè)定,其方法簡單、使用方便,但只能對應(yīng)一個(gè)串口。當(dāng)需要使用多線程技術(shù)時(shí),利用MSComm控件很難實(shí)現(xiàn)。其次,是基于API的串口編程。其功能強(qiáng)大,可以編寫高效、靈活的通信程序;但是其編程難度大,必須對API底層編程及多線程技術(shù)特別熟悉,且存在編寫程序可移植性差的缺點(diǎn)[5],需要一定的開發(fā)周期。最后,是基于SerialPort類的多線程的串口編程。其編程方法簡單,能夠高效地實(shí)現(xiàn)多線程串口編程。SerialPort 類提供了同步I/O和事件驅(qū)動的 I/O、對管腳和中斷狀態(tài)的訪問以及對串行驅(qū)動程序?qū)傩缘脑L問[6]。權(quán)衡利弊,本文采用基于SerialPort類的編程方法。
系統(tǒng)功能結(jié)構(gòu)主要由串口初始化模塊、串口數(shù)據(jù)接收模塊、串口數(shù)據(jù)處理模塊和圖像重現(xiàn)模塊等模塊組成。程序設(shè)計(jì)的思想如圖3所示。
圖3 串口通信程序框圖
串口初始化模塊主要定義SerialPort類對象,設(shè)置通信端口號及波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等。串口數(shù)據(jù)接收模塊主要在串口監(jiān)聽線程中完成。當(dāng)串口開啟時(shí),SerialPort類會建立ListenThread監(jiān)聽線程,監(jiān)聽線程用來等待注冊的串口中斷。當(dāng)中斷事件發(fā)生時(shí),調(diào)用數(shù)據(jù)處理事件(DataReceived事件),直到串口關(guān)閉而退出線程,否則繼續(xù)進(jìn)入循環(huán)等待。由于每次接收到的串口緩存數(shù)據(jù)長度不一致,但又要對所有接收到的數(shù)據(jù)進(jìn)行處理,防止丟包,所以先將接收的字符存入數(shù)據(jù)緩沖區(qū)。串口數(shù)據(jù)處理模塊將圖像中每個(gè)像素點(diǎn)的R、G、B這3個(gè)分量存儲在數(shù)組中。
本文采用ArrayList數(shù)組緩存數(shù)據(jù)。ArrayList數(shù)組能夠動態(tài)地添加和刪除元素,可以根據(jù)需要自動擴(kuò)充容量。 圖像重現(xiàn)模塊將串口接收的數(shù)據(jù)顯示成圖像,在串口接收完成時(shí),ArrayList數(shù)組中存儲有一幀圖像中每個(gè)像素點(diǎn)的R、G、B這3個(gè)分量數(shù)據(jù)。但是要將接收的數(shù)據(jù)以圖片的形式顯示,就要對數(shù)據(jù)進(jìn)行編碼。由于圖像的編碼技術(shù)比較復(fù)雜,本文采用圖像填充技術(shù),主要是讀取一幅320×240的BMP圖片,然后根據(jù)串口接收的數(shù)據(jù)對圖像進(jìn)行填充修改,再現(xiàn)軸承圖片。
4實(shí)驗(yàn)及分析
以STM32拍攝的軸承圖像為例,在本例中設(shè)置串口波特率為38 400 B/s。打開串口,顯示串口上傳的R、G、B三色分量,當(dāng)數(shù)據(jù)傳輸結(jié)束,顯示所拍攝的軸承樣本圖像。
實(shí)驗(yàn)結(jié)果表明,系統(tǒng)采集的軸承圖像數(shù)據(jù)準(zhǔn)確,系統(tǒng)重現(xiàn)圖像與實(shí)際圖像吻合,拍攝的圖像分辨率能夠滿足后續(xù)的圖像處理要求,且該系統(tǒng)設(shè)計(jì)價(jià)格低廉,有比較好的實(shí)用性和市場競爭力。
5結(jié)束語
本文介紹了基于STM32的低成本COMS圖像采集系統(tǒng)的硬件和軟件組成。與傳統(tǒng)的圖像采集系統(tǒng)相比,基于STM32的圖像采集系統(tǒng)優(yōu)勢比較明顯:第一,成本低,市場廠競爭力強(qiáng)[7];第二,結(jié)構(gòu)簡單,小巧方便;第三,提出了以圖像填充更新圖像的方式,實(shí)時(shí)性好;第四,應(yīng)用到軸承檢測行業(yè),使得軸承檢測系統(tǒng)具有圖像采集和傳輸功能,方便用戶調(diào)試、觀測軸承。
參考文獻(xiàn)
[1] 張冬陽,薄振桐.基于FPGA與USB 2.0接口的紅外圖像采集系
統(tǒng)設(shè)計(jì)[J].電子科技,2014,27(11):48-51.
[2] 李德明,韓劍,姜國強(qiáng).基于OV7670的圖像采集與顯示系統(tǒng)設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2010,31(8):30-33.
[3] 鄭凌.基于圖像的軸承套加工缺陷檢測研究[D].杭州:浙江大學(xué),2012.
[4] 王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設(shè)計(jì)[J].信息科技,2013(11):90-91.
[5] 陳超,李燦平,韓立昌.SerialPort類在雷達(dá)串口通信中的應(yīng)用[J].電腦知識與技術(shù),2011(7):5921-5922,5927.
[6] 鄔蓉蓉,滕召勝,譚旗,等.基于 C # .NET的智能化汽車衡稱重管理系統(tǒng)[J].儀表技術(shù)與傳感器,2010(7):48-50.
[7] 董大波,王湘云,趙柏秦,等.基于單片機(jī)的低成本CMOS圖像采集系統(tǒng)[J].儀表技術(shù)與傳感器,2014(2):45-49.
Design of the Bearing Image Acquisition and Reproduction System Based on STM32
顧靜靜姜平
(南通大學(xué)電氣工程學(xué)院,江蘇 南通226019)
摘要:針對傳統(tǒng)的圖像采集面臨的主要問題,提出了基于STM32的高性價(jià)比的圖像采集與重現(xiàn)方案。重點(diǎn)介紹了該方案的硬件組成和軟件設(shè)計(jì),主要設(shè)計(jì)思想是用STM32讀取COMS攝像頭OV7670緩存數(shù)據(jù),通過串口傳送到上位機(jī);在VS2010編譯環(huán)境下,利用微軟SerialPort類實(shí)現(xiàn)STM32與上位機(jī)的串口通信,以模板填充的方式重現(xiàn)圖片。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可以實(shí)現(xiàn)軸承圖像的采集與重現(xiàn)功能,且重現(xiàn)圖像與實(shí)際圖像吻合,清晰度高,穩(wěn)定性好,能夠滿足后續(xù)軸承圖像處理的要求。
關(guān)鍵詞:圖像采集STM32COMS攝像頭軸承傳感器串行通信軟件設(shè)計(jì)數(shù)據(jù)處理
Abstract:Aiming at the main problems in the traditional image acquisition,the cost-effective image acquisition and reproduction system based on STM32 are proposed.The hardware composition and software design are introduced.STM32 is used to read OV7670 cache data of COMS camera,then the data are sent to host computer through serial port; the serial port communication between STM32 and host computer is implemented by adopting Microsoft SerialPort under VS2010 compiling environment to reproduce the images in the template filling mode.Experimental results show that the system can realize the functions of image acquisition and reproduction,and the reproduced images are clear,stable and consistent with the actual images.The system meets the requirements of subsequent bearing image processing.
Keywords:Image acquisitionSTM32COMS cameraBearingSensorSerial communicationSoftware designData processing
中圖分類號:TP368+.2;TH86
文獻(xiàn)標(biāo)志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201604011
江蘇省2014年度普通高校研究生科研創(chuàng)新計(jì)劃基金資助項(xiàng)目(編號:KYLX_1306)。
修改稿收到日期:2015-08-30。
第一作者顧靜靜(1990-),女,現(xiàn)為南通大學(xué)控制科學(xué)與工程專業(yè)在讀碩士研究生;主要從事智能檢測與控制技術(shù)的研究。