“(SKU:RB-02S073)LSM9DS0- 9軸姿態(tài)傳感器”的版本間的差異

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航、 搜索
?連接圖示
第74行: 第74行:
 
|-
 
|-
 
|align="center"|SCL
 
|align="center"|SCL
?
|align="center"|SCL
+
|align="center"|SCL(A5)
 
|-
 
|-
 
|align="center"|SDA
 
|align="center"|SDA
?
|align="center"|SDA
+
|align="center"|SDA(A4)
 
|-
 
|-
 
|align="center"|VDD
 
|align="center"|VDD

2015年10月9日 (五) 11:26的版本

9zzt.jpg

目錄

產(chǎn)品概述

LSM9DS0-9軸姿態(tài)傳感器選用的是LSM9DS0芯片,它是一種可實現(xiàn)動作感應(yīng)的系統(tǒng)芯片,里面包括了一個3軸加速計,一個3軸陀螺儀和一個3軸磁力計。在LSM9DS0中,每種傳感器都有良好的檢測范圍:LSM9DS0線性加速滿量程為±2g/±4g/±6g/±8g/±16g;磁場滿量程為±2 /±4 /±8 /±12高斯;陀螺儀滿量程為±245 /±500 /±2000°/S。9軸姿態(tài)傳感器還包含了I2C串行總線接口,支持標(biāo)準(zhǔn)和快速模式(100 kHz和400 kHz)及SPI串行接口標(biāo)準(zhǔn)。

規(guī)格參數(shù)

  1. 模擬電源電壓范圍:2.4V~3.6V
  2. 3軸加速度計:±2/±4/±6/±8/±16 g
  3. 3軸陀螺儀:±245/±500/±2000°/S
  4. 3軸磁力計:±2/±4/±8/±12高斯
  5. 16位的數(shù)據(jù)輸出
  6. SPI/ I2C串行接口
  7. 嵌入式FIFO(先入先出的隊列);
  8. 可編程中斷發(fā)生
  9. 嵌入式自測試
  10. 嵌入式溫度傳感器
  11. 尺寸大?。?3.302cm x 1.524cm
  12. 重量大?。?0g

使用方法

引腳定義

9軸姿態(tài)傳感器 引腳定義
CSG 陀螺儀芯片操作方式選擇引腳
CSXM 加速度芯片操作方式選擇引腳
SDOG 地址選擇引腳
SDOX SPI模式輸出陀螺儀數(shù)據(jù)
SCL 信號時鐘引腳
SDA 數(shù)據(jù)引腳
VDD 電源正極
GND 電源地
DEN 陀螺儀數(shù)據(jù)使能引腳
INTG 陀螺儀可編程中斷
DRDYG 陀螺儀數(shù)據(jù)準(zhǔn)備引腳
INT1XM 加速度中斷1
INT2XM 加速度中斷2


連接圖示

首先需要安裝一下LSM9DS0的Arduino庫,然后圖中右側(cè)的小紅色芯片為電平轉(zhuǎn)換芯片。

9軸姿態(tài)傳感器 Arduino
CSG、CSXM、SDOG、SDOXM、DEN、INTG 不接
SCL SCL(A5)
SDA SDA(A4)
VDD 3.3V
GND GND
DRDYG D4
INT1XM D2
INT2XM D3


9zzt1.jpg

應(yīng)用例程

示例代碼

庫文件官方下載地址

#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);
}

程序效果

下載完程序,然后打開串口監(jiān)視器,將波特率調(diào)到115200,然后按照顯示的內(nèi)容輸入相應(yīng)數(shù)字進(jìn)行功能選擇,可以觀察到多種數(shù)據(jù)。

RB-02S0731.jpg

產(chǎn)品相關(guān)推薦

Erweima.png

產(chǎn)品購買地址

9軸姿態(tài)傳感器

周邊產(chǎn)品推薦

Arduino 9 Axes Motion Shield 9軸運動擴(kuò)展板

相關(guān)問題解答

Arduino 9 Axes Motion Shield 9軸運動擴(kuò)展板 三軸加速度計

相關(guān)學(xué)習(xí)資料

產(chǎn)品應(yīng)用視頻 電路原理圖
數(shù)據(jù)表(lmv324)
安裝指南
GitHub(設(shè)計文件)
奧松機(jī)器人技術(shù)論壇