目录
一、概述
由于网上关于ADXL375的资源比较丰富,所以本文主要讲述关于ADXL375的简易开发流程,并给出详细的资料以供取用。
实际上ADXL375的驱动实现流程和上一篇文章提到的ADXL373驱动代码是很相似的,如有需要可以点击下方链接跳转:【ADXL373、ADXL372】超低功耗加速度计的驱动代码测试-CSDN博客
二、ADXL375简要介绍
ADXL375是一款3轴、±200G 数字MEMS加速度计,其原理图如下:
初步了解,可以看到其内部是有一个ADC来转换传感器信号的,它将三轴加速度储存为16位二进制补码的形式,与ADXL373的12位数据相比,ADXL375的精度是高很多的,所以它的应用场景也更加的丰富。
重点特征:
1、低功耗:VS = 2.5 V时(典型值),测量模式下低至35 µA,待机模式下为0.1 µA;
2、冲击事件检测(在汽车领域可以应用于检测汽车碰撞这一类事件);
3、电源电压范围:2.0 V至3.6 V
4、支持SPI(3线式或4线式)和I2C数字接口(一般会使用SPI)
5、宽工作温度范围: -40℃至+85℃
6、抗冲击能力:10,000 g
7、ADXL375-EP支持防务和航空航天应用(AQEC标准)
详细参数和数据手册可跳至官网下载:
三、驱动代码
(一)驱动代码下载
可以直接访问github上面的库:
adafruit/Adafruit_ADXL375: Arduino library for ADX375 high-G accelerometer (github.com)
(二)驱动代码示例分析
在这个库文件中的examples中有两个示例:offsets.ino 以及 sensortest.ino,如下图所示:
其中offsets.ino相较于sensortest.ino多了一个自动校准的代码,如下图红色方框内所示:
如果你看过我关于ADXL373的那篇文章中关于偏移寄存器的设置(OFFSET Register) ,那么你可以更容易的理解这段代码的逻辑。在这里我们可以很好的复习一遍,ADXL375传感器在成功运行读到数据之后,大概率数据并不是理想的。(水平放置下可能是:+0.05g,-0.05g,+0.85g)所以给驱动代码加一段校准程序是必要的。那么如何校准呢?
首先,我们需要把OFFSET REGISTER内的数值置为0,也就是清空寄存器。之后我们根据上图中的Offset的范围以及49mg/LSB可以得到:在OFFSET_REG中的Value每增加1相对应的会偏移8个LSB(400 mg ≈ 49 * 8 mg),而我们要做的就是:根据OFFSET REG 清零之后测得的三轴的加速度数据,然后算出对应的偏移量应该为多少,最后再重新设置进OFFSET Register中即可完成校准。并且由于 49mg = 0.049g / LSB,所以最后得到的数据会有约为0.05g的误差。
四、实验测试
因为在实际芯片测试中ADXL375在加速度大于100g的时候表现出来较大的误差,所以就暂时不把测试结果放出来了。但可以告知的是,我使用测试设备是冲击台,最高是设置了峰值为250g的冲击测试,最低是65g的加速度。
这是冲击台的一部分测试结果(纵坐标单位均为/g):
我还做了正弦震动的测试,设置的加速度峰值是15g,属于较低的G值:
五、总结
对于如何编写ADXL375的库文件可以参考别人已经写好的库进行开发,也可以直接使用现成的驱动代码,相比起ADXL373无码可用要好一点。
挖坑:后续如果找到实验结果不理想的原因,并优化了ADXL375的驱动代码,可以实验测出它在大G值时还依旧保持较高的准确性的话,将会在这里进行更新,预计是9月份完成。
如果您对我所介绍的内容有任何改进的建议也欢迎告诉我!如果本文对你有帮助的话,不妨点个赞。欢迎留言讨论问题,一起讨论问题、解决问题。