查看(SKU:RB-02S073)LSM9DS0- 9轴姿态传感器的源代码
←
(SKU:RB-02S073)LSM9DS0- 9轴姿态传感器
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
[[文件:9zzt.jpg|500px|缩略图|右]] ==产品概述== 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 ==使用方法== ===引脚定义=== {|border="1" cellspacing="0" align="center" cellpadding="5" width="400px" |- |align="center"|9轴姿态传感器 |align="center"|引脚定义 |- |align="center"|CSG |align="center"|陀螺仪芯片操作方式选择引脚 |- |align="center"|CSXM |align="center"|加速度芯片操作方式选择引脚 |- |align="center"|SDOG |align="center"|地址选择引脚 |- |align="center"|SDOX |align="center"|SPI模式输出陀螺仪数据 |- |align="center"|SCL |align="center"|信号时钟引脚 |- |align="center"|SDA |align="center"|数据引脚 |- |align="center"|VDD |align="center"|电源正极 |- |align="center"|GND |align="center"|电源地 |- |align="center"|DEN |align="center"|陀螺仪数据使能引脚 |- |align="center"|INTG |align="center"|陀螺仪可编程中断 |- |align="center"|DRDYG |align="center"|陀螺仪数据准备引脚 |- |align="center"|INT1XM |align="center"|加速度中断1 |- |align="center"|INT2XM |align="center"|加速度中断2 |} <br/> ===连接图示=== 首先需要安装一下LSM9DS0的Arduino库,然后图中右侧的小红色芯片为电平转换芯片。<br/> {|border="1" cellspacing="0" align="center" cellpadding="5" width="400px" |- |align="center"|9轴姿态传感器 |align="center"|Arduino |- |align="center"|CSG、CSXM、SDOG、SDOXM、DEN、INTG |align="center"|不接 |- |align="center"|SCL |align="center"|SCL |- |align="center"|SDA |align="center"|SDA |- |align="center"|VDD |align="center"|3.3V |- |align="center"|GND |align="center"|GND |- |align="center"|DRDYG |align="center"|D4 |- |align="center"|INT1XM |align="center"|D2 |- |align="center"|INT2XM |align="center"|D3 |} <br> [[文件:9zzt1.jpg|700px|缩略图|居中]] ==应用例程== ===示例代码=== [https://github.com/sparkfun/SparkFun_LSM9DS0_Arduino_Library 库文件官方下载地址]<br/> <pre style='color:blue'> #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); } </pre> ===程序效果=== 下载完程序,然后打开串口监视器,将波特率调到115200,然后按照显示的内容输入相应数字进行功能选择,可以观察到多种数据。 [[文件:RB-02S0731.jpg|700px|缩略图|居中]] ==产品相关推荐== [[文件:erweima.png|230px|无框|右]] ===产品购买地址=== [http://www.alsrobot.cn/goods-565.htm 9轴姿态传感器]<br/> ===周边产品推荐=== [https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.20.QyL8Qd&id=522174307810 Arduino 9 Axes Motion Shield 9轴运动扩展板 ]<br/> ===相关问题解答=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=5505&fromuid=10780 Arduino 9 Axes Motion Shield 9轴运动扩展板 三轴加速度计]<br/> ===相关学习资料=== [https://www.sparkfun.com/videos#all/E4L8bYt6lCs/153 产品应用视频] [https://cdn.sparkfun.com/assets/8/c/c/4/9/lsm9ds0_breakout-v10-schematic-.pdf 电路原理图]<br/> [https://cdn.sparkfun.com/assets/f/6/1/f/0/LSM9DS0.pdf 数据表(lmv324)]<br/> [https://learn.sparkfun.com/tutorials/lsm9ds0-hookup-guide 安装指南]<br/> [https://github.com/sparkfun/LSM9DS0_Breakout GitHub(设计文件)]<br/> [http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/>
返回
(SKU:RB-02S073)LSM9DS0- 9轴姿态传感器
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面
页面信息