|
ICM-45686是TDK InvenSense最新推出的一款超高性能六轴MEMS运动传感器,采用独特的BalancedGyro技术,可实现极佳的抗震和温度稳定性性能,并提供超低功耗。在本篇帖子中,我们将主要介绍如何基于Arduino UNO开发板通过SPI方式使用ICM-45686模块,实现读取加速度计和陀螺仪的原始数据。
所需的组件 ● Arduino UNO开发板 ● YBX-ICM45686六轴惯性测量单元模块(淘宝链接) ● 连接跳线 ● USB线缆
YBX-ICM45686六轴惯性测量单元模块 YBX-ICM45686模块是博根工作室推出的模块扩展板,采用TDK InvenSense 6轴MEMS运动传感器ICM-45686。该运动传感器是一款高性能双接口 (UI + AUX) 六轴MEMS运动跟踪器件。ICM-45686支持此IMU类中最低的陀螺仪和加速度传感器噪声,并且具有最高的温度、冲击或弯曲引起的偏移稳定性,以及对带外振动引起的噪声的免疫力。其他业界领先的功能包括用于手势识别、活动分类和计步器的片上APEX运动处理引擎,以及可编程数字滤波器和嵌入式温度传感器。
该模块加速度传感器同时支持SPI和I2C接口方式,板载电源LDO,支持3.3V和5V电源输入。
硬件连接 Arduino开发板通过SPI连接到YBX-ICM45686模块,以下是硬件连接原理图:
首先连接SPI接口,将YBX-ICM45686模块的SCK、MOSI和MISO分别连接到Arduino UNO开发板的引脚13(SCK)、11(MOSI)和12(MISO),片选引脚CSB连接到10。 YBX-ICM45686模块的VCC连接到+5V引脚,GND引脚连接到Arduino的任意GND引脚。 硬件连接完成后如下图所示:
安装库文件 在进行编程之前,我们需要安装TDK InvenSense公司官方提供的ICM45686的库文件,可以在Github上面下载,下载链接:motion.arduino.ICM45686。也可以在库管理器中搜索ICM45686,找到该库文件,然后进行安装。
该库文件支持使用SPI或I2C接口轻松配置和记录ICM45686设备的加速度计、陀螺仪和温度数据。它还提供嵌入式算法,例如点击、倾斜、计步器、运动唤醒的相关示例代码。
代码 本文使用的是库文件中提供的Polling_SPI示例。 首先将代码中的CS引脚修改成10: - // Instantiate an ICM456XX with SPI interface and CS on pin 10
- ICM456xx IMU(SPI,10);
复制代码完整的代码如下所示: - #include "ICM45686.h"
- // Instantiate an ICM456XX with SPI interface and CS on pin 8
- ICM456xx IMU(SPI,8);
- void setup() {
- int ret;
- Serial.begin(115200);
- while(!Serial) {}
- // Initializing the ICM456XX
- ret = IMU.begin();
- if (ret != 0) {
- Serial.print("ICM456xx initialization failed: ");
- Serial.println(ret);
- while(1);
- }
- // Accel ODR = 100 Hz and Full Scale Range = 16G
- IMU.startAccel(100,16);
- // Gyro ODR = 100 Hz and Full Scale Range = 2000 dps
- IMU.startGyro(100,2000);
- // Wait IMU to start
- delay(100);
- }
- void loop() {
- inv_imu_sensor_data_t imu_data;
- // Read registers
- IMU.getDataFromRegisters(imu_data);
- // Format data for Serial Plotter
- Serial.print("AccelX:");
- Serial.println(imu_data.accel_data[0]);
- Serial.print("AccelY:");
- Serial.println(imu_data.accel_data[1]);
- Serial.print("AccelZ:");
- Serial.println(imu_data.accel_data[2]);
- Serial.print("GyroX:");
- Serial.println(imu_data.gyro_data[0]);
- Serial.print("GyroY:");
- Serial.println(imu_data.gyro_data[1]);
- Serial.print("GyroZ:");
- Serial.println(imu_data.gyro_data[2]);
- Serial.print("Temperature:");
- Serial.println(imu_data.temp_data);
- // Run @ ODR 100Hz
- delay(1000);
- }
复制代码
编译并将代码上传到Arudino开发板。连接开发板至计算机。
运行测试结果 打开串口监视器,查看Arduino开发板的输出结果。旋转模块,并观察输出数值的变化。
以上就是使用Arduino开发板连接ICM-45686模块的全部内容,如果有任何疑问,请随时在本帖下面回复。
|