【ADXL357Z高精度3轴加速度传感器模块】库函数的使用
本文介绍了 DigiKey 和 EEWorld 共同举办的 你晒单我买单 活动的所选物料 —— ADXL357Z 高精度 3 轴加速度传感器模块 通过 Arduino Library 库函数调用,实现三轴加速度数据的精确获取,并生成实时动态演化曲线,进一步通过 LabVIEW 上位机采集加速度数据的项目设计。
准备工作
- 下载并安装 Arduino IDE 软件;
- 下载并安装 NI - LabVIEW 软件;
克隆库函数或直接下载压缩包文件。
打开 Arduino IDE 软件,点击 Sketch
- Include Library
- Add .ZIP Library ...
加载下载的 Seeed_ADXL357B
库函数压缩包;
添加完成后,在 File
- Examples
- Seeed_adxl357b
选项下,加载例程 basic_demo
;
硬件连接
采用 IIC 通信方式与 Arduino Nano 开发板(主控ATmega328P)连接
ADXL357 | Arduino Nano |
---|---|
SCL (P2 - 2) | SCL (A5) |
SDA (P2 - 6) | SDA (A4) |
VSS (P1 - 5) | GND |
VDD (P1 - 3) | 3V3 |
示意图
工程代码
这里对例程 basic_demo 代码的串口打印部分进行一些调整,便于绘制动态演化曲线
#include "Seeed_adxl357b.h"
#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 * factory); // X axis accelaration
SERIAL.print(' ');
SERIAL.print(y * factory); // Y axis accelaration
SERIAL.print(' ');
SERIAL.print(z * factory); // Z axis accelaration
SERIAL.println(' ');
}
delay(100);
}
保存代码,上传至开发板,打开串口监视器和串口绘图工具。
效果演示
打开串口监视器,并配置波特率为 115200 bps,此时输出校准后的三轴加速度数据
打开串口监视器和串口绘图工具,可见 XYZ 三轴加速度演化曲线
倾斜 ADXL357Z 加速度传感器模块,XYZ 三轴数据随之发生明显变化。
总结
本文介绍了 DigiKey 和 EEWorld 共同举办的 你晒单我买单 活动的所选物料 —— ADXL357Z 高精度 3 轴加速度传感器模块 通过 Arduino Library 库函数调用,实现三轴加速度数据的精确获取,并生成实时动态演化曲线的项目设计,为相关精密设备研发和高精度传感器的应用提供了参考。