基于FPGA的LED體三維顯示方案研究
引 言
眾所周知, 視覺是人類感知世界的最重要的方式, 而現(xiàn)實(shí)生活中的所有物質(zhì)形態(tài)都是以三維空間而客觀存在。三維顯示能真正地再現(xiàn)客觀世界的立體空間, 提供更符合人們觀察習(xí)慣的交流方式, 有助于人們?cè)诰C合運(yùn)用各種深度暗示之后, 通過大腦的計(jì)算感知而獲得真實(shí)、豐富、可靠的視覺體驗(yàn), 對(duì)社會(huì)的發(fā)展以及在科技、經(jīng)濟(jì)等方面的發(fā)展具有重要的作用。
目前, 三維顯示大致可以分為四類: 體視三維顯示、全息三維顯示、透視三維顯示和體三維顯示 ,其顯示的原理和特點(diǎn)如表1 所示。
表1 各類三維顯示原理及特點(diǎn)
本文通過旋轉(zhuǎn)24×16 二維LED 陣列實(shí)現(xiàn)了具有69120個(gè)體像素, 空間尺寸為Φ9414 mm ×6618mm 柱體內(nèi)的三維顯示, 文中論述了系統(tǒng)的整體結(jié)構(gòu)、顯示原理及其各組成部分的實(shí)現(xiàn)方法。最后并以顯示“茶壺”為例, 對(duì)此體三維顯示系統(tǒng)進(jìn)行了分析和討論。
1 LED 體三維顯示系統(tǒng)設(shè)計(jì)
1.1 整體方案
由于人眼具有視覺暫留的特性, 即人類視覺對(duì)亮度改變的跟蹤會(huì)由于意識(shí)處理延遲而滯后。基于此特性, 利用電機(jī)驅(qū)動(dòng)置于對(duì)稱轉(zhuǎn)軸兩側(cè)的發(fā)光二極管陣列, 使之高速旋轉(zhuǎn), 周期性地掃出一個(gè)柱體空間。同時(shí), 尋址驅(qū)動(dòng)控制電路根據(jù)需要調(diào)制不同時(shí)刻LED陣列的發(fā)光狀態(tài), 這樣通過快速顯示一幅幅二維圖像截面序列來實(shí)現(xiàn)三維顯示。由于人眼視覺暫留時(shí)間約為50~100ms, 當(dāng)電機(jī)轉(zhuǎn)速超過10r/s時(shí), 人便不會(huì)有閃爍的感覺, 而是看到三維的立體圖像。根據(jù)此原理可設(shè)計(jì)如圖1 所示的LED體三維顯示系統(tǒng)。
利用計(jì)算機(jī)生成三維數(shù)據(jù)再通過數(shù)據(jù)傳輸電路把數(shù)據(jù)傳輸?shù)叫D(zhuǎn)驅(qū)動(dòng)板上面的存儲(chǔ)器中, 并且由角度編碼器來測(cè)試電機(jī)的旋轉(zhuǎn)角度并把信號(hào)送給FPGA , 然后由FPGA 根據(jù)采集的角度編碼器輸出信號(hào)驅(qū)動(dòng)LED 屏顯示并按時(shí)刷新LED 顯示屏。同時(shí), 整個(gè)旋轉(zhuǎn)驅(qū)動(dòng)板在電機(jī)的驅(qū)動(dòng)下快速的旋轉(zhuǎn), 快速顯示一幅幅二維截面圖像來實(shí)現(xiàn)三維顯示。
1.2 三維數(shù)據(jù)生成
利用Matlab 軟件的強(qiáng)大功能, 首先可以通過im read ()、im f info ()、m eshgrid ()、m eshc () 和su rf ()等語句來實(shí)現(xiàn)具有灰度值的三維圖像, 假設(shè)獲得的三維圖像角坐標(biāo)為P (X0, Y0, Z0)。
令LED陣列旋轉(zhuǎn)所得的圓柱空間中LED 燈的柱坐標(biāo)為F ( r, H, z ) , 根據(jù)柱坐標(biāo)與直角坐標(biāo)的轉(zhuǎn)換關(guān)系, 求得空間LED燈的三維直角坐標(biāo)E (X 1, Y 1,Z 1) 可表示如下:
其中r, H, z 均為整數(shù), 且有: - 12 r≤12, 0 H≤360, 0 z ≤16。
最后, 令D(X2, Y2, Z2) = P(X0, Y0, Z0) ∩E (X1, Y1, Z1 ) 求出該顯示的L ED 燈的三維直角坐標(biāo), 以此作為三維數(shù)據(jù)的信息源。
從Matlab 610 版本開始,Mathworks 公司在軟件中增加了設(shè)備控制箱( Instrument control toolbox ) , 提供對(duì)RS2232/RS2485 通信標(biāo)準(zhǔn)的串口通信的正式支持。因此本系統(tǒng)使用該工具箱的serial 類及fopen、fw rite 等函數(shù), 通過RS2232 串口并利用數(shù)據(jù)傳輸電路把獲得的三維圖像數(shù)據(jù)傳輸?shù)絃ED 驅(qū)動(dòng)電路板上。
1.3 數(shù)據(jù)傳輸電路
三維圖像數(shù)據(jù)利用設(shè)備控制箱通過RS2232 串口后, 再利用紅外編解碼技術(shù)把數(shù)據(jù)傳到旋轉(zhuǎn)的LED驅(qū)動(dòng)板上, 其整個(gè)數(shù)據(jù)傳輸?shù)耐ㄓ嵔Y(jié)構(gòu)圖如圖2 所示。
在單片機(jī)串口模塊中選用電平轉(zhuǎn)換芯片MAX232 芯片實(shí)現(xiàn)TTL 電平與RS2232 電平的雙向轉(zhuǎn)換, 從而把三維圖像數(shù)據(jù)傳送到單片機(jī)的串行接收端口RXD 上, 然后單片機(jī)再通過其發(fā)送端口TXD把數(shù)據(jù)送出。圖中的調(diào)制與紅外發(fā)射模塊通過由N E555 芯片構(gòu)成的多諧振蕩電路調(diào)制成38 kHz 的載波信號(hào), 最后利用紅外發(fā)射管TSAL6238 以光脈沖的形式向外發(fā)送。為了保證紅外接收數(shù)據(jù)的準(zhǔn)確性,N E555 產(chǎn)生的振蕩頻率要盡可能接近38 kHz,所以在選擇電阻電容時(shí)要選用精密的元件并保證電源電壓的穩(wěn)定性。
數(shù)據(jù)傳輸電路中的紅外接收解調(diào)模塊選擇Vishay 公司的TSOP1738, 其內(nèi)部電路功能已包括把接收到的載波頻率為38 kHz 的脈沖調(diào)制紅外光信號(hào)轉(zhuǎn)化為電信號(hào), 并由前放大器和自動(dòng)增益控制電路進(jìn)行放大處理。然后, 通過帶通濾波器進(jìn)行濾波, 濾波后的信號(hào)由解調(diào)電路進(jìn)行解調(diào)。最后, 由輸出級(jí)電路進(jìn)行反向放大輸出。
所以, 選用此紅外接收模塊只要把其數(shù)據(jù)輸出直接送到FPGA 處理即可。經(jīng)實(shí)驗(yàn)測(cè)定, 利用此紅外傳輸電路傳輸數(shù)據(jù), 速率最高可達(dá)1 kB/ s。
1.4 角度編碼器與電機(jī)模塊電路
本系統(tǒng)立體顯示是通過快速顯示旋轉(zhuǎn)空間中的一系列二維截面來實(shí)現(xiàn)的, 把LED 屏旋轉(zhuǎn)一周分成180 個(gè)截面, 即每轉(zhuǎn)2°要刷新一次顯示屏。為了準(zhǔn)確刷新顯示屏, 本系統(tǒng)選用角度編碼器來識(shí)別顯示屏轉(zhuǎn)過的角度, 角度編碼器通過測(cè)試電機(jī)旋轉(zhuǎn)發(fā)出脈沖可識(shí)別電機(jī)的旋轉(zhuǎn)角度。本系統(tǒng)選用的角度編碼器型號(hào)為ZSP38062022G2360B25224E。此編碼器旋轉(zhuǎn)一周可輸出360 個(gè)脈沖信號(hào)。這樣電機(jī)每轉(zhuǎn)2°, 角度編碼器便可發(fā)出2 個(gè)脈沖信號(hào),LED 顯示屏控制系統(tǒng)通過計(jì)數(shù)采集的角度編碼器輸出脈沖數(shù)來控制刷新LED 屏。
同時(shí), 利用角度編碼器的輸出脈沖再通過單片機(jī)的處理可測(cè)出電機(jī)的旋轉(zhuǎn)速度, 并可送到數(shù)碼管顯示。此外, 單片機(jī)可對(duì)測(cè)得的電機(jī)速度進(jìn)行判斷,判斷其是否超出一定的范圍, 如超出范圍可通知由單片機(jī)控制的報(bào)警電路報(bào)警。其電機(jī)模塊電路圖如圖3 所示。
電路中所用的電機(jī)為無源電機(jī), 所以需要電機(jī)的驅(qū)動(dòng)電路, 考慮電機(jī)在加負(fù)載時(shí)速度會(huì)減慢, 設(shè)計(jì)電機(jī)的速度可調(diào), 其調(diào)節(jié)范圍為0~ 4 200 r/m in。電路中電機(jī)與角度編碼器套在一起, 其轉(zhuǎn)速v ( r/s ) 與角度編碼器的輸出脈沖頻率f (Hz) 具有如下關(guān)系:
v = f/360 (2)
通過此對(duì)應(yīng)關(guān)系利用單片機(jī)可測(cè)出電機(jī)的旋轉(zhuǎn)速度并可送到數(shù)碼管顯示。同時(shí)利用設(shè)計(jì)的報(bào)警器可達(dá)到對(duì)電機(jī)旋轉(zhuǎn)速度的監(jiān)控。
1.5 LED 尋址驅(qū)動(dòng)電路
LED 尋址驅(qū)動(dòng)控制電路主要是利用FPGA 芯片EP1C3 來控制LED的專門驅(qū)動(dòng)芯片BHL2000, 并且EP1C3 根據(jù)采集的角度編碼器的輸出脈沖數(shù)按時(shí)讀取存儲(chǔ)器中的三維圖像數(shù)據(jù), 然后傳送給BHL 2000, 從而來驅(qū)動(dòng)LED 屏的列顯示。同時(shí), FP2GA 又將行掃描信號(hào)輸出經(jīng)后級(jí)放大來驅(qū)動(dòng)L ED 屏的行顯示, 其具體的原理框圖如圖4 所示。
由于LED屏在旋轉(zhuǎn)的過程中會(huì)造成亮度損失,所以FPGA 的行掃描信號(hào)輸出需經(jīng)過74HC245 和UDN2981 的放大, 這樣行信號(hào)輸出最大電流可達(dá)到500 mA。此外,BHL 2000 屬于灌電流型器件且每個(gè)數(shù)據(jù)輸出端電流可達(dá)到80 mA , 可直接驅(qū)動(dòng)L ED 顯示。驅(qū)動(dòng)電路中的存儲(chǔ)器選擇STC62WV 5128, 其容量為512 k×8 b it, 而本系統(tǒng)一幅三維圖像的數(shù)據(jù)量為6715 k×8 b it, 所以選擇STC62WV 5128 是足夠的。
值得說明的是, EP1C3 對(duì)BHL 2000 的寫數(shù)據(jù)是在BHL 2000 寫入時(shí)鐘WR 的驅(qū)動(dòng)下, 數(shù)據(jù)從D in02D in7 輸入, 在內(nèi)部移位寄存器中串行移位16 次后,由級(jí)聯(lián)口SHO02SHO7移出。同時(shí)BHL 2000 行、場(chǎng)控制信號(hào)HS、VS確定數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)位置, 最多可存8×16×32 個(gè)字節(jié)。此外,BHL 2000 的輸出行、場(chǎng)控制信號(hào)HCL K 和CLR 確定取數(shù)位置, 在讀出時(shí)鐘CLK控制下進(jìn)行灰度調(diào)制, 輸出脈寬信號(hào)O02O15, 從而驅(qū)動(dòng)LED顯示屏。
2 軟件設(shè)計(jì)
設(shè)計(jì)的主要原理是在逐行掃描信號(hào)的驅(qū)動(dòng)下,在每次行掃描信號(hào)來臨時(shí), 送出8 位的列數(shù)據(jù), 電機(jī)每旋轉(zhuǎn)2°的時(shí)間內(nèi), FPGA 一直掃描同一幅切面圖像數(shù)據(jù), 然后每旋轉(zhuǎn)兩度后就刷新掃描另一幅切面圖像數(shù)據(jù), 值得注意的是, 每一行掃描信號(hào)后面要加一個(gè)消隱信號(hào), 即再顯示下一行數(shù)據(jù)時(shí)要把前一行L ED 燈關(guān)掉, 否則會(huì)產(chǎn)生串?dāng)_, 圖5 所示即為加消隱信號(hào)后的16 個(gè)行掃描信號(hào)。
評(píng)論