大家好!
我使用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度。