[经验分享] 【DigiKey“智造万物,快乐不停”创意大赛】3.设置ADXL372加速度传感器参数,升级...

laocuo1142   2023-12-28 15:29 楼主
  1. 查找ADXL372手册找到相关设置寄存器

 

主要用到的设置寄存器

(1)寄存器 ADXL372_TIMING 0x3D

image-20231228152928-1.png  

主要是设置ADXL372的数据输出频率,这个你设置的带宽越高,相应的频率就需要设置越大。

  1. 寄存器ADXL372_MEASURE 0x3E

image-20231228152928-2.png  

主要用的带宽设置参数

  1. 寄存器ADXL372_POWER_CTL 0x3F

image-20231228152928-3.png  

寄存器主要设置工作模式,连续输出数据。

 

 

  1. 程序测试

先是初始化ADXL372,进行寄存器配置,然后读出确认。

//初始化

uint8_t ADXL372_Init(void)

{

    u8 ADXL372ID;

u8 i=0;

u8 ret=0;

    int m1=0,m2,m3,m4,m5,m6,m7;

 

IIC_Init(); //初始化IIC总线

// for(i=0;i<20;i++)

// {

     ADXL372ID = ADXL372_RD_Reg(ADXL372_DEVID);

 

     printf("ADXL372ID:%x\r\n",ADXL372ID);

// }

//设置ADXL372的寄存器状态

ADXL372_WR_Reg(ADXL372_MEASURE,0X84); //测量控制寄存器 0 0 00 0 100   不进入睡眠状态,默认模式,不选择低噪声模式,输出3200hz带宽 0X04

ADXL372_WR_Reg(ADXL372_TIMING,0X60); //外部定时控制器 100 000 00     6400hz输出011 000 00

ADXL372_WR_Reg(ADXL372_POWER_CTL,0X0F); //功率控制寄存器 0 0 0 1 0 0 11  全带宽分析模式0X13

    ADXL372_WR_Reg(ADXL372_FIFO_CTL,0X00);

    ADXL372_WR_Reg(ADXL372_OFFSET_X,0x00);

ADXL372_WR_Reg(ADXL372_OFFSET_Y,0x00);

ADXL372_WR_Reg(ADXL372_OFFSET_Z,0x00);

 

ADXL372_WR_Reg(0x40,  0x01);//启动自检

 

 

do {

ret = ADXL372_RD_Reg(0x40);

}

while((ret&(3<<1)) != 0x06);

 

 

m1 = ADXL372_RD_Reg(ADXL372_MEASURE);

m2 = ADXL372_RD_Reg(ADXL372_TIMING);

m3 = ADXL372_RD_Reg(ADXL372_POWER_CTL);

m4 = ADXL372_RD_Reg(ADXL372_FIFO_CTL);

 

m5 = ADXL372_RD_Reg(ADXL372_OFFSET_X);

m6 = ADXL372_RD_Reg(ADXL372_OFFSET_Y);

m7 = ADXL372_RD_Reg(ADXL372_OFFSET_Z);

 

printf("%x %x %x %x %x %x %x\r\n",m1,m2,m3,m4,m5,m6,m7);

 

return 1;       

}

image-20231228152928-4.png  

检查寄出去读出来的值都是对的。

 

  1. X Y Z轴数据测试

 

这里很奇怪,板子是平放在桌面上,正常情况X轴输出的数据应该为0,Y轴输出的数据也应该为0,Z轴输出的数据应该是重力加速度,为1g,大概9.81m/s2。

从输出看Y轴和Z轴的MSB不应该是0xFF。

image-20231228152928-5.png  

 

然后我试了一下各种寄存器设置,Y轴和Z轴的输出都不太对,去官网提了问题,看能不能解决。

 

 

总结

 

目前ADXL372数据读取有点小问题,解决中。然后又仔细去官网看了一下这个传感器的资料,这个传感器实际应用是在物流运输过程中或者运动员对抗,是针对冲击的检测和记录,不是我开始想的高精度的加速度传感器,±200g是为了检测冲击力的强度。实际传感器的精度125mg每刻度,量程太大导致精度不太OK。

后面就是通过FFT和一些滤波,加速度做积分得到速度值,看精度上能否满足振动状态监控的需求,目前看做冲击检测记录功能是OK的。

回复评论 (2)

有没可能和芯片的角度有关系?

点赞  2023-12-31 20:59
引用: wangerxian 发表于 2023-12-31 20:59 有没可能和芯片的角度有关系?

有可能芯片的精度就是这样

点赞  2024-1-2 10:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复