ADXL345测量倾斜角度数据跳动

大家好!

     我使用ADXL345测量物体倾斜角度。测试结果是X、Y、Z三个轴输出倾角跳动比较大。具体情况如下:

1. ADXL345使用3.3伏电源,使用TI的低PSRR LDO单独给ADXL345供电,型号是LP5907-3.3

2. ADXL345与MCU采用4线SPI相连接。

3. ADXL345初始配置:

writeADXL345(BW_RATE,0x09);//正常功耗,速率50Hz
writeADXL345(POWER_CTL,0x08);//测量模式,禁止休眠。
writeADXL345(INT_ENABLE,0x00);//禁止中断
writeADXL345(DATA_FORMAT,0x08);//全分辨率,数据右对齐,±2g
writeADXL345(FIFO_CTL,0x00);//FIFO旁路模式

4. 倾斜角度计算公式参照应用笔记AN-1057.公式代码如下:

x_ang = (uint16)(atan(x_aver/sqrt(y_aver * y_aver + z_aver * z_aver)) * pi_ang * 100 + 0.5);
y_ang = (uint16)(atan(y_aver/sqrt(x_aver * x_aver + z_aver * z_aver)) * pi_ang * 100 + 0.5);
z_ang = (uint16)(atan(sqrt(x_aver * x_aver + y_aver * y_aver)/z_aver) * pi_ang * 100 + 0.5);

 pi_ang是180/π,乘100加0.5是为了取两位小数并且四舍五入。

5. 单片机每400ms读取一次数据,并从串口送出,以下是结果:

X轴倾斜角度:+10.69° Y轴倾斜角度:-02.44° Z轴倾斜角度:+10.97°
X轴倾斜角度:+10.91° Y轴倾斜角度:-02.21° Z轴倾斜角度:+11.14°
X轴倾斜角度:+10.91° Y轴倾斜角度:-02.21° Z轴倾斜角度:+11.14°
X轴倾斜角度:+10.91° Y轴倾斜角度:-02.43° Z轴倾斜角度:+11.18°
X轴倾斜角度:+10.69° Y轴倾斜角度:-01.99° Z轴倾斜角度:+10.88°
X轴倾斜角度:+10.91° Y轴倾斜角度:-02.21° Z轴倾斜角度:+11.14°
X轴倾斜角度:+10.69° Y轴倾斜角度:-02.44° Z轴倾斜角度:+10.97°
X轴倾斜角度:+10.69° Y轴倾斜角度:-02.22° Z轴倾斜角度:+10.93°
X轴倾斜角度:+10.69° Y轴倾斜角度:-02.22° Z轴倾斜角度:+10.93°
X轴倾斜角度:+10.69° Y轴倾斜角度:-02.22° Z轴倾斜角度:+10.93°
X轴倾斜角度:+10.52° Y轴倾斜角度:-01.78° Z轴倾斜角度:+10.67°
X轴倾斜角度:+11.13° Y轴倾斜角度:-02.21° Z轴倾斜角度:+11.35°
X轴倾斜角度:+10.73° Y轴倾斜角度:-02.22° Z轴倾斜角度:+10.97°
X轴倾斜角度:+10.74° Y轴倾斜角度:-02.00° Z轴倾斜角度:+10.93°

读取以上数据时,倾角模块是禁止不动,周围也没有人走动,或者振动。从数据中可以看出,小数点后数据变化很大,请帮我看看能用什么办法解决。我的主要用途是测量两轴的倾斜角度,测量范围±15度,测量精度0.02度。

Parents
  • 1. 写0x0B到DATA_FORMAT寄存器。2. 加强电源的滤波,可以考虑在ADXL345的供电端用10uF//0.1uF的电容,当然,最好是选用纹波较小的LDO给ADXL345供电。3. 用数字滤波进一步去除噪声,平均就可以改善。4. 选择低噪声的传感器,比如ADXL355或ADXL357.

Reply
  • 1. 写0x0B到DATA_FORMAT寄存器。2. 加强电源的滤波,可以考虑在ADXL345的供电端用10uF//0.1uF的电容,当然,最好是选用纹波较小的LDO给ADXL345供电。3. 用数字滤波进一步去除噪声,平均就可以改善。4. 选择低噪声的传感器,比如ADXL355或ADXL357.

Children