在現(xiàn)代控制系統(tǒng)中,角度測(cè)量裝置是非常關(guān)鍵的需要高精度的部件,其測(cè)量精度直接影響著整個(gè)系統(tǒng)的性能和精度。例如施工升降機(jī)上有角度測(cè)控機(jī)構(gòu)來(lái)控制起降;火箭炮瞄準(zhǔn)系統(tǒng)中都有大量的角度傳感器,實(shí)時(shí)檢測(cè)炮塔偏轉(zhuǎn)角度,以便對(duì)火箭炮瞄準(zhǔn)進(jìn)行調(diào)整。目前已有的利用的加速度傳感器實(shí)現(xiàn)高精度角度測(cè)量的研究,主要側(cè)重于單軸的角度測(cè)量。本文將重點(diǎn)討論利用雙軸加速傳感器ADXL202實(shí)現(xiàn)高精度角度測(cè)量的軟硬件方法。
1 角度測(cè)量?jī)x系統(tǒng)硬件方案設(shè)計(jì)
本角度測(cè)量?jī)x采用STM32F107作為數(shù)據(jù)處理的核心芯片。這是一款低功耗、高速度的32位處理器,擁有Cortex-M3內(nèi)核。角度測(cè)量模塊使用的是高精度、低功耗的雙軸加速度傳感器ADXL202,能將加速度信號(hào)轉(zhuǎn)換成數(shù)字方波信號(hào)輸出,可直接與STM32F107連接,通過(guò)一定的算法即可計(jì)算出當(dāng)前的傾斜角度。顯示模塊使用的是12864ZW型128×64的點(diǎn)陣液晶顯示器,圖1所示為角度測(cè)量?jī)x硬件結(jié)構(gòu)框圖。
角度測(cè)量模塊使用的是ADI公司出品的低成本、低功耗、高精度的雙軸加速度傳感器ADXL202,其測(cè)量范圍為-2g~+2g,既能測(cè)量動(dòng)態(tài)加速度,又能測(cè)量靜態(tài)加速度。它的工作電壓是3.0~5.25 V,工作電流低于0.6 mA,最高主頻可達(dá)到70 MHz,所以從功耗、靈敏度和精確度考慮,選擇ADXL202作為角度測(cè)量模塊的核心芯片。圖2是它的功能結(jié)構(gòu)框圖。
ADXL202由振蕩器、X和Y軸傳感器、相位解調(diào)器和脈寬占空比解調(diào)器組成,它的功能實(shí)現(xiàn)過(guò)程是,X、Y軸傳感器受到加速度力后輸出振幅變化的方波,輸出方波的振幅與加速度成正比。相位解調(diào)器能夠?qū)敵龅姆讲ㄐ盘?hào)進(jìn)行修正并提取信息,然后判斷加速度方向。相位解調(diào)器的輸出會(huì)經(jīng)過(guò)一個(gè)低通濾波電路,可以通過(guò)改變?yōu)V波電容的大小來(lái)設(shè)置輸出信號(hào)的帶寬。經(jīng)過(guò)低通濾波的模擬信號(hào)進(jìn)入DCM,被轉(zhuǎn)換為脈寬占空比信號(hào)輸出。
[page]
2.1 角度測(cè)量模塊硬件電路設(shè)計(jì)
為保證ADXL202高精度穩(wěn)定的工作,需要根據(jù)芯片技術(shù)文檔和實(shí)際使用情況,來(lái)配置信號(hào)周期、濾波電容(決定信號(hào)的帶寬)。
ADXL202的輸出信號(hào)是脈寬占空比調(diào)制信號(hào),占空比T1/T2與被測(cè)加速度成正比。0g時(shí),其輸出為50%占空比,靈敏度為每g所引起的脈寬占空比變化12.5%。查閱芯片的技術(shù)文檔,可以通過(guò)電阻RSET來(lái)設(shè)定DCM的周期:
T2=RSET/125 MΩ (1)
在X、Y方向上的加速度分量值可由下式計(jì)算:
A(g)=(T1/T2-0.5)/12.5% (2)
表1是芯片的技術(shù)文檔提供的RSET和T2配置表。我們選擇125 kΩ的RSET,將周期T2設(shè)定為1 ms。
2.2 ADXL202測(cè)角度工作原理
ADXL202水平放置時(shí)的傾角如圖5所示。
ADXL202水平放置時(shí),沿X軸和Y軸方向的加速度分量大小與重力的關(guān)系為:
AX=g·sin(α), AY=g·sin(β) (3)
式中,AX、AY分別代表加速度計(jì)的兩個(gè)軸上的分量輸出,g是以重力作為參考的加速度值,而α、β是傾斜角度。由反正弦函數(shù)即可以得到傾斜角度為:
α=sin-1(AX/g),β=sin-1(AY/g) (4)
γ=sin-1(AX/g), δ=sin-1(AY/g) (5)
此角度測(cè)量?jī)x的工作原理是:ADXL202將加速度信號(hào)轉(zhuǎn)換為脈寬占空比輸出,STM32F107接收這個(gè)數(shù)字脈沖信號(hào),利用STM32F107的輸入捕獲功能來(lái)測(cè)量脈沖信號(hào)的高電平脈寬。然后,計(jì)算出高電平脈寬的準(zhǔn)確時(shí)間T1,由式(2)得到X、Y方向上的加速度分量A(g)。最后,由式(4)(5)分別求出芯片在水平狀態(tài)或垂直狀態(tài)下的傾角。
3 數(shù)據(jù)處理模塊
STM32F107采用的是ARM Cortex—M3內(nèi)核,工作電壓為3.3 V,時(shí)鐘頻率達(dá)到72 MHz。該芯片系統(tǒng)資源和外圍接口豐富,內(nèi)部集成專(zhuān)用時(shí)鐘、復(fù)位以及電源管理模塊,支持多種工作模式。由于STM32F107芯片的性能、成本和功耗方面的特點(diǎn),選擇它作為數(shù)據(jù)處理模塊。更重要的是STM32F107的定時(shí)器除了TIM6和TIM7,都有輸入捕獲功能。
3.1 輸入捕獲功能應(yīng)用于角度測(cè)量的工作原理
以TIM2定時(shí)器實(shí)現(xiàn)輸入捕獲功能為例。TIM2有4個(gè)獨(dú)立通道,通過(guò)檢測(cè)TIM2_CH1通道上的邊沿信號(hào),在邊沿信號(hào)發(fā)生跳變(比如上升沿/下降沿)的時(shí)候,將當(dāng)前定時(shí)器的值存放到TIM2_CH1的捕獲/比較寄存器里面,完成一次捕獲。這就是STM32F107所具有的輸入捕獲功能。
將ADXL202的Xout、Yout引腳輸出接到STM32F107的34、35引腳(PA0、PA1)上,由STM32F107的原理圖可知,34、35引腳控制TIM2_CH1和TIM2_CH2兩個(gè)通道。用TIM2_CH1來(lái)捕獲Xout的數(shù)字方波信號(hào)的高電平脈沖,首先配置此通道的輸入捕獲為上升沿檢測(cè)。當(dāng)檢測(cè)到上升沿時(shí),進(jìn)入中斷將計(jì)數(shù)器清零重新開(kāi)始計(jì)數(shù),并配置通道的輸入捕獲為下降沿捕獲;當(dāng)檢測(cè)到下降沿時(shí),進(jìn)入中斷讀取計(jì)數(shù)器的值,由計(jì)數(shù)值和計(jì)數(shù)頻率可得到高電平的脈寬,即T1。然后通過(guò)以下兩個(gè)公式:
A(g)=(T1/T2-0.5)/12.5% (6)
α=sin-1(Ax/g), β=sin-1(AY/g) (7)
計(jì)算得出當(dāng)前的傾角,之后將結(jié)果傳輸給液晶顯示屏顯示結(jié)果。式中T2=1 ms。此處僅討論芯片水平放置時(shí)的情況,當(dāng)芯片垂直放置時(shí),用式(5)即可。
3.2 采集和處理數(shù)據(jù)的方法
ADXL202有兩路輸出信號(hào)Xout、Yout,而且它們是同時(shí)工作的,而STM32F107是順序處理器,一個(gè)時(shí)間點(diǎn)上只能處理一路信號(hào)。我們采用分時(shí)復(fù)用的方法解決,以1 s為時(shí)間點(diǎn),在這1 s內(nèi),STM32F107只采集處理一條通道內(nèi)的信號(hào)和數(shù)據(jù),到下一秒時(shí)就采集處理另一條通道上的信號(hào)和數(shù)據(jù)。還應(yīng)該注意一個(gè)問(wèn)題,計(jì)數(shù)器在檢測(cè)到上升沿時(shí)開(kāi)始計(jì)數(shù),等下降沿到來(lái)停止計(jì)數(shù)的時(shí)間內(nèi),脈寬過(guò)長(zhǎng)時(shí)計(jì)數(shù)器會(huì)發(fā)生溢出,所以必須記錄下溢出次數(shù)。在最后計(jì)算計(jì)數(shù)器的值時(shí),將溢出次數(shù)乘以計(jì)數(shù)器的寬度加上當(dāng)前計(jì)數(shù)器的值,即為總的計(jì)數(shù)值。
[page]
4 角度測(cè)量?jī)x系統(tǒng)的程序設(shè)計(jì)
使用STM32F107的輸入捕獲功能,需要通過(guò)程序配置內(nèi)部寄存器的初始狀態(tài),以此來(lái)滿(mǎn)足角度測(cè)量?jī)x的工作需求。
①開(kāi)啟GPIO和TIM2的時(shí)鐘,通過(guò)內(nèi)部的庫(kù)函數(shù)RCC_APB2PeriphClockCmd、RCC_APB1PeriphClockCmd來(lái)控制兩個(gè)時(shí)鐘的開(kāi)啟。為了采集TIM 2_CH1和TIM2_CH2上的高電平脈寬,需配置PA0和PA1為下拉輸入。
②初始化TIM2,設(shè)定TIM2的輸入捕獲自動(dòng)重裝載值為0xfffe,計(jì)數(shù)頻率為1 MHz。
③使能輸入捕獲、中斷、計(jì)數(shù)器,通過(guò)STM32F107的庫(kù)函數(shù)能方便地配置。
由角度測(cè)量和輸入捕獲原理可得系統(tǒng)的程序流程圖,如圖7所示。
在室溫下進(jìn)行調(diào)試。當(dāng)角度測(cè)量?jī)x沒(méi)有傾斜時(shí),液晶屏上顯示的結(jié)果并不為零,其原因是ADXL202安裝無(wú)法完全水平。芯片安裝后本身存在傾角,這是不可避免的。雖然調(diào)試環(huán)境是在室溫下,但是實(shí)際使用的環(huán)境可能是溫度變化較大的場(chǎng)合,零漂和靈敏度隨溫度的漂移將會(huì)很?chē)?yán)重,直接測(cè)量時(shí)會(huì)導(dǎo)致很大的角度誤差,因此,必須采取某種形式的溫度補(bǔ)償方法來(lái)解決。
當(dāng)角度測(cè)量?jī)x有傾斜時(shí),測(cè)量結(jié)果與實(shí)際值有較大誤差。經(jīng)分析是輸入捕獲的計(jì)數(shù)器有誤差。經(jīng)將干擾和毛刺計(jì)數(shù)進(jìn)來(lái),所以應(yīng)該添加濾波電路,同時(shí)計(jì)數(shù)器的值采用多次計(jì)數(shù)取平均值的方法,以此提高計(jì)數(shù)的精度。
角度測(cè)量?jī)x的測(cè)量結(jié)果如圖8所示。