Skip to main content

Grove - 三轴数字加速度计 40g (ADXL357)

pir

您可以在我们的网站上找到各种三轴加速度计,以满足不同场景和需求。这次,我们为您带来了工业级、高稳定性、高精度和低功耗的 ADI ADXL 系列三轴加速度计。

Grove - 三轴数字加速度计 ±40g (ADXL357) 是一款数字输出 MEMS 加速度计。该传感器具有三种不同的可选测量范围和精度:±10g@51200 LSB/g、±20g@25600 LSB/g、±40g@12800 LSB/g。您只需进行少量校准工作即可获得相对准确的结果。它通过 Grove I2C 接口输出所有数据,I2C 地址也是可选的。此外,我们还提供两个可配置为 4 种模式的中断输出引脚。

ADI ADXL 系列加速度计包括四款产品,可满足您不同的测量范围和输出需求:

产品测量范围输出接口
Grove - 三轴模拟加速度计 ±20g (ADXL356B)±10 / ±20g模拟
Grove - 三轴模拟加速度计 ±40g (ADXL356C)±10g / ±40g模拟
Grove - 三轴数字加速度计 ±40g (ADXL357)±10g@51200 LSB/g / ±20g@25600 LSB/g / ±40g@12800 LSB/g数字 I2C
Grove - 三轴数字加速度计 ±200g (ADXL372)±200g数字 I2C

pir

特性

  • 行业领先的噪声水平、温度下的最小偏移漂移以及长期稳定性,支持精密应用,所需校准工作量极少。
  • 密封封装提供卓越的长期稳定性,0 g 偏移与温度(所有轴):最大 0.75 mg/°C
  • 超低噪声密度(所有轴):80 μg/√Hz
  • 内置 20 位模数转换器 (ADC)
  • 低漂移、低噪声和低功耗
  • 支持双通道中断输出
  • 支持 FIFO(96*21 位)

应用场景

  • 惯性测量单元 (IMUs)/高度与航向参考系统 (AHRSs)
  • 平台稳定系统
  • 结构健康监测
  • 状态监测
  • 地震成像
  • 倾斜感应
  • 机器人技术

规格参数

参数
供电电压3.3V / 5V
工作环境温度-40 – 125℃
XOUT, YOUT, ZOUT 的灵敏度 / (与 V1P8ANA 成比例)±10 g@80 mv/g (典型值) / ±20 g@40 mv/g (典型值) / ±40 g@20 mv/g (典型值)
温度引起的灵敏度变化±0.01%/°C (TA = −40°C 至 +125°C)
0g 偏移 / (相对于 V1P8ANA/2)±125 mg (典型值)
输出接口数字

引脚图

pir

pir

支持的平台

ArduinoRaspberry Pi

pir

pir

入门指南

使用 Arduino

所需材料

Seeeduino V4.2Base ShieldGrove 3轴加速度计 ADXL357

pir

pir

pir

立即购买立即购买立即购买

此外,您可以考虑我们的新产品 Seeeduino Lotus M0+,它相当于 Seeeduino V4.2 和 Base Shield 的组合。

note

1 请轻轻插入 USB 数据线,否则可能会损坏接口。请使用内部有 4 根线的 USB 数据线,只有 2 根线的 USB 数据线无法传输数据。如果您不确定手头的数据线是否符合要求,可以点击这里购买。

2 每个 Grove 模块在购买时都会附带一根 Grove 数据线。如果您丢失了数据线,可以点击这里购买。

硬件连接

  • 步骤 1. 将 Grove - 3轴模拟加速度计 ±20g (ADXL357) 连接到 Base Shield 的 I2C 接口。

  • 步骤 2. 将 Grove - Base Shield 插入 Seeeduino。

  • 步骤 3. 使用 USB 数据线将 Seeeduino 连接到电脑。

pir

软件

note

如果这是您第一次使用 Arduino,我们强烈建议您在开始之前查看 Arduino 入门指南

pir

//basic_demo.ino
#include "Seeed_adxl357b.h"


