?
基于STM32的軸承圖像采集與重現系統設計
0引言
軸承是機械設計中重要的基礎件之一,軸承質量的好壞關系到機械運行的質量和效率,因此機械制造業對軸承質量提出了較高的要求。而人工檢測軸承的效率比較低,利用先進的檢測技術檢測軸承已經成為一種必然趨勢。其中,較為常見的方法就是利用機器視覺技術。
圖像采集在機器視覺處理中起著基礎性的作用,傳統的圖像采集系統一般由CCD攝像機、圖像采集卡及匹配的采集軟件組成。使用圖像采集卡采集圖像具有實時性高的優點,但是其價格較高、操作復雜,且上位機須配備有PIC接口[1]。此外,傳統的圖像采集系統經常會因為驅動的問題出現死機現象,嚴重影響了圖像的后續處理。為了解決這一系列問題,本文提出了基于串行通信的圖像采集方案。
串行通信具有硬件電路接口簡單、串口編程簡單等特點,使用串口通信減少了開發周期,降低了開發成本,且能滿足各項性能要求。本文以COMS攝像頭為例,以STM32為核心處理器,讀取COMS攝像頭FIFO緩存數據,通過串口傳輸實現圖像的采集與重現。該系統克服了使用采集卡過程的弊端,開發周期短、成本低,性價比高,為靈活使用COMS攝像頭采集圖像進行圖像處理的研究奠定了基礎。
1圖像采集硬件系統設計
本文設計了基于COMS攝像頭的圖像采集與傳輸平臺。該平臺的系統硬件框圖如圖1所示。

圖1 系統硬件總體框圖
OV7670的像素時鐘最高可達24 MHz,由于STM32最高只有72 MHz,采用直接抓取的方式非常困難,且占用CPU,而OV7670的像素時鐘最高可達24 MHz,所以本課題采用的是OV7670攝像頭模塊,該模塊中帶有緩存圖像功能。單片機STM32的主要任務是實現圖像的采集與傳送。STM32通過串口與上位機連接,在上位機上,本文采用C#語言編寫圖像數據處理及顯示程序。
1.2硬件選擇
(1)攝像頭。
目前主流攝像頭主要分兩類,一類是CCD攝像頭,其具有光學靈敏度高、噪聲低、像素高等優點;但是其價格昂貴,且需要配合圖像采集卡才能使用。在滿足采集要求的情況下,本課題采取另一類攝像頭,即CMOS攝像頭,其具有體積小、工作電壓低、靈敏度高[2]等優點,且大幅降低了設計成本。綜上所述,本課題決定選擇OmniVision公司開發的30萬像素的OV7670CMOS彩色圖像傳感器芯片。
(2)控制器。
STM32是ST公司開發的高性能、低成本、低功耗的芯片,它相當于一個小型的PC機,其優勢主要體現在控制方面[3]。綜合考慮系統的實時性要求及設計成本,本系統采用高性價比的STM32FI03ZET6芯片。
專題教學可以是同一作者相似作品連類而成的學習,比如,學習蘇軾的《前赤壁賦》時,和《后赤壁賦》進行比較閱讀;學習莫泊桑的《項鏈》時,和其《珠寶》進行比較閱讀。相對于《前赤壁賦》和《項鏈》的單篇學習,這樣的比較閱讀會讓學生更好地把握單篇的特點,豐富對作者及作品的認識。
(3)圖像采集系統。
圖像采集系統主要由支架、攝像頭、軸承、背光源4個部分組成。支架采用可移動支架來固定攝像頭的位置,使其鏡頭朝下,對準軸承的位置。要判斷軸承是否存在缺珠、涂油等缺陷,在采集圖像時必須采集到軸承的孔洞信息。為了使攝像頭采集到高質量的圖片以便于后續的處理,本課題采用背光源來采集圖像。但是由于軸承孔洞比較小,給采集帶來了很大的挑戰。為了能夠采集到清晰的孔洞信息,對光源提出了比較嚴格的要求,光照要求柔和、均勻,否則采集到的圖像輪廓不清,不便于后續處理。
2圖像采集軟件設計
2.1OV7670圖像采集模塊設計
OmniVision公司的OV7670是數字圖像傳感器,它具有體積小、工作電壓低等優點,其視頻圖形陣列(video graphics array,VGA)圖像刷新最高速率為30幀/s[4]。OV7670的所有圖像處理功能都可以通過SCCB接口編程,支持多種圖像輸出格式,廣泛應用于嵌入式系統中。
OV7670輸出數據接口提供的主要控制信號如表1所示。

