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