引言
ADXL202是ADI公司出品的一款双轴加速度测量系统,模拟输入,可测量动态加速度和静态加速度,测量范围为±(2~10)g,输出为周期可调的脉宽调制信号,可以直接与单片机或计数器连接。LPC2103为飞利浦公司的一款ARM7系列微控制器,主要用于工业控制、医疗系统、访问控制、POS机、通信网关等领域。本文使用LPC2103实现对ADXL202加速度数据的采集与处理。
1 ADXL202加速度传感器
1.1 ADXL202的引脚定义及基本特性
ADXL202为单片集成电路,集成度高、结构简单,内部包含多晶硅表面微处理传感器和信号控制电路,以实现开环加速度测量结构。与其他加速度计相比,ADXL202可在很大程度上提高工作带宽,降低噪声影响,零重力偏差和温度漂移也相对较低。图1所示为ADXL202传感器的引脚定义。
图1 引脚定义
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来改变带宽。
图2 传感器内部结构原理图
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所示。
图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所示为加速度测量的原理图。
图4 加速度测量
当ADXL202与重力矢量垂直时,其输出随倾斜度的变化大约为每度17.5 mg,当两者呈45°时,输出变化值仅为每度12.2 mg,分辨率降低。表1为倾斜角度与加速度变化的关系。
表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所示。
图5 ADXL应用电路图
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口方式
#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的使用效率。可以使用图5所示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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)