表1 OV7670接口信號
本文通過設定OV_PCLK、OV_VSYNC和OV_HREF/HSYNC等控制信號,實現對OV7670的輸出控制。本文采用QVG時序輸出,RGB565格式,行掃描輸出,即分辨率為320×240的輸出格式。當OV_HREF為高時,系統輸出圖像,每個OV_PCLK輸出一個字節。在輸出行時,每行共需要320×2個OV_PCLK周期,320×2個字節輸出,其中每兩個字節組成一個像素,先高字節后低字節。在幀輸出時,240行組成一幀,幀同步信號控制圖像輸出。通過硬件連接,圖片在時鐘信號下存儲到FIFO緩存,STM32在FIFO讀時序下,讀出一幀圖片。
圖像采集系統的整體編程思想是:采用外部中斷捕獲的方法,捕獲幀同步信號;在中斷處理程序中,啟動OV7670圖像存儲;當下一個幀同步信號到來,即關閉數據存儲。采集系統的設計流程如圖2所示。

圖2 圖像采集系統流程圖
2.2數字圖像數據串口發送模塊設計
在串口發送時,STM32對一個像素點提取R、G、B這3個顏色分量,再分別發送這3個分量到上位機。
圖像采用高彩色的方式表示,即一幀圖像中,每個色素用16位即兩個字節表示。通常情況下,接收兩種格式的位域,即555、565。采用紅、綠、藍的掩碼表示紅、綠、藍3個分量在16位中所占的位置。在565的格式中,紅、綠、藍的掩碼分別是0xF800、0x07E0、0x001F。R、G、B這3個分量的提取如下所示。
(1)
(2)
B=C×0x001F
(3)
式中:C為像素值;R為紅色分量;G為綠色分量;B為藍色分量。
在編寫串口發送程序的過程中,首先設置使能串口時鐘、GPIO時鐘、串口復位、GPIO端口模式;再初始化串口參數,包括波特率、數據格式、起始位、停止位、奇偶校驗位、收發模式等。數據發送調用STM32庫函數,函數如下:
Void USART_SendData(USART_TypeDef*
USARTx ,uint16_t Data);
通過該函數,向串口寄存器USART_DR寫入一個數據。其中:USART_TypeDef* USARTx 表示串口名,uint16_t Data表示要發送的數據。
3上位機圖像重現軟件設計
上位機軟件的主要作用是接收從下位機上傳的圖像數據并重現。圖像重現的核心技術就是與STM32的串口通信技術和基于模板填充的圖像重現技術。
串口通信目前實現的方法一般有3種。其一,是利用MSComm控件。MSComm控件能完成簡單串口的設定,其方法簡單、使用方便,但只能對應一個串口。當需要使用多線程技術時,利用MSComm控件很難實現。其次,是基于API的串口編程。其功能強大,可以編寫高效、靈活的通信程序;但是其編程難度大,必須對API底層編程及多線程技術特別熟悉,且存在編寫程序可移植性差的缺點[5],需要一定的開發周期。最后,是基于SerialPort類的多線程的串口編程。其編程方法簡單,能夠高效地實現多線程串口編程。SerialPort 類提供了同步I/O和事件驅動的 I/O、對管腳和中斷狀態的訪問以及對串行驅動程序屬性的訪問[6]。權衡利弊,本文采用基于SerialPort類的編程方法。
系統功能結構主要由串口初始化模塊、串口數據接收模塊、串口數據處理模塊和圖像重現模塊等模塊組成。程序設計的思想如圖3所示。

