引言
ADXL202是ADI公司出品的一款雙軸加速度測量系統,模擬輸入,可測量動態加速度和靜態加速度,測量范圍為±(2~10)g,輸出為周期可調的脈寬調制信號,可以直接與單片機或計數器連接。LPC2103為飛利浦公司的一款ARM7系列微控制器,主要用于工業控制、醫療系統、訪問控制、POS機、通信網關等領域。本文使用LPC2103實現對ADXL202加速度數據的采集與處理。
1? ADXL202加速度傳感器
1.1? ADXL202的引腳定義及基本特性
ADXL202為單片集成電路,集成度高、結構簡單,內部包含多晶硅表面微處理傳感器和信號控制電路,以實現開環加速度測量結構。與其他加速度計相比,ADXL202可在很大程度上提高工作帶寬,降低噪聲影響,零重力偏差和溫度漂移也相對較低。圖1所示為ADXL202傳感器的引腳定義。
ST: 自檢,用于控制芯片自檢功能。接VDD時,輸出占空比為10%的波形,說明芯片正常工作。
COM: 引腳4、7。使用時需將2個COM端接在一起并接地。
T2: 經電阻RSET接地,調節輸出信號周期。輸出信號周期T2=RSET/(125 MΩs-1)。
VDD: 電源。工作電壓范圍為+3.0~+5.25 V,可經過100 Ω的去耦電阻接電源。
XFILT、YFILT: 經電容接地,用于改變帶寬、濾除噪聲和抑制零點漂移。
Xout、Yout: 輸出。
圖2為ADXL202傳感器的內部結構原理圖。ADXL202傳感器由振蕩器,X、Y方向傳感器,相位檢波電路以及占空比調制器組成,具有數字輸出接口和模擬電壓信號輸出接口。X、Y方向傳感器是2個相互正交的加速度傳感器,它們同時工作,可以測量動態變化的加速度和恒定的加速度。傳感器之后級連相位檢波器,主要是用來修正信號,并對信號的方向做出判斷。檢波器輸出的信號,通過一個32 kΩ 的電阻來驅動占空比調制器,通過在XFILT和YFILT 引腳外接電容CX和CY來改變帶寬。
1.2? 測量數據的計算及處理
(1) 信號帶寬的計算通
過CX和CY來設定帶寬,在XFILT和YFILT引腳接上電容,通過低通濾波器來減少噪聲。3 dB帶寬的公式為:f=5 μF/C(x,y)(電容最小值為1 000 pF)
(2) 加速度的計算
輸出信號周期T2=RSET /(125 MΩs-1),如圖3所示。
信號通過低通濾波器之后,占空比調制器把信號轉換為數字信號輸出。通過T2引腳的外接電阻可以改變T2的周期(0.5~10 ms),這很適于在精度要求不同的場合下使用。輸出的占空比信號通過計數器可以計算出占空比。加速度的計算可以通過下式得到:
a=(T1/T2-0.5)/(12.5%)
例如,當加速度為0g時,信號寬度T1與空閑寬度(T2-T1)相同,輸出信號的占空比為50%;當加速度為1g時,信號寬度T1與空閑寬度(T2-T1)的比值為5∶3,輸出信號的占空比為62.5%。
1.3? ADXL202的典型應用
ADXL202傳感器最重要的應用之一是傾斜度的測量。在進行傾斜度測量時,需要讓傳感器的敏感軸(x軸)與重力方向垂直。如果與重力方向平行,物體傾斜對于加速度數據的影響可以忽略不計。圖4所示為加速度測量的原理圖。
當ADXL202與重力矢量垂直時,其輸出隨傾斜度的變化大約為每度17.5 mg,當兩者呈45°時,輸出變化值僅為每度12.2 mg,分辨率降低。表1為傾斜角度與加速度變化的關系。
2? 應用電路設計
2.1? 硬件接口設計
LPC2103是一個支持實時仿真和跟蹤的32位ARM7TDMIS CPU,并帶有8 KB片內SRAM和32 KB嵌入的高速片內Flash內存。LPC2103具有LQFP48的較小封裝、極低的功耗、多個32位定時器、8路10位ADC、2個外部中斷、最多可達32個GPIO。通過可編程的片內PLL(可能的輸入頻率范圍:10~25 MHz)可實現最高70 MHz 的CPU 時鐘頻率。ADXL202傳感器與LPC2103的接口電路如圖5所示。
ADXL202加速度傳感器的T2經125 kΩ電阻接地,可以得到信號輸出的周期為1 ms。13、14引腳接+5 V電源,XFILT和YFILT經0.1 μF電容接地,用于設置50 Hz帶寬。兩路輸出分別與LPC2103的P0.0和P0.2引腳相接,作為數據傳輸線。數據傳輸有兩種方法,分別為普通GPIO口方式和定時器捕獲中斷方式。
2.2? 普通GPIO口方式
由于傳感器輸出均為DCM信號,無論采用什么方式進行數據接收,都需要定時器/計數器工作,對DCM信號進行計時處理。因此,程序首先要對定時器進行初始化。然后分別對DCM信號的高電平和低電平持續時間進行計時,得到T1、T2的值,再進行加速度計算。由于默認情況下GPIO均為普通I/O方式,所以開始不用設置PINSEL寄存器。普通GPIO口方式程序如下:
#define KEY 0x00000001//X軸加速度P0.0,前向加速度
T1PR=0;//預分頻為0,使得T1TC即為pclk個數
while((IOPIN&KEY)!=0);//下降沿或低電平跳出
while((IOPIN&KEY)==0);//上升沿或高電平跳出
T1TCR=0x03;//啟動并復位T1TC
T1TCR=0x01;
while((IOPIN&KEY)!=0);//下降沿跳出,等下降沿來臨
t1=T1TC;//取此時計數器的值
T1TC=0x00;//復位計數器
while((IOPIN&KEY)==0);//上升沿跳出,等待上升沿的來臨
t2=T1TC;
T1TCR=0x00;//關閉定時/計數器T1
a1=(((fp32)t1/((fp32)t2+(fp32)t1))-0.5)*8;//計算加速度
普通GPIO口方式的程序比較簡單,雖然程序的執行需要時間,但由于LPC2103的主頻可以達到40 MHz,執行幾條指令只需幾微秒,所以產生的誤差會很小。但普通GPIO方式程序執行時,CPU一直在等待上升沿或下降沿的到來,大大降低了CPU的使用效率??梢允褂脠D5所示Xout與LPC2103的接口方式。
2.3? 定時器捕獲中斷方式
如圖5所示,Yout與LPC2103的P0.2引腳相接,利用P0.2的功能復用,可以實現定時器捕獲中斷方式接收傳感器數據。主要程序段如下:
#define ya 0x00000004//引腳功能初始化
PINSEL0=0x00000020; //設置引腳連接為定時器0的捕獲通道0
PINSEL1=0x00000000;//向量中斷設置
VICIntSelect=0x00000000;//設置所有中斷為IRQ中斷
VICVectCntl0=0x24;//定時器0中斷為最高優先級
VICIntEnable=0x0010;//使能定時器0中斷定時器0初始化
T0PR=0;//預分頻為0,使T0TC即為pclk的個數
T0CCR=0x07;//置TIMER0的CAP0為上升、下降沿捕獲,觸發中斷
T0MR0=0xFFFFFFFF;//設置匹配值
T0TCR=0x03;//啟動并復位T0TC
T0TCR=0x01;//中斷服務程序
void __irq time0(void) {
T0IR = 0x10;//復位定時器中斷標志
if((IOPIN&ya)==0) {
t1=T0CR0;//讀取T0TC
T0TC=0x00;//復位T0TC
}
else if((IOPIN&ya)!=0) {
t2=TOCR0;//讀取TOTC
T0TC=0x00;//復位T0TC
}
VICVectAddr =0x00;//中斷處理結束
}
中斷處理程序運行之后,得到的信號周期應為T2=t1+t2。故加速度為(((fp32)t1/((fp32)t2+(fp32)t1))-0.5)*8。使用中斷服務程序大大提高了CPU的使用效率,但程序較為復雜,并且占用了一個中斷向量通道。
結語
ADXL202傳感器的應用方法經過驗證完全可行,并且能夠達到較高的測量精度。由于集成度高,由ADXL202和ARM系列微控制器組成的系統完全可以用于汽車、火車等交通工具的安全控制系統。ADXL202在慣性導航、傾斜感應、地震監控及汽車保險等領域都有著廣泛的應用,精度高、集成度高、功耗低等特點使之完全可以取代傳統的加速度傳感器。
參考文獻
[1] ?周立功 .ARM微控制器基礎與實戰 [M] . 北京:北京航空航天大學出版社 ,2003.
[2] ?ADI. Low Cost ±2g/10g Dual Axis iMEMS Accelerometers with Digital Output ADXL202/ADXL210 Technical Note,1999.
(收稿日期:2008-07-14)
評論
查看更多