#if defined(ARDUINO_ARCH_AVR)
#pragma message("Defined architecture for ARDUINO_ARCH_AVR.")
#define SERIAL Serial
#elif defined(ARDUINO_ARCH_SAM)
#pragma message("Defined architecture for ARDUINO_ARCH_SAM.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_SAMD)
#pragma message("Defined architecture for ARDUINO_ARCH_SAMD.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_STM32F4)
#pragma message("Defined architecture for ARDUINO_ARCH_STM32F4.")
#define SERIAL SerialUSB
#else
#pragma message("Not found any architecture.")
#define SERIAL Serial
#endif


#define CALI_BUF_LEN 15
#define CALI_INTERVAL_TIME 250
int32_t cali_buf[3][CALI_BUF_LEN];
int32_t cali_data[3];

float factory;

Adxl357b adxl357b;


int32_t deal_cali_buf(int32_t *buf)
{
int32_t cali_val = 0;

for(int i = 0;i < CALI_BUF_LEN;i++)
{
cali_val += buf[i];
}
cali_val = cali_val/CALI_BUF_LEN;
return (int32_t)cali_val;
}


void calibration(void)
{
int32_t x;
SERIAL.println("Please Place the module horizontally!");
delay(1000);
SERIAL.println("Start calibration........");

for(int i=0;i<CALI_BUF_LEN;i++)
{
if(adxl357b.checkDataReady())
{
if(adxl357b.readXYZAxisResultData(cali_buf[0][i],cali_buf[1][i],cali_buf[2][i]))
{
}
}
delay(CALI_INTERVAL_TIME);
// SERIAL.print('.');
}
// SERIAL.println('.');
for(int i=0;i<3;i++)
{
cali_data[i] = deal_cali_buf(cali_buf[i]);
SERIAL.println(cali_data[i]);
}
x = (((cali_data[2] - cali_data[0]) + (cali_data[2] - cali_data[1]))/2);
factory = 1.0 / (float)x;
// SERIAL.println(x);
SERIAL.println("Calibration OK!!");
}






void setup(void)
{
uint8_t value = 0;
float t;

SERIAL.begin(115200);
if(adxl357b.begin())
{
SERIAL.println("Can't detect ADXL357B device .");
while(1);
}
SERIAL.println("Init OK!");
/*Set full scale range to ±40g*/
adxl357b.setAdxlRange(FOURTY_G);
/*Switch standby mode to measurement mode.*/
adxl357b.setPowerCtr(0);
delay(100);
/*Read Uncalibration temperature.*/
adxl357b.readTemperature(t);

SERIAL.print("Uncalibration temp = ");
SERIAL.println(t);
/**/
calibration();

}


void loop(void)
{
int32_t x,y,z;
uint8_t entry = 0;
if(adxl357b.checkDataReady())
{
if(adxl357b.readXYZAxisResultData(x,y,z))
{
SERIAL.println("Get data failed!");
}
SERIAL.print("X axis = ");
SERIAL.print(x*factory);
SERIAL.println('g');
SERIAL.print("Y axis = ");
SERIAL.print(y*factory);
SERIAL.println('g');
SERIAL.print("Z axis = ");
SERIAL.print(z*factory);
SERIAL.println('g');

}
delay(100);
}




  • 步骤 4. 上传示例代码。如果您不知道如何上传代码,请查看 如何上传代码

  • 步骤 5. 打开 Arduino IDE 的 串口监视器,点击 工具->串口监视器。或者同时按下 ++ctrl+shift+m++ 键。将波特率设置为 115200

  • 步骤 6. 校准 等待校准,仅需几秒钟即可完成校准。

  • 步骤 7. 现在您可以使用此传感器,输出结果如下所示:

Start calibration.......Init OK!
Uncalibration temp = 29.20
Please Place the module horizontally!
Start calibration........
-1652
11143
6063
Calibration OK!!
X axis = -1.24g
Y axis = 8.50g
Z axis = 4.55g
X axis = -1.21g
Y axis = 8.43g

原理图在线查看器

资源

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,确保您使用我们的产品时体验顺畅。我们提供多个沟通渠道,以满足不同的偏好和需求。

Loading Comments...