圖3 串口通信程序框圖
串口初始化模塊主要定義SerialPort類對象,設置通信端口號及波特率、數據位、停止位和校驗位等。串口數據接收模塊主要在串口監聽線程中完成。當串口開啟時,SerialPort類會建立ListenThread監聽線程,監聽線程用來等待注冊的串口中斷。當中斷事件發生時,調用數據處理事件(DataReceived事件),直到串口關閉而退出線程,否則繼續進入循環等待。由于每次接收到的串口緩存數據長度不一致,但又要對所有接收到的數據進行處理,防止丟包,所以先將接收的字符存入數據緩沖區。串口數據處理模塊將圖像中每個像素點的R、G、B這3個分量存儲在數組中。
本文采用ArrayList數組緩存數據。ArrayList數組能夠動態地添加和刪除元素,可以根據需要自動擴充容量。 圖像重現模塊將串口接收的數據顯示成圖像,在串口接收完成時,ArrayList數組中存儲有一幀圖像中每個像素點的R、G、B這3個分量數據。但是要將接收的數據以圖片的形式顯示,就要對數據進行編碼。由于圖像的編碼技術比較復雜,本文采用圖像填充技術,主要是讀取一幅320×240的BMP圖片,然后根據串口接收的數據對圖像進行填充修改,再現軸承圖片。
4實驗及分析
以STM32拍攝的軸承圖像為例,在本例中設置串口波特率為38 400 B/s。打開串口,顯示串口上傳的R、G、B三色分量,當數據傳輸結束,顯示所拍攝的軸承樣本圖像。
實驗結果表明,系統采集的軸承圖像數據準確,系統重現圖像與實際圖像吻合,拍攝的圖像分辨率能夠滿足后續的圖像處理要求,且該系統設計價格低廉,有比較好的實用性和市場競爭力。
5結束語
本文介紹了基于STM32的低成本COMS圖像采集系統的硬件和軟件組成。與傳統的圖像采集系統相比,基于STM32的圖像采集系統優勢比較明顯:第一,成本低,市場廠競爭力強[7];第二,結構簡單,小巧方便;第三,提出了以圖像填充更新圖像的方式,實時性好;第四,應用到軸承檢測行業,使得軸承檢測系統具有圖像采集和傳輸功能,方便用戶調試、觀測軸承。
參考文獻
[1] 張冬陽,薄振桐.基于FPGA與USB 2.0接口的紅外圖像采集系
統設計[J].電子科技,2014,27(11):48-51.
[2] 李德明,韓劍,姜國強.基于OV7670的圖像采集與顯示系統設計[J].儀器儀表學報,2010,31(8):30-33.
[3] 鄭凌.基于圖像的軸承套加工缺陷檢測研究[D].杭州:浙江大學,2012.
[4] 王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設計[J].信息科技,2013(11):90-91.
[5] 陳超,李燦平,韓立昌.SerialPort類在雷達串口通信中的應用[J].電腦知識與技術,2011(7):5921-5922,5927.
[6] 鄔蓉蓉,滕召勝,譚旗,等.基于 C # .NET的智能化汽車衡稱重管理系統[J].儀表技術與傳感器,2010(7):48-50.
[7] 董大波,王湘云,趙柏秦,等.基于單片機的低成本CMOS圖像采集系統[J].儀表技術與傳感器,2014(2):45-49.
Design of the Bearing Image Acquisition and Reproduction System Based on STM32
顧靜靜姜平
(南通大學電氣工程學院,江蘇 南通226019)
摘要:針對傳統的圖像采集面臨的主要問題,提出了基于STM32的高性價比的圖像采集與重現方案。重點介紹了該方案的硬件組成和軟件設計,主要設計思想是用STM32讀取COMS攝像頭OV7670緩存數據,通過串口傳送到上位機;在VS2010編譯環境下,利用微軟SerialPort類實現STM32與上位機的串口通信,以模板填充的方式重現圖片。實驗結果表明,該系統可以實現軸承圖像的采集與重現功能,且重現圖像與實際圖像吻合,清晰度高,穩定性好,能夠滿足后續軸承圖像處理的要求。
關鍵詞:圖像采集STM32COMS攝像頭軸承傳感器串行通信軟件設計數據處理
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
文獻標志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201604011
江蘇省2014年度普通高校研究生科研創新計劃基金資助項目(編號:KYLX_1306)。
修改稿收到日期:2015-08-30。
第一作者顧靜靜(1990-),女,現為南通大學控制科學與工程專業在讀碩士研究生;主要從事智能檢測與控制技術的研究。