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