调试MEMS加速度计,为什么Y轴和Z轴的MSB输出数据是0xFF?

描述

本期小编将为大家分享的热门问答帖来自 MEMS专区。赶紧来看看,您是否也有相同的疑惑?

调试ADXL372,Y轴和Z轴的MSB输出数据是0xFF?

调试ADXL372,Y轴和Z轴的MSB输出数据是0xFF?X轴输出是正常的,Y、Z轴MSB为什么输出是0xFF,读ID和寄存器都是正确的

调试

使能下自检(self test),看结果正常吗

检查了,你看我的处理程序,这是初始化

调试

等待数据准备好读取

调试

二进制补码,所以高位寄存器00或FF都有可能,按二进制补码换算成十进制LSB和加速度值看一下,你截图的加速度值单位是什么,怎么换算转换出来的。

我也感觉是二进制补码

void ADXL372_RD_XYZ(void)
{

u8 BUF[6];
short tx2,ty2,tz2;
if(ADXL372_RD_Reg(ADXL372_STATUS_1)&0x01)
{


BUF[1] = ADXL372_RD_Reg(ADXL372_X_DATA_H);
BUF[0] = ADXL372_RD_Reg(ADXL372_X_DATA_L);

BUF[3] = ADXL372_RD_Reg(ADXL372_Y_DATA_H);
BUF[2] = ADXL372_RD_Reg(ADXL372_Y_DATA_L);

BUF[5] = ADXL372_RD_Reg(ADXL372_Z_DATA_H);
BUF[4] = ADXL372_RD_Reg(ADXL372_Z_DATA_L);


// BUF[4] = ADXL372_RD_Reg(0x0D);
// BUF[5] = ADXL372_RD_Reg(0x0C);

printf(" BUF[0]:%x ",BUF[0]);
printf(" BUF[1]:%x ",BUF[1]);
printf(" BUF[2]:%x ",BUF[2]);
printf(" BUF[3]:%x ",BUF[3]);
printf(" BUF[4]:%x ",BUF[4]);
printf(" BUF[5]:%x ",BUF[5]);
}
tx2 = (BUF[1] << 8 | BUF[0] ) ;
ty2 = (BUF[3] << 8 | BUF[2] ) ;
tz2 = (BUF[5] << 8 | BUF[4] ) ;

tx2 = tx2>>4;
ty2 = ty2>>4;
tz2 = tz2>>4;

// tx2 = ((BUF[1] << 4 | BUF[0]>>4 )) ;
// ty2 = ((BUF[3] << 4 | BUF[2]>>4 )) ;
// tz2 = ((BUF[5] << 4 | BUF[4]>>4 )) ;

a2 = (float)tx2 * ADXL372_USCALE;//97.65625;
b2 = (float)ty2 * ADXL372_USCALE;//97.65625;
c2 = (float)tz2 * ADXL372_USCALE;//97.65625; //加速度转换

a2/= 1000000;
b2/= 1000000;
c2/= 1000000;

printf(" X轴加速度:%f ",a2);
printf(" Y轴加速度:%f ",b2);
printf(" Z轴加速度:%f ",c2);
}

这样处理有问题吗?

如果0xff 0xa0,实际应该是十进制多少数值?

如果我处理数据是对的,那这个数据采集的结果感觉误差很大,实际这个精度是±3g,大概在±30m/s2都属于正常吗?

ADXL372是大量程检测跌落冲击事件的传感器,噪声会大一点,2~3g峰峰值的噪声是正常的

调试

如果±3g有点大,可以改一下采样率做下fft看频域是否平坦,另外传感器要固定好,电源推荐用低噪声LDO。

Tips    

ADXL372是一款超低功耗、3轴、±200 g MEMS加速度计。

ADXL372以3200 Hz输出数据速率(ODR)工作时功耗为22 μA,该器件未对其前端周期供电以实现其低功耗操作,因此不会冒传感器输出混叠的风险。

除了超低功耗以外,ADXL372还具有许多特性来实现冲击检测以及系统级节能。该器件包含了一个深度多模式输出先进先出(FIFO)、几个运动检测模式以及一种用于仅捕捉过阈值事件峰值加速度的方式。

提供两种额外的较低功耗模式和中断驱动的唤醒特性,用于监控非活动期间的运动情况。在唤醒模式下,可以对加速度数据求均值以获取足够的低输出噪声,从而触发低g阈值。在即时导通模式下,ADXL372功耗为1.4 μA,同时连续监控冲击环境。当检测到冲击事件超过内部设定的阈值时,器件会切换到正常的工作模式,其速度非常快以便记录事件。

高 g 应用往往会在宽频率范围内体验加速度内容。ADXL372包含一个4极低通抗混叠滤波器,能够使高 g 应用中常见的带外信号衰减。ADXL372还内置一个高通滤波器,可消除初始和慢速变化的误差,如环境温度漂移。

ADXL372在100 mg/LSB比例因子时提供12位输出数据。用户可以通过串行外设接口(SPI)或有限I2C协议访问配置和数据寄存器。ADXL372在宽电源电压范围内工作,采用3 mm × 3.25 mm × 1.06 mm封装。

多功能引脚名称可能仅通过相关功能来引用。

应用

冲击和震动检测

资产状况评估

便携式物联网(IoT)边缘节点

脑震荡和头部创伤检测

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分