“(SKU:RB-02S073)LSM9DS0- 9轴姿态传感器”的版本间的差异
来自ALSROBOT WiKi
(→连接图示) |
(→连接图示) |
||
第74行: | 第74行: | ||
|- | |- | ||
|align="center"|SCL | |align="center"|SCL | ||
− | |align="center"|SCL | + | |align="center"|SCL |
|- | |- | ||
|align="center"|SDA | |align="center"|SDA | ||
− | |align="center"|SDA | + | |align="center"|SDA |
|- | |- | ||
|align="center"|VDD | |align="center"|VDD |
2015年10月9日 (五) 11:26的版本
目录 |
产品概述
LSM9DS0-9轴姿态传感器选用的是LSM9DS0芯片,它是一种可实现动作感应的系统芯片,里面包括了一个3轴加速计,一个3轴陀螺仪和一个3轴磁力计。在LSM9DS0中,每种传感器都有良好的检测范围:LSM9DS0线性加速满量程为±2g/±4g/±6g/±8g/±16g;磁场满量程为±2 /±4 /±8 /±12高斯;陀螺仪满量程为±245 /±500 /±2000°/S。9轴姿态传感器还包含了I2C串行总线接口,支持标准和快速模式(100 kHz和400 kHz)及SPI串行接口标准。
规格参数
- 模拟电源电压范围:2.4V~3.6V
- 3轴加速度计:±2/±4/±6/±8/±16 g
- 3轴陀螺仪:±245/±500/±2000°/S
- 3轴磁力计:±2/±4/±8/±12高斯
- 16位的数据输出
- SPI/ I2C串行接口
- 嵌入式FIFO(先入先出的队列);
- 可编程中断发生
- 嵌入式自测试
- 嵌入式温度传感器
- 尺寸大小: 3.302cm x 1.524cm
- 重量大小:10g
使用方法
引脚定义
9轴姿态传感器 | 引脚定义 |
CSG | 陀螺仪芯片操作方式选择引脚 |
CSXM | 加速度芯片操作方式选择引脚 |
SDOG | 地址选择引脚 |
SDOX | SPI模式输出陀螺仪数据 |
SCL | 信号时钟引脚 |
SDA | 数据引脚 |
VDD | 电源正极 |
GND | 电源地 |
DEN | 陀螺仪数据使能引脚 |
INTG | 陀螺仪可编程中断 |
DRDYG | 陀螺仪数据准备引脚 |
INT1XM | 加速度中断1 |
INT2XM | 加速度中断2 |
连接图示
首先需要安装一下LSM9DS0的Arduino库,然后图中右侧的小红色芯片为电平转换芯片。
9轴姿态传感器 | Arduino |
CSG、CSXM、SDOG、SDOXM、DEN、INTG | 不接 |
SCL | SCL |
SDA | SDA |
VDD | 3.3V |
GND | GND |
DRDYG | D4 |
INT1XM | D2 |
INT2XM | D3 |
应用例程
示例代码
#include <SPI.h> #include <Wire.h> #include <SFE_LSM9DS0.h> #define LSM9DS0_XM 0x1D #define LSM9DS0_G 0x6B LSM9DS0 dof(MODE_I2C, LSM9DS0_G, LSM9DS0_XM); #define PRINT_CALCULATED #define PRINT_SPEED 500 void setup() { Serial.begin(115200); uint16_t status = dof.begin(); Serial.print("LSM9DS0 WHO_AM_I's returned: 0x"); Serial.println(status, HEX); Serial.println("Should be 0x49D4"); Serial.println(); } void loop() { printGyro(); // Print "G: gx, gy, gz" printAccel(); // Print "A: ax, ay, az" printMag(); // Print "M: mx, my, mz" printHeading((float) dof.mx, (float) dof.my); printOrientation(dof.calcAccel(dof.ax), dof.calcAccel(dof.ay), dof.calcAccel(dof.az)); Serial.println(); delay(PRINT_SPEED); } void printGyro() { dof.readGyro(); Serial.print("G: "); #ifdef PRINT_CALCULATED Serial.print(dof.calcGyro(dof.gx), 2); Serial.print(", "); Serial.print(dof.calcGyro(dof.gy), 2); Serial.print(", "); Serial.println(dof.calcGyro(dof.gz), 2); #elif defined PRINT_RAW Serial.print(dof.gx); Serial.print(", "); Serial.print(dof.gy); Serial.print(", "); Serial.println(dof.gz); #endif } void printAccel() { dof.readAccel(); Serial.print("A: "); #ifdef PRINT_CALCULATED Serial.print(dof.calcAccel(dof.ax), 2); Serial.print(", "); Serial.print(dof.calcAccel(dof.ay), 2); Serial.print(", "); Serial.println(dof.calcAccel(dof.az), 2); #elif defined PRINT_RAW Serial.print(dof.ax); Serial.print(", "); Serial.print(dof.ay); Serial.print(", "); Serial.println(dof.az); #endif } void printMag() { dof.readMag(); Serial.print("M: "); #ifdef PRINT_CALCULATED Serial.print(dof.calcMag(dof.mx), 2); Serial.print(", "); Serial.print(dof.calcMag(dof.my), 2); Serial.print(", "); Serial.println(dof.calcMag(dof.mz), 2); #elif defined PRINT_RAW Serial.print(dof.mx); Serial.print(", "); Serial.print(dof.my); Serial.print(", "); Serial.println(dof.mz); #endif } void printHeading(float hx, float hy) { float heading; if (hy > 0) { heading = 90 - (atan(hx / hy) * (180 / PI)); } else if (hy < 0) { heading = - (atan(hx / hy) * (180 / PI)); } else // hy = 0 { if (hx < 0) heading = 180; else heading = 0; } Serial.print("Heading: "); Serial.println(heading, 2); } void printOrientation(float x, float y, float z) { float pitch, roll; pitch = atan2(x, sqrt(y * y) + (z * z)); roll = atan2(y, sqrt(x * x) + (z * z)); pitch *= 180.0 / PI; roll *= 180.0 / PI; Serial.print("Pitch, Roll: "); Serial.print(pitch, 2); Serial.print(", "); Serial.println(roll, 2); }
程序效果
下载完程序,然后打开串口监视器,将波特率调到115200,然后按照显示的内容输入相应数字进行功能选择,可以观察到多种数据。
产品相关推荐
产品购买地址
周边产品推荐
Arduino 9 Axes Motion Shield 9轴运动扩展板
相关问题解答
Arduino 9 Axes Motion Shield 9轴运动扩展板 三轴加速度计