引言
我們跑步或騎自行車時,手臂的振動常常使我們手中的電子設(shè)備所顯示的圖像看起來模糊不清,長時間觀看(如觀看MP4視頻、收發(fā)短信等)容易造成視覺疲勞。汽車輪船的顯示設(shè)備(如車載GPS),強(qiáng)振動機(jī)床的數(shù)控系統(tǒng)以及一些工程機(jī)械(如挖掘機(jī)、推土機(jī)等)也會發(fā)生類似的問題??梢?,由于振動而導(dǎo)致顯示效果模糊不清的現(xiàn)象是普遍存在的。
究其原因,在于這些顯示設(shè)備輸出的均為靜態(tài)圖像,基礎(chǔ)的振動使其成為(相對于人)振動圖像,由于人神經(jīng)系統(tǒng)的滯后(人的正常反應(yīng)時間大約需要0.3s),造成大腦所接收到的是模糊不清的畫面。當(dāng)然對于人的神經(jīng)系統(tǒng)我們暫時束手無策,但是我們可以首先檢測出基礎(chǔ)的振動狀態(tài),由微控制器控制顯示器件的輸出圖像朝反方向偏移(如此,實時的偏移即是動態(tài)顯示),綜合的顯示效果自然是(相對于人)靜止不動的圖像,上面的問題就迎刃而解了。
問題的描述
問題的產(chǎn)生
正常情況下顯示器件相對觀察者是靜止的,但很多情況下顯示器件會發(fā)生振動,這些振動會使顯示器件所顯示的圖像看起來模糊不清,長時間觀看容易造成視覺疲勞。如圖1所示,基礎(chǔ)振動在⊿t時間內(nèi),產(chǎn)生(⊿x,⊿y)的絕對位移(這里假定人靜止不動),由于顯示器件所顯示的圖像是靜態(tài)的或者是與基礎(chǔ)振動無關(guān)的動態(tài)圖像流,那么圖像也會在這⊿t時間內(nèi)產(chǎn)生(⊿x,⊿y)的絕對位移。人的視覺系統(tǒng)的反應(yīng)速度(人的正常反應(yīng)時間大約需要0.3s)低于基礎(chǔ)振動的速度,幾幅相互間有偏移的圖像就會重疊在一起如圖1所示,造成圖像看起來模糊不清。
問題的解決方法
最容易也是最簡單的解決辦法就是測量出在⊿t時間內(nèi)產(chǎn)生的(⊿x,⊿y)絕對位移值,然后控制顯示器件使輸出圖像產(chǎn)生相反方向的偏移量(-⊿x,-⊿y)。這樣綜合的效果是圖像相對觀察者是靜止的,圖像又變得清晰了!
要實現(xiàn)這種對振動圖像的補(bǔ)償會遇到幾個挑戰(zhàn)。首先,是基礎(chǔ)振動的絕對位移值的測量,我們先來分析基礎(chǔ)振動的特點:
·振動頻率低(3Hz~30Hz);
·振幅較?。?mm~3mm),據(jù)此我們可以計算基礎(chǔ)振動的最大加速度(amax=4π2f2?A=10.87g);
·對顯示效果影響最大的是顯示器件平面內(nèi)的平面運動;
·振動多發(fā)生在便攜設(shè)備上。
針對這種振動最簡單的測量方法是實時測得振動的加速度a,然后對其作時間的二次積分得到基礎(chǔ)振動的絕對位移值,這種方法不適合做長時間的測量,因為積分的起始點選擇可靠性和加速度的噪聲會使長時間的積分運算后誤差放大?,F(xiàn)在問題歸納為對一個加速度a<10.87的振動進(jìn)行實時測量,并對加速度a作二次積分計算位移值。其次,是如何實時輸出具有相反方向偏移量的動態(tài)圖像。這涉及到兩個速度:處理器的運算速度和顯示器件的響應(yīng)速度。因為實時動態(tài)圖像的顯示需要很大的計算量(處理每秒鐘40幀的128×64的單色圖像就需要每秒40 kBytes的處理量,這對MCU是個較大的挑戰(zhàn));普通的LCD屏幕也要有較長的響應(yīng)延時,刷新一幅128×64的單色圖像就需要1024×72μs=73.7ms(ST7920),這簡直無法實現(xiàn)圖像的動態(tài)顯示。還有一個問題是顯示模塊與信源的通訊,模塊化設(shè)計要有方便的數(shù)據(jù)接口以適應(yīng)不同的要求,還要考慮到顯示模塊長期的振動會使通訊電纜造成疲勞損壞。
設(shè)計概述
基礎(chǔ)振動的絕對位移值的測量
上文提到,基礎(chǔ)振動的絕對位移值的測量可歸納為對一個加速度 a<10.87的振動進(jìn)行實時測量,并對加速度a作二次積分計算位移值。本系統(tǒng)中加速度傳感器采用低量程三軸向加速度傳感器MMA7260QT,最大量程為±6g,響應(yīng)頻寬為fXY=350Hz、fZ=150Hz,MMA7260QT的敏感方向如圖3所示,XY軸輸出電壓與芯片平面內(nèi)的加速度成比例。
因為所要測量的加速度值和重力加速度值在一個量級,所以要考慮重力加速度的影響。讓傳感器平面平行于顯示器件平面(如圖4中的ABC平面為顯示器平面,平面為水平面),初始位置時傳感器各軸所測得的加速度分量aX0、aY0、aZ0反映了顯示器相對水平面的傾角(圖4中的θ1、θ2)。如果顯示器只在當(dāng)前平面內(nèi)做平動,aX0、aY0、aZ0就是X、Y、Z的加速度的常值分量;如果顯示器還在當(dāng)前平面內(nèi)有轉(zhuǎn)動,只有aZ0是Z軸加速度的常值分量,aX0、aY0是隨轉(zhuǎn)角θ1、θ2而變的變量;如果顯示器Z軸與鉛垂線夾角還有變化,aZ0也是隨轉(zhuǎn)角θ1而變的變量。第一種情形的處理比較簡單,直接將aX0、aY0、aZ0作為初始位置靜止的初值,是積分不變量,進(jìn)行二次積分即可得到位置;第二、三種情形處理較為復(fù)雜,要將aX0、aY0、aZ0作為初始位置運動的初值,也看作積分不變量,但是進(jìn)行二次積分時要知道初始位置的運動參數(shù),這要選擇振動加速度的極值點(此時速度為零)作為運動的起始點開始積分,當(dāng)然這種算法會稍微復(fù)雜。
還要考慮加速度的噪聲會因為積分而被放大,使積分結(jié)果不準(zhǔn)。加速度噪聲的來源有:傳感器本身的噪聲、周邊電路的電磁串?dāng)_、電源的波動、負(fù)載的波動(OLED的功耗與被點亮的點數(shù)成比例)。MMA7260QT傳感器內(nèi)部集成信號電路輸出紋波較?。╪RMS=4.7mVrms),為了濾去由于電磁干擾等引起的高頻噪聲,給系統(tǒng)加一個通頻帶在50Hz內(nèi)的RC低通濾波器。由于模擬濾波器難以調(diào)整,系統(tǒng)的軟件還加入了簡單而且快速的數(shù)字慣性濾波器,能很好地消除周期性干擾和較寬頻率的隨機(jī)干擾信號。
實時輸出具有相反方向偏移量的動態(tài)圖像
上文已述及處理器的運算速度和顯示器件的響應(yīng)速度是兩個關(guān)鍵。本系統(tǒng)顯示器件選擇OLED器件即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode,OLED)該顯示器件具有輕薄、易攜、全彩、高亮度、省電、視角寬廣及高應(yīng)答速度等優(yōu)點,為未來人機(jī)互動的接口開啟了新的紀(jì)元,如今采用OLED作為顯示器件的電子產(chǎn)品幾乎已經(jīng)普及。
本系統(tǒng)所采用的OLED顯示材料的響應(yīng)時間在μs量級,OLED器件的驅(qū)動芯片SSD1303的并行總線寫入時間僅為300ns,因此總的響應(yīng)時間(包括驅(qū)動芯片的延遲和OLED材料的延遲)仍然是μs,只要MCU速度足夠快,是完全能實現(xiàn)圖像的動態(tài)顯示的。另外SSD1303支持垂直偏移指令和水平滾動指令,因此只需將GDDRAM一次寫滿,圖像需要平動時僅需要寫一條偏移或滾動指令,而不是刷新整個GDDRAM。
本系統(tǒng)所采用的微控制器MC9S08QG8工作頻率高達(dá)20MHz,有8kBytes的FLASH存儲器,512Bytes的RAM。如果處理器僅用來完成圖像數(shù)據(jù)的變換和GDDRAM的刷新是沒有問題的,但是處理器還要進(jìn)行數(shù)字濾波等處理,難以完成所有的工作,因此系統(tǒng)采用偏移或滾動指令來實現(xiàn)平動。
顯示模塊與信源的通訊
為了方便與信源接口,本系統(tǒng)采用MC9S08QG8自帶的SPI控制器,提供SPI接口作為信號輸入通道??紤]到顯示模塊可能工作在比較惡劣的場合,通訊線纜連接固定的信源和振動的顯示模塊,會因為長期的彎曲而疲勞破壞,本系統(tǒng)特意設(shè)計集成了單片射頻收發(fā)芯片,可以進(jìn)行短距離無線數(shù)據(jù)傳輸。單片射頻收發(fā)芯片采用挪威Nordic VLSI公司推出的單片射頻收發(fā)芯片nRF905,它能簡單地實現(xiàn)200m范圍內(nèi)的傳輸速率在100kb/s內(nèi)的數(shù)據(jù)傳輸。
硬件描述
本系統(tǒng)的硬件框圖如圖5所示。整個硬件系統(tǒng)由微控制器電路、加速度傳感器電路、濾波器電路、OLED電路、射頻收發(fā)電路和穩(wěn)壓電路組成。
本系統(tǒng)所設(shè)計的微控制器電路如圖6所示,MC9S08QG8包含上電復(fù)位電路(POR)和內(nèi)部時鐘源(ICS),這會簡化微控制器電路且減少外部時鐘電路造成的高頻干擾。MC9S08QG8具有單線的背景調(diào)試接口(BDM),能夠進(jìn)行實時總線捕捉,系統(tǒng)采用BDM進(jìn)行系統(tǒng)調(diào)試并附加LED作為工作指示。
OLED電路
本系統(tǒng)如圖7所示,是用雙色OLED12864顯示屏,采用SSD1303驅(qū)動。支持64級亮度控制,工作電壓在2.4V-3.5V之間,最大列電極輸出電流320μA,最大行電極吸入電流45mA,單色256級對比度控制,內(nèi)置振蕩器,垂直、水平滾動顯示支持。OLED的片選端接到PA0,數(shù)據(jù)輸入端與加速度采集端分時復(fù)用。由于本系統(tǒng)不需要讀GDDRAM,為了節(jié)省I/O,將RD、RES端置高。
射頻收發(fā)電路
射頻收發(fā)電路如圖8所示,采用挪威Nordic VLSI公司推出的單片射頻收發(fā)模塊nRF905,工作頻率覆蓋433/868/915MHz三個國際通用的ISM(工業(yè)、科學(xué)和醫(yī)學(xué))頻段,可用在需要多信道工作的特殊場合;它是GMSK調(diào)制,抗干擾能力強(qiáng),適合工業(yè)控制場合。采用DSS+PLL頻率合成技術(shù),頻率穩(wěn)定性極好;靈敏度高(達(dá)到+100dBm);最大發(fā)射功率達(dá)+10dBm;使用距離最遠(yuǎn)可達(dá)1000米。工作電壓低(1.9V~3.6V),功耗小(待機(jī)狀態(tài)僅為1μA),以+10dBm的輸出功率發(fā)射時電流只有11mA,工作于接收模式時的電流為12.5mA,并且內(nèi)建空閑模式與關(guān)機(jī)模式,易于實現(xiàn)節(jié)能。工作速率最高可達(dá)100kb/s,外圍元件少(僅10個),基本無需調(diào)試。SPI控制腳接到MC9S08QG8的SPI腳上,接收數(shù)據(jù)完成腳DR接MC9S08QG8的外部中斷請求腳(IRQ),JP3用來選擇發(fā)送/接收模式。
軟件描述
系統(tǒng)軟件主要包括初始化模塊、刷新GDDRAM模塊、讀取加速度模塊、數(shù)字濾波模塊、極值判斷模塊、積分模塊、輸出偏移量模塊和中斷處理模塊。程序的流程如圖9,具體的程序?qū)崿F(xiàn)這里不作贅述。