基于三軸加速度計SCA3000和 LPC2210的傾斜角傳感器設計
由加速度傳感器測量傾斜角的途徑很多,文獻中提出了一種基于兩軸加速度傳感器ADXL213的傾角測量裝置,實現了全擺幅高精度測量,并能在運動車輛中抵消前進方向加速度,實現運動中單方向高精度測量。文獻中同樣運用兩軸壓力傳感器實現單方向全擺幅傾角測量文獻。文獻中運用兩軸加速度傳感器ADXL202實現了全方位,45°擺幅內低誤差傾斜角測量。文獻中運用液態(tài)兩軸傾斜角傳感器實現全方位、低擺幅、高精度傾斜角傳感器。單軸加速度傳感器只能實現單方向,低擺幅傾斜角測量,兩軸傾斜角傳感器,方向和擺幅不能兼顧。本文將討論采用三軸微加速度傳感器實現智能化傾斜角傳感器方法。
1 傾斜角測量原理
對于軸加速度傳感器,當它的傳感方向和重力加速度方向一致時,假如此時為零傾斜角度,設加速度傳感器測量結果為F(θ),θ為傾斜角度,g為重力加速度,如圖1所示。
所以當傾斜角θ太小時,測量的分辨率就會太小,當角度足夠大時精度才會上升。所以對一軸傾斜角傳感器的運用是:把它的傳感方向與重力加速度方向垂直時的狀態(tài)設為零傾斜角度,文獻運用此方法測量傾斜角,如圖2所示,此時:
此時傾斜角度小時測量精度高,而對于一軸加速度傳感器而言,只能測一個方向的傾斜角。所以用一個兩軸加速度傳感器,兩個傳感方向皆垂直于重力加速度,當兩軸傾斜角傾斜時,加速度傳感器測量結果為:
如何利用θx,θy求出傾斜角θ。首先定義兩組三軸向量:[x,y,z]為參考O傾斜向量,[u,v,r]為傾斜后的向量。如圖3所示,設向量[z,y,z]先繞y軸傾斜,再繞x軸傾斜,所以從[x,y,z]到[u,v,r]的轉換為:
設x,y為水平方向,z為垂直方向。(x,y,z)=(0,0,1)于是便有:
此時u=kF(θx)=kgsinθx,v=kF(θy)=kgsinθy,所以:
而傳感器實際傾斜角為:
所以只要得出兩軸加速度傳感器測量結果F(θx)和F(θy)就可以計算出θx和θy,進而知道總的傾斜度。
同一軸傳感器,兩軸傳感器測量精度有限,當θx,或θy越接近±兀/2時,分辨率越低。只有在傾斜角度接近O時分辨率最高。利用兩軸加速度傳感器的這種測量方法可以實現全方位傾斜測量。
為實現高精度全擺幅傾斜測量就必須把兩軸加速度傳感器垂直放置,一個傳感方向與重力方向垂直,一個傳感方向與重力方向平行。運用此方法測量傾斜角。加速度傳感器測量結果為:
此時θ為單方向上全擺幅、高精度傾斜角度。運用兩軸加速度傳感器無法解決傾斜角測量中全方位和全擺幅不能共同實現的矛盾。所以為測量一個全方位,全擺幅的傾斜角就必須使用三軸加速度計。
運用三軸加速度計測量傾斜角就必須把測量范圍分為兩檔,一檔為傾斜角為-π/4~π/4,二檔為傾斜角為(-π/2~-π/4)&(π/4~π/2)。當傾斜角度在±π/4之間時,
,這里以F(θz)的值作為劃分檔次的依據。在一檔中F(θx),F(θy)的分辨率很高,此時相當于運用一個兩軸加速度傳感器測量全方位,低擺幅傾斜角,運用式(15)可以計算傾斜角。在二檔中F(θz)的分辨率都很高,此時相當于運用一個一軸加速度傳感器測量全方位,高傾斜角度的傾斜角,運用式(1)可以計算傾斜角。
2 SCA3000
傳感器的微型化、智能化、低功耗是當今傳感器發(fā)展的必然趨勢,微電子機械系統(tǒng)技術(MicroElectro,Mechanical Systems,MEMS)是傳感器微型化發(fā)展道路上的一項重要技術。SCA3000-D1是VTI公司的全數字化三軸加速度計,量程±2g,電源電壓3.3 V,64組緩沖存儲器記錄數據,在系統(tǒng)一級上面,有先進的性能和有效節(jié)能方式,頻率響應可選,SPI數字串口通信,抗沖擊力強,可以應用于許多惡劣的條件下。
2.1傳感器前端
前端單元采用了耐用、穩(wěn)定、低功耗和噪聲的電容傳感器,這個前端單元包含三個加速度傳感塊。由于結構原因,三個加速度傳感塊傳感方向與直角坐標成45°角,所以在接口電路模塊中有一個匹配處理,加速度導致電容變化接著在信號調理電路中轉化為電壓變化。2.2 接口電路
傳感單元連接一個電容電壓轉換器,接下來在模擬領域校準,信號通過ADC轉換器轉換為數字信號,ADC信號被分離成三個信號處理通道,經過低通濾波器和驟減。之后,信號配合上直角坐標系和傳輸給輸出寄存器。在一般測量中,加速度數據能夠通過串行總線SPI讀出。
3 硬件設計
在此運用ARM7微控制器LPC2210和三軸加速度計SCA3000測量數據。運用ZLG7290控制LED顯示傾斜角度,保留一組SPI接口用于擴展功能。
如圖5所示,LPC2294通過SPI總線連接SCA3000,通過I2C總線連接ZLG7290,開關S1,S2,S3,S4用做校準功能使用,具體運用后面介紹。
SPI是一個全雙工的同步串行接口,一個SPI總線可以連接多個主機和多個從機,但是在同一時刻只允許一個主機操作總線,總線上只能有一個主機和一個從機通信。SPI總線一般由3~5根線組成,如圖5所示為經典的4線SPI連接電路,一個主機連接兩個從機,主出從進(Master Out Slave In,MOSI),主入從出(Master In Slave Out,MISO),串行時鐘(Serial ClocK,SCK),片選(Chip Select,CSB)低有效,工作時SSO,SSl只能有一個為低。主機一般為微控制器產生串行時鐘,從機接收時鐘。SCA3000一般作為從機組成一個系統(tǒng)。
SCA3000SPI幀格式和傳輸協(xié)議如圖6所示。
當CSB為低時,SPI幀觸發(fā),每一幀數據有16 b,MOSI線上前8 b包含需要讀/寫的寄存器地址和讀/寫控制,其中前6 b為寄存器地址,第7 b為讀/寫控制,1為讀,O為寫,第8 b為0,MOSI線上后8 b為需要寫的數據,讀時不要考慮上面的數據。MOSI線上數據是在時鐘上升沿被采樣,而在MISO線上數據在時鐘下降沿被裝載。
MISO線上,第2 b為前一SPI幀的幀錯誤比特,第7 b始終為1,第8 b為當前幀數據的奇偶校驗位。后8位數據為要讀取的數據,在寫過程中為地址寄存器中先前數據。
4 數據處理與校驗
由于測量精度、外力影響,三軸加速度計的橫軸傳感,零刻度度偏移,溫度飄移等影響導致三軸加速度計在測量上出現誤差,或者測量數據受到不同程度的污染,這對求傾斜角產生很大的阻礙。由于上述原因的影響,現實中測量得到的三軸加速度計的三個數據的矢量和往往不會等于重力加速度。有外力時加速度傳感器測得的是重力與外力和的加速度,肯定不等于重力加速度,有恒外力作用時難以直接測量傾斜角的準確值(運用適當方法進行補償或抵消除外),SCA3000對數字信號進行低通濾波可以去除掉高頻振動;對三軸數字數據進行權限設置,對于三軸數據矢量和與重力加速度的偏差大于0.05g時拋棄此次測量數據,保證測量精度。
4.1 零點偏移
零刻度偏移的解決方案,當傾斜角較小時,z軸數據的分辨率極低,影響測量精度,所以此時運用其中兩軸進行傾斜角測量將更精確。為提高精度,需要對傾斜角傳感器進行調零校正,校正后的結果將是測量值減去偏移值后的數據。偏移值的測量方法有兩種:
(1)將傳感器放置在一個校準水平面上,此時的輸出即為偏移值。
(2)如圖7所示,測量出圖7(a).(b)姿勢的輸出VA,VB偏移值為(VA+VB)/2。
4.2 橫軸傳感
橫軸傳感補償方案,由于組合封裝或者器件本身結構原因,三軸加速度計存在橫軸傳感現象,三軸加速度計的橫軸傳感的度量有下式定義:
式中:Sx,Sz為橫軸方向測得的傳感量,Sy為測試方向測得的傳感量,由于橫軸傳感的存在,使得測量結果不準確,所以需要對輸出結果進行補償,首先來考慮兩軸間的傳感補償,如圖8所示。
圖8中,測試方向為y軸方向,加速度傳感器如圖8(a)樣式放置時,x軸輸出為Voutx-A,y軸輸出為Vouty-A;加速度傳感器如圖8(b)樣式放置時,x軸輸出為Voutx-B,y軸輸出為Vouty-B,測試方向y軸傳感量為:
x橫軸傳感量為:
所以當傾斜角傳感器傾斜為某一角度時,x橫軸數據經y軸進行傳感補償后的值為:
式中:xoutComp為補償后的x軸數據;Vouty-axis為x軸測量數據;Vouty-axis為y軸測量數據;Voffsety為y軸數據偏移值。同樣,z軸數據對x軸數據進行補償后得到x軸數據的校準值。4.3 數據融合
SCA3000工作在測量模式下時,傳感器輸出數據速率為260 Hz,0.37 s就可以產生一次輸出緩沖存儲器半滿中斷。所以在傾斜角度變化不是很劇烈的情況下,可以對每一輸出緩沖存儲器中數據進行加權平均求得傾斜角度。
5 軟件設計
程序主要分三部分,主程序main,傾斜角計算子程序tlitcalculate和校準子程序calibrate,在對SCA3000進行操作時,還要調用SPI讀寫程序,在對ZLG7290進行操作時調用I2C讀寫子程序。
如圖9所示,在傾斜角傳感器第一次使用前必須對其進行校準,包括測量各軸的零點偏移,各軸的橫軸傳感量,當PO.1置高時進入校準狀態(tài)。在校準中,PO.9&PO.10&PO.11=000時,將SCA3000按z軸垂直向上放置;PO.9&P0.10&P0.11=001時,將SCA3000按z軸垂直向下放置;PO.9&P0.10&P0.11=OlO時,將SCA3000按x軸垂直向上放置;P0.9&PO.10&PO.11=01l時,將SCA3000按x軸垂直向下放置;P0.9&PO.10&P0.11=100時,將SCA3000按y軸垂直向上放置;P0.9&P0.10&P0.11=101時,將SCA3000按y軸垂直向下放置。綜合各個狀態(tài)時的數據完成零點偏移和橫軸傳感量計算。實際運用中,SCA3000安裝在平臺上時不可能保持xy軸與平臺完全平行,z軸完全垂直平臺。所以在進行測量前必須取得平臺水平放置時SCA3000的輸出值,將其設為初始值保存于FLASH中。
在傾斜角計算中。首先讀數據進行零點偏移補償和橫軸傳感補償,接著對嚴重污染的數據丟棄,進行數據融合,再判斷傾斜角度大小。當角度較小時,利用兩軸數據進行計算,當角度過大時運用三軸數據進行計算。
主程序中,采用定時器中斷和SCA3000緩存器中斷兩個中斷對SCA3000數據進行讀寫。保證數據的實時性。
6 結語
本文基于三軸加速度計SCA3000和ARM處理器芯片LPC2210設計了一種三軸傾斜角智能傳感器,它具有全方位和全擺幅的特點。本文對兩軸、三軸加速度計測量傾斜角的原理進行了分析,采用兩軸、三軸數據的合理運用,實現精度高、抗噪性能強的傾斜角傳感器的研究。
對傳感器數據采用零點偏移補償,橫軸傳感量補償,進一步提高了數據的精度。采用SPI接口實現傳感器與微控制器間的通信,采用定時器中斷和SCA3000緩存器中斷兩個中斷喚起對傳感器數據的讀/寫,實現對傳感器數據讀速度可控。