一、开箱
成功申请到EVAL-ADXL354CZ模块,这是Analog Devices Inc.(亚德诺半导体)推出的一款评估板,用于评估ADXL354C三轴加速度计。


到手后发现一个小问题,这个传感器模块是模拟信号输出的,没有数字接口输出。自己在申请时功课没做足。到手后本计划试用ESP32S3的ADC直接读取传感器的输出,但是问了一下AI,说ESP32的ADC有点垃圾,不合适直接读取这个模块的输出,于是找都手头的一块ADS1115模块,来读取这个传感器。ADS1115是一个I2C 接口 16 位高精度模数转换器。用它来做中转,将传感器数据传送给ESP32S3。
二、接线
试用杜邦线连接模块来读取数据。首先是EVAL-ADXL354CZ模块,板子上有P1,P2两组输出口,这里需要使用P1接口。P1外侧的三个引脚为电源,依次为VDD;VDDIO;VSS。我这里将VDD和VDDIO短接,给3.3v供电。内侧3个引脚为X,Y,Z三轴的输出。上下各有一个跳线,下边的跳线MODE跳线,需要跳到左边(与3.3V短接,处于工作模式;右边GND短接,处于休眠模式)。上边跳线是RANGE量程跳线,左边(GND)为2g量程,右边(3.3v)为8g量程。



由开发板给两个模块供电,供电电压为3.3V,ADXL354C的三个轴数据输出,分别接到ADS1115的三个通道上。
三、读取数据
主控试用ESP32S3,试用arduino编程。

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
void setup()
{
Serial.begin(115200);
delay(5000);
Wire.begin(1, 2);
Wire.setClock(100000);
Serial.println("ADS1115 Test Start");
if (!ads.begin(0x48, &Wire))
{
Serial.println("ADS1115 not found! Check wiring.");
while (1)
{
delay(100);
}
}
ads.setGain(GAIN_ONE);
ads.setDataRate(RATE_ADS1115_128SPS);
}
void loop()
{
int16_t adc0 = ads.readADC_SingleEnded(0);
int16_t adc1 = ads.readADC_SingleEnded(1);
int16_t adc2 = ads.readADC_SingleEnded(2);
float voltage0 = ads.computeVolts(adc0);
float voltage1 = ads.computeVolts(adc1);
float voltage2 = ads.computeVolts(adc2);
Serial.print("AIN0: ");
Serial.print(adc0);
Serial.print(" (");
Serial.print(voltage0, 4);
Serial.print("V) ");
Serial.print("AIN1: ");
Serial.print(adc1);
Serial.print(" (");
Serial.print(voltage1, 4);
Serial.print("V) ");
Serial.print("AIN2: ");
Serial.print(adc2);
Serial.print(" (");
Serial.print(voltage2, 4);
Serial.println("V) ");
delay(500);
}这里简单地驱动ADS1115读取三个通道的ADC值并转换为电压值。遗憾的事情发生了,随着模块的旋转,ADC读取的值虽然有变化,但是始终都没有能超过1.6V的(使用8G量程)。
AIN0: 7134 (0.8918V) AIN1: 5514 (0.6893V) AIN2: 9850 (1.2313V) AIN0: 7134 (0.8918V) AIN1: 5517 (0.6896V) AIN2: 9854 (1.2318V) AIN0: 7135 (0.8919V) AIN1: 5517 (0.6896V) AIN2: 9849 (1.2311V) AIN0: 7136 (0.8920V) AIN1: 5515 (0.6894V) AIN2: 9853 (1.2316V) AIN0: 7138 (0.8923V) AIN1: 5516 (0.6895V) AIN2: 9851 (1.2314V) AIN0: 7140 (0.8925V) AIN1: 5517 (0.6896V) AIN2: 9854 (1.2318V) AIN0: 7140 (0.8925V) AIN1: 5515 (0.6894V) AIN2: 9858 (1.2323V) AIN0: 7139 (0.8924V) AIN1: 5516 (0.6895V) AIN2: 9857 (1.2321V) AIN0: 7139 (0.8924V) AIN1: 5515 (0.6894V) AIN2: 9851 (1.2314V) AIN0: 7137 (0.8921V) AIN1: 5516 (0.6895V) AIN2: 9854 (1.2318V) AIN0: 9352 (1.1690V) AIN1: 5961 (0.7451V) AIN2: 8907 (1.1134V) AIN0: 10097 (1.2621V) AIN1: 6517 (0.8146V) AIN2: 6928 (0.8660V) AIN0: 6602 (0.8253V) AIN1: 4221 (0.5276V) AIN2: 7874 (0.9843V) AIN0: 4781 (0.5976V) AIN1: 8380 (1.0475V) AIN2: 8698 (1.0872V) AIN0: 6570 (0.8213V) AIN1: 9311 (1.1639V) AIN2: 5562 (0.6953V) AIN0: 4052 (0.5065V) AIN1: 6974 (0.8718V) AIN2: 7754 (0.9693V) AIN0: 10031 (1.2539V) AIN1: 6197 (0.7746V) AIN2: 7583 (0.9479V) AIN0: 7685 (0.9606V) AIN1: 6350 (0.7938V) AIN2: 4720 (0.5900V) AIN0: 6834 (0.8543V) AIN1: 9871 (1.2339V) AIN2: 5631 (0.7039V) AIN0: 8225 (1.0281V) AIN1: 8482 (1.0603V) AIN2: 4124 (0.5155V) AIN0: 7709 (0.9636V) AIN1: 7307 (0.9134V) AIN2: 4386 (0.5483V) AIN0: 8108 (1.0135V) AIN1: 4237 (0.5296V) AIN2: 6611 (0.8264V) AIN0: 7033 (0.8791V) AIN1: 5807 (0.7259V) AIN2: 9980 (1.2475V) AIN0: 7095 (0.8869V) AIN1: 5808 (0.7260V) AIN2: 10014 (1.2518V) AIN0: 7089 (0.8861V) AIN1: 5810 (0.7263V) AIN2: 10009 (1.2511V) AIN0: 7087 (0.8859V) AIN1: 5808 (0.7260V) AIN2: 10010 (1.2513V) AIN0: 7087 (0.8859V) AIN1: 5810 (0.7263V) AIN2: 10012 (1.2515V)
找了豆包帮忙寻找损坏原因,豆包给了两个可能性:
1、机械冲击、跌落(最高概率)。ADXL354 系列是**高精密 MEMS 电容式加速度传感器**,内部是微小硅制悬臂 / 质量块结构,机械十分脆弱。内部 MEMS 里面有微米级可动质量块、悬臂梁。 猛烈撞击 → 硅悬臂梁发生**微裂纹、塑性形变**; 质量块偏移,不再居中。
2、静电 ESD 损坏。MEMS 芯片对静电敏感。冬天徒手触摸芯片引脚,高压静电击穿内部输出放大器。
静电损坏更多现象:完全无输出或者输出锁死固定电平;**一般不会出现 “还能随姿态变化,但摆幅残缺” 这种特征**,所以你的情况静电概率低。
四、这是个悲伤的故事。
好心痛啊,悲伤的感觉无法平复,期望各位小小伙伴们能成功完成评测。
我要赚赏金
