我也遇到ADXL345的Z轴输出值在1600左右的情况,作了软件处理。
1、ADXL345的Z轴沿重力的大致方向十进制示数在1200(沿重力反向)~1700(沿重力方向),换算成加速度值4.68g~6.63g。
2、从数据看,测量的加速度值变化量6.63-4.68=1.95g与实际情况1-(-1)=2g相符,说明测量是有效的,只是示数的0值偏差大,在5.65g左右。将Z轴偏移设置为5.65g时,4.68-5.65=-0.97g,6.63-5.65=0.98g。
3、因为传感器的Z轴偏移寄存器OFSZ为-2g~+2g(-128~+127,15.6mg/LSB),故使用Z轴偏移寄存器不能修正Z轴偏差,应在软件中进行修正。代码如下:
//将寄存器OFSZ设置为0x00;
......
//加速度值软件偏置,0-x,1-y,2-z
const uint16_t OFF_XYZ[] = {0x0065,0xFFDD,0x0682};
xyz[i] = (uint16_t)(temp[i*2+1]<<8) + temp[i*2] - OFF_XYZ[i]; //i=0,1,2,0-x,1-y,2-z
4、设置软件偏置修正系统偏差是设计常用方法,如果有上位机程序,可存储在.ini配置文件中,方便系统校准操作。硬件可存储在EEPROM中,调整稍繁琐。
买了两个ADXL345,第一次买的如上情况Z轴偏差大,回顾可能是首次上电时电源连接错误对器件造成损害;第二次买的正常。
通过以上软件处理后,Z轴偏大还是可以使用的。 |