- 2024-08-30
-
回复了主题帖:
炒股的友友,最近还好吗
经济下行,没有热钱进去涨不起来的,只有几个股被游资爆炒,小散没有话语权,不好搞啊
- 2024-04-22
-
加入了学习《直播回放: ADI 惯性 MEMS 传感器的应用价值与选型》,观看 ADI 惯性 MEMS 传感器的应用价值与选型
- 2024-01-12
-
发表了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】基于ST平台的振动状态监控传感器项目...
本帖最后由 laocuo1142 于 2024-1-12 17:02 编辑
基于ST平台的振动状态监控传感器
作者:laocuo1142
一. 作品简介
该作品主要是基于ST平台的振动状态监控传感器项目,选择的开发板是以STM32L152RET6主控的ST开发板,选择的加速度传感器为ADI的ADXL372。
主要原理的通过ST的定时器,按照一定的采样频率(4khz)采集加速度传感器输出的连续加速度数据,通过滤波、FFT处理之后,对时间进行积分,获得当前设备的运行状态,当前的加速度、速度和位移值。
作品照片:
测量方法(基本原理)
设加速度传感器测量振动所得的加速度为: (单位:m/s2)
对加速度积分一次可得速率: (单位:m/s)
对速率信号积分一次可得位移: (单位:m)
其中:
为连续时域加速度波形
为连续时域速率波形
为连续位移波形
为i时刻的加速度采样值
为i时刻的速率值
=0;=0
为两次采样之间的时间差
二. 系统框图
功能流程图:
系统时钟图:
三. 各部分功能说明
定时器设置:配置为4096采样
数据采集:采集ADXL372数据
带通滤波
//通过MATLAB生成的巴特沃斯6阶带通滤波器系数
//fl:5Hz fh:1800Hz 通带增益0dB//5hz~1000hz
1.打开MATLAB,输入fdatool,打开模拟工具。
2.选择参数
加速度进行积分运算
四. 作品源码
下载链接:
五. 作品功能演示视频
六. 项目总结
下次选择传感器还是要注意选择量程和功能是不是能满足当前项目需求。
学习了STM32L152RE芯片的使用。
熟悉了ADXL372加速度芯片,对其进行参数设置和数据采集操作。
总得来说还是花时间认真完成的该计划,也学习了新知识,感谢EEWORLD和得捷提供的机会。
【DigiKey“智造万物,快乐不停”创意大赛】基于ST平台的振动状态监控传感器 开箱贴 https://bbs.eeworld.com.cn/thread-1265925-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】1.准备STM32L152程序+开始写驱动 https://bbs.eeworld.com.cn/thread-1266809-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】2.开始调试ADXL372加速度传感器 https://bbs.eeworld.com.cn/thread-1267691-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】3.设置ADXL372加速度传感器参数,升级... https://bbs.eeworld.com.cn/thread-1268402-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】4.确认ADXL372加速度传感器采集正常,... https://bbs.eeworld.com.cn/thread-1269624-1-1.html
七. 其他
无
-
回复了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】4.确认ADXL372加速度传感器采集正常,...
lugl4313820 发表于 2024-1-12 15:50
熟悉了ADXL372加速度芯片,对其进行参数设置和数据采集操作。
这个采集出来,可以算好多好玩的东西吧 ...
这个主要功能是做碰撞监测
-
上传了资料:
adxl372驱动程序
-
发表了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】4.确认ADXL372加速度传感器采集正常,...
这一贴算是结项,当时选择ADXL372没仔细看它的应用,这款传感器实际是去检测碰撞的,量程±200g,实际测试出来精度±3g都属于正常情况,这个精度没办法去做定量测试的传感器。
静止测试出来的数据都非常大,肯定满足不了当前这个项目需求。
本身和传感器通讯是没有问题的,应该是本身噪声就比较大,然后电源部分直接在开发板上取的3.3V电源,可能也有一定的影响。
静止时,测试平均加速度都有3.5mm/s2,其中还做了FFT滤波等算法。
这款传感器做碰撞检测是没问题的,带宽和量程很高。
总结
下次选择传感器还是要注意选择量程和功能是不是能满足当前项目需求。
学习了STM32L152RE芯片的使用。
熟悉了ADXL372加速度芯片,对其进行参数设置和数据采集操作。
总得来说还是花时间认真完成的该计划,也学习了新知识,感谢EEWORLD和得捷提供的机会。
- 2024-01-02
-
回复了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】3.设置ADXL372加速度传感器参数,升级...
wangerxian 发表于 2023-12-31 20:59
有没可能和芯片的角度有关系?
有可能芯片的精度就是这样
- 2023-12-28
-
发表了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】3.设置ADXL372加速度传感器参数,升级...
查找ADXL372手册找到相关设置寄存器
主要用到的设置寄存器
(1)寄存器 ADXL372_TIMING 0x3D
主要是设置ADXL372的数据输出频率,这个你设置的带宽越高,相应的频率就需要设置越大。
寄存器ADXL372_MEASURE 0x3E
主要用的带宽设置参数
寄存器ADXL372_POWER_CTL 0x3F
寄存器主要设置工作模式,连续输出数据。
程序测试
先是初始化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;
}
检查寄出去读出来的值都是对的。
X Y Z轴数据测试
这里很奇怪,板子是平放在桌面上,正常情况X轴输出的数据应该为0,Y轴输出的数据也应该为0,Z轴输出的数据应该是重力加速度,为1g,大概9.81m/s2。
从输出看Y轴和Z轴的MSB不应该是0xFF。
然后我试了一下各种寄存器设置,Y轴和Z轴的输出都不太对,去官网提了问题,看能不能解决。
总结
目前ADXL372数据读取有点小问题,解决中。然后又仔细去官网看了一下这个传感器的资料,这个传感器实际应用是在物流运输过程中或者运动员对抗,是针对冲击的检测和记录,不是我开始想的高精度的加速度传感器,±200g是为了检测冲击力的强度。实际传感器的精度125mg每刻度,量程太大导致精度不太OK。
后面就是通过FFT和一些滤波,加速度做积分得到速度值,看精度上能否满足振动状态监控的需求,目前看做冲击检测记录功能是OK的。