一種遙控式可存儲(chǔ)的圖像采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
圖像采集技術(shù)隨著科技的不斷進(jìn)步在全球的應(yīng)用已越來(lái)越廣泛,如軍用工業(yè)、醫(yī)療、電子等各領(lǐng)域。在國(guó)內(nèi),各行各業(yè)對(duì)采用圖像采集技術(shù)的工業(yè)自動(dòng)化、智能化需求也廣泛出現(xiàn),逐步開(kāi)始了工業(yè)現(xiàn)場(chǎng)的應(yīng)用,比如,制藥行業(yè)的藥品檢測(cè)分裝、印刷業(yè)的印刷色彩檢測(cè)、PCB板的表面質(zhì)量檢測(cè)、LCD屏的質(zhì)量檢測(cè)等。所以,以圖像采集功能為核心,開(kāi)發(fā)一款適合工業(yè)領(lǐng)域應(yīng)用且功能齊全、操作方便的圖像采集系統(tǒng)會(huì)給用戶帶來(lái)很大的實(shí)惠。
目前圖像采集方面已有很多且很完善的方案,本文設(shè)計(jì)選擇了利用FPGA進(jìn)行圖像采集的方案,設(shè)計(jì)了一套圖像采集系統(tǒng)。與普通應(yīng)用于工業(yè)方面的圖像采集系統(tǒng)不同,本系統(tǒng)添加了存儲(chǔ)功能,并對(duì)傳統(tǒng)的控制操作的方式進(jìn)行了改進(jìn)。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)總體設(shè)計(jì)如下:圖像通過(guò)VGA接口用顯示器顯示,顯示速率可達(dá)25 f/s;系統(tǒng)可以將在顯示器上看到的當(dāng)前圖像以位圖的格式存儲(chǔ)到優(yōu)盤(pán)或其他USB設(shè)備中,并可以對(duì)存儲(chǔ)的圖像進(jìn)行回顯;用遙控器代替了按鍵的控制方式,可以在幾米范圍內(nèi)用遙控器調(diào)節(jié)曝光、增益、十字線、存圖和讀圖等所有功能,操作靈活方便。系統(tǒng)用美光公司的130萬(wàn)像素MT9T001作為圖像傳感器;Altera公司的FPGA芯片EP2C8Q208來(lái)完成圖像采集和顯示功能的控制,在實(shí)時(shí)瀏覽圖像時(shí),它從MT9T001中采集出Bayer陣列的黑白圖像數(shù)據(jù),然后將采集的數(shù)據(jù)用插值算法轉(zhuǎn)換成24位RGB數(shù)據(jù),由于采集圖像的速度為40 MHz,而VGA顯示的速度只有25 MHz,所以FPGA將轉(zhuǎn)換完的數(shù)據(jù)放到SDRAM中緩存一下再送給驅(qū)動(dòng)VGA顯示的ADV7125芯片;ADV7125為ADI公司的高速數(shù)模轉(zhuǎn)換芯片,將數(shù)字真彩色圖像數(shù)據(jù)轉(zhuǎn)換成可以用VGA接口傳輸?shù)哪M視頻信號(hào);用Atmel公司的ATmega 8L芯片來(lái)完成遙控器的解碼、讀寫(xiě)USB設(shè)備的控制以及位圖格式的創(chuàng)建等;用集成了文件系統(tǒng)的FTDI的VNC1L-1A芯片作為與USB設(shè)備通信的接口芯片,單片機(jī)加一片接口芯片完成USB的Host功能,省去了對(duì)文件系統(tǒng)的處理,節(jié)約了軟件的開(kāi)發(fā)時(shí)間。將這款帶存儲(chǔ)功能和遙控控制方式的圖像采集系統(tǒng)應(yīng)用到了工業(yè)領(lǐng)域,做成產(chǎn)品,作為工業(yè)眾多工業(yè)相機(jī)中的一種。圖1是其總體設(shè)計(jì)框圖。
2 存儲(chǔ)模塊設(shè)計(jì)
目前存儲(chǔ)數(shù)據(jù)的方式有很多種,如硬盤(pán)、FLASH、光盤(pán)等,其中容易攜帶且使用方便的應(yīng)是移動(dòng)硬盤(pán)、優(yōu)盤(pán)、SD卡,這幾種方式都可以通過(guò)USB口來(lái)傳輸數(shù)據(jù)(SD卡或CF等可借助相應(yīng)的讀卡器再通過(guò)USB口傳輸數(shù)據(jù)),可見(jiàn)USB總線的應(yīng)用已經(jīng)很普遍,USB總線的即插即用、速度快、可以自供電等優(yōu)點(diǎn)也的確是其他設(shè)備所不能比的。所以系統(tǒng)的存儲(chǔ)部分設(shè)計(jì)成USB設(shè)備,USB設(shè)備分為USB主(Host)設(shè)備和USB從(Device)設(shè)備,USB從設(shè)備只能被動(dòng)地由主設(shè)備寫(xiě)入或讀出數(shù)據(jù),不符合本系統(tǒng)的要求。所以選擇了USBHost設(shè)備,只要將優(yōu)盤(pán)等USB從設(shè)備插到系統(tǒng)的USB口上,就可以將當(dāng)前要存儲(chǔ)的圖片存儲(chǔ)到U盤(pán)等存儲(chǔ)設(shè)備中。
USB Host設(shè)備的典型例子是PC機(jī),這種Host功能是在操作系統(tǒng)下完成的,所以現(xiàn)在市面上可以移植操作系統(tǒng)的微控制器芯片大多都集成了USB Host功能,像三星和飛利浦的ARM芯片、君正公司開(kāi)發(fā)的MIPS核芯片JZ4740等。這種采用帶操作系統(tǒng)的方案對(duì)有一定經(jīng)驗(yàn)的開(kāi)發(fā)人員來(lái)說(shuō)開(kāi)發(fā)起來(lái)比較容易,但對(duì)生手來(lái)說(shuō)需要一定的熟悉過(guò)程。只為了實(shí)現(xiàn)USB Host功能就選擇用操作系統(tǒng)的方式完成整個(gè)系統(tǒng)的控制是沒(méi)有必要的,這樣做不僅浪費(fèi)資源,而且會(huì)增加底層驅(qū)動(dòng)的開(kāi)發(fā)時(shí)間。所以本設(shè)計(jì)選擇了比較簡(jiǎn)單的方式,只用一片單片機(jī)和一個(gè)USB接口芯片來(lái)完成USB Host功能。這樣只要會(huì)用單片機(jī)的開(kāi)發(fā)人員都可以做USBHost設(shè)備。市場(chǎng)上USB從設(shè)備的接口芯片有飛利浦的PDIUSBDl2和ISPl581等,但USB Host接口芯片則比較少。經(jīng)試驗(yàn),最終確定VNClL-1A這款芯片作為USB Host控制器。
2.1 USB Host控制器
VNClL-1A芯片在FTDI公司Vinculum系列中第一個(gè)嵌入了USB主控制器,不僅能處理USB Host接口和數(shù)據(jù),還內(nèi)置了MCU和FLASH,而且也封裝了USB Device類。它集成了12~48 MHz的時(shí)鐘倍頻器,支持上電復(fù)位功能,嵌入了64 KB FLASH ROM,4 KB SRAM,擁有FTDI提供的標(biāo)準(zhǔn)的USB固件庫(kù),支持USB 2.O的全速(12 Mb/s)和低速(1.5 Mb/s)速率。28個(gè)GPIO可以做通用I/O和命令監(jiān)測(cè)接口,具有2對(duì)USB總線接口,可以用串口或者磁盤(pán)方式對(duì)其燒寫(xiě)程序。當(dāng)芯片作為主設(shè)備要與優(yōu)盤(pán)等從設(shè)備通信時(shí),它可以處理FAT文件系統(tǒng),支持FATl2,F(xiàn)ATl6,F(xiàn)AT32格式,文件命名方式為傳統(tǒng)的8.3格式,即文件名不超過(guò)8個(gè)字符,擴(kuò)展名為3個(gè)字符,如文件名可以為text.txt。在執(zhí)行具體的操作時(shí)只需要向VNClL發(fā)送一個(gè)簡(jiǎn)單的命令就能完成像新建文件夾、新建文件、讀文件、寫(xiě)文件、打開(kāi)關(guān)閉文件等功能。比如要在優(yōu)盤(pán)中創(chuàng)建一個(gè)hello.-txt文件,可以用字符方式向VNClL逐一寫(xiě)入“OPW+空格+hello.txt+回車”的字符,就可以在優(yōu)盤(pán)中看見(jiàn)一個(gè)hello.txt的文件,或者用十六進(jìn)制代碼的方式發(fā)送“09 20 file OD”,其中file為hello.txt各字符的相應(yīng)ASCII碼值。廠家在網(wǎng)站上提供了免費(fèi)的目標(biāo)代碼,用戶可以根據(jù)不同的需求下載不同的目標(biāo)代碼,在本設(shè)計(jì)中,選擇用一個(gè)USB口作USBHost功能的VDAPFUL_V3_65.ROM目標(biāo)代碼,并設(shè)計(jì)成串口方式將目標(biāo)代碼燒錄到芯片中。所以用戶不用關(guān)心VNClL內(nèi)部程序是怎么執(zhí)行的,只關(guān)心需要它完成USB主設(shè)備還是從設(shè)備還是其他功能,去找相應(yīng)的目標(biāo)代碼就可以了,燒錄完程序的VNCIL芯片就相當(dāng)于一顆接口芯片,只要接口連接正確,時(shí)序操作正確需要的功能就會(huì)正常運(yùn)行。VNC-lL擁有專門(mén)的UART,SPI和并口引腳,所以對(duì)它進(jìn)行控制時(shí)可以選用三種接口中的任意一種,如果想看一下操作命令的返回值,可以用串口方式連接到PC機(jī)上,在PC機(jī)上用串口調(diào)試助手向VNClL發(fā)送相應(yīng)的命令后,會(huì)看到對(duì)應(yīng)的返回值情況。
2.2 存儲(chǔ)過(guò)程的實(shí)現(xiàn)
位圖圖像在計(jì)算機(jī)中使用很廣泛,例如在Windows中,記事本、寫(xiě)字板中的文字就是用位圖圖像表示出來(lái)的。許多以其他格式存儲(chǔ)的圖像,就是在位圖圖像的基礎(chǔ)上,進(jìn)行優(yōu)化處理后得到的,例如JPEG圖像等。在數(shù)字圖像處理中,許多算法就是針對(duì)24位真彩色位圖或灰度位圖設(shè)計(jì)的。因此,將采集的圖像以位圖的格式存儲(chǔ)便于后期對(duì)圖像的處理。位圖的存儲(chǔ)格式分為24位真彩色格式和灰度位圖格式,24位真彩色格式比灰度位圖格式大2/3,因?yàn)榛叶葓D像是用一個(gè)字節(jié)表示一個(gè)像素,而24位真彩色位圖是用三個(gè)字節(jié)表示一個(gè)像素,所以本設(shè)計(jì)用灰度位圖格式存儲(chǔ)圖像。
當(dāng)要存儲(chǔ)一幀圖像時(shí),ATmega8L向VNClL發(fā)送新建文件命令,在存儲(chǔ)設(shè)備中就會(huì)新建一個(gè).BMP文件,然后ATmega8L再將位圖的14 B的文件頭、40 B的信息頭、1 024 B的顏色索引表寫(xiě)入.BMP文件的開(kāi)始部分,寫(xiě)完后ATmega8L給FPGA一個(gè)ready信號(hào),F(xiàn)PGA收到此信號(hào)后直接將圖像數(shù)據(jù)通過(guò)VNC1L送到存儲(chǔ)設(shè)備的.BMP文件中;FPGA送完一幀圖像數(shù)據(jù)后再給ATmega8L一個(gè)結(jié)束信號(hào),之后ATmega8L執(zhí)行關(guān)閉當(dāng)前文件命令,至此一個(gè)BMP圖存儲(chǔ)結(jié)束。本設(shè)計(jì)希望此系統(tǒng)采集的所有圖像在存儲(chǔ)設(shè)備中用單獨(dú)的文件夾存儲(chǔ),這樣每次在新插入存儲(chǔ)設(shè)備時(shí)ATmega8L要先向VNC1L發(fā)送一個(gè)查詢命令,查詢當(dāng)前根目錄中是否已存在本系統(tǒng)專用的文件夾,如果沒(méi)有則新建此文件夾,有則在此文件夾中查詢是否已經(jīng)有.BMP文件,如果沒(méi)有則新建,并且文件名以數(shù)字編號(hào)O開(kāi)始命名,如果有則要查詢當(dāng)前哪個(gè)文件名的編號(hào)最大,然后以最大編號(hào)數(shù)加一的方式作為要新建文件的文件名。當(dāng)要從存儲(chǔ)設(shè)備中讀取一幅圖像時(shí),ATmega8L同樣要執(zhí)行查詢文件夾和文件是否存在的命令,如果都存在則從文件名編號(hào)最大的那張圖片開(kāi)始讀取。讀取過(guò)程與寫(xiě)過(guò)程類似,只是用的命令不同,而且讀的時(shí)候要等VNC1L將位圖的1078B的文件信息讀完后才能將圖像數(shù)據(jù)傳給FPGA。VNC1L與FPGA和ATmega8L用并口的方式進(jìn)行通信,只需8條數(shù)據(jù)線和4根信號(hào)線即可完成數(shù)據(jù)傳輸,接口連接如圖2所示。
3 遙控功能設(shè)計(jì)
目前大多數(shù)的電子產(chǎn)品采用的控制方式都是開(kāi)關(guān)式按鍵或觸摸的方式,如數(shù)碼相機(jī)、手機(jī)等,工業(yè)用的設(shè)備也是如此。本文所述的控制方式采用了無(wú)線的遙控方式,這種遙控方式在電視機(jī)領(lǐng)域已應(yīng)用多年,技術(shù)已經(jīng)很成熟,原理簡(jiǎn)單,易于實(shí)現(xiàn)。由于選用的遙控器適用于36~40 kHz載波頻率的紅外接收器,所以設(shè)計(jì)中選用了36 kHz紅外接收器,ATmega 8L接收紅外接收器的信號(hào),從中解析出遙控器上各個(gè)按鍵的碼值,并會(huì)轉(zhuǎn)去執(zhí)行遙控器上相應(yīng)按鍵上的功能。遙控器上設(shè)計(jì)了21個(gè)按鍵,代表了此系統(tǒng)擁有的所有功能,分別為:
圖像存儲(chǔ)功能 按下存儲(chǔ)鍵就可以將當(dāng)前看到的畫(huà)面存儲(chǔ)到存儲(chǔ)設(shè)備中;
圖像預(yù)覽即讀圖功能 將存儲(chǔ)在存儲(chǔ)設(shè)備中的圖片重新讀出,在顯示器上顯示,預(yù)覽圖片時(shí)可以在當(dāng)前圖片的基礎(chǔ)上,上翻或下翻即可循環(huán)瀏覽已存儲(chǔ)的所有圖片;
紅、綠、藍(lán)增益及曝光值的調(diào)節(jié)功能 可以對(duì)這4個(gè)參數(shù)進(jìn)行增大和減小的控制;
雙十字線的控制和調(diào)節(jié)功能 當(dāng)想要十字線功能時(shí)只要按一下十字線按鍵就會(huì)在當(dāng)前實(shí)時(shí)顯示的畫(huà)面上看到兩條十字交叉的線,十字線的位置可以根據(jù)用戶的需要任意移動(dòng),當(dāng)需要雙十字線時(shí)需要兩個(gè)控制十字線的按鍵都按下,使用雙十字線可以圈定整幅畫(huà)面上重點(diǎn)觀察的范圍;
圖像凍結(jié)功能 當(dāng)凍結(jié)鍵按下時(shí)顯示器上的整個(gè)畫(huà)面凍結(jié),此時(shí)不能進(jìn)行存圖、讀圖或其他任何操作;
當(dāng)前參數(shù)值保存功能 此鍵按下后會(huì)對(duì)當(dāng)前的增益、曝光、十字線位置等參數(shù)的當(dāng)前值存儲(chǔ)到ATmega8L的E2PROM中,這樣在下次啟動(dòng)系統(tǒng)時(shí),系統(tǒng)會(huì)將E2PROM保存的各參數(shù)值一一讀出;
復(fù)位初始參數(shù)值功能 如果用戶不小心將某一參數(shù)值調(diào)亂了,可以按下此鍵來(lái)恢復(fù)系統(tǒng)最原始的參數(shù)值。
4 結(jié)語(yǔ)
本文所述的圖像采集系統(tǒng)中存儲(chǔ)方案的選擇和設(shè)計(jì)對(duì)于數(shù)據(jù)量稍大又不是很復(fù)雜的系統(tǒng)的設(shè)計(jì)具有借鑒作用,而且將遙控器技術(shù)作為系統(tǒng)控制操作的方式,讓人耳目一新,此圖像采集系統(tǒng)應(yīng)用于工業(yè)領(lǐng)域,操作方便且實(shí)惠新穎。