mpu-6050三軸陀螺儀/三軸加速度計測試

 mpu-6050三軸陀螺儀測試




















簡介

供電電源:3V~5V(內部低壓差穩壓)

通信方式:標準IIC通信協定,晶片內置16bit AD轉換器16位元資料輸出

陀螺儀範圍:±250 500 1000 2000  °/sec

加速度範圍:±±±±16g   

MPU-6000系列為全球首例整合性6軸運動處理組件,相較於多元件方案,免除了組合陀螺儀與加速器時之軸間差的問題,減少了大量的包裝空間。MPU-6000整合了3軸陀螺儀、3軸加速器,並含可藉由第二個I2C埠連接其他廠牌之加速器、磁力感測器、或其他感測器的數位運動處理(DMP: Digital Motion Processor)硬體加速引擎,由主要I2C埠以單一資料流程的形式,向應用端輸出完整的9軸融合演算技術

InvenSense的運動處理資料庫,可處理運動感測的複雜資料,降低了運動處理運算對作業系統的負荷,並為應用開發提供架構化的API

MPU-6000的角速度全格感測範圍為±250、±500、±1000與±2000°/sec (dps),可準確追緃快速與慢速動作,並且,用戶可程式控制的加速器全格感測範圍為±2g、±4g±8g與±16g。產品傳輸可透過最高至400kHzI2C或最高達20MHzSPI

MPU-6000可在不同電壓下工作,VDD供電電壓介為2.5V±5%3.0V±5%3.3V±5%,邏輯介面VVDIO供電為1.8V± 5%MPU-6000的包裝尺寸4x4x0.9mm(QFN),在業界是革命性的尺寸。其他的特徵包含內建的溫度感測器、包含在運作環境中僅有±1%變動的振盪器。

應用

運動感測遊戲

現實增強

電子穩像 (EIS: Electronic Image Stabilization)

光學穩像(OIS: Optical Image Stabilization)

行人導航器

“零觸控”手勢用戶介面

姿勢快捷方式認證

 

市場

智慧型手機

平板裝置設備

手持型遊戲產品

3D遙控器

可攜式導航設備

特徵

以數位輸出6軸或9軸的旋轉矩陣、四元數(quaternion)、歐拉角格式(Euler Angle forma)的融合演算資料。

具有131 LSBs/°/sec 敏感度與全格感測範圍為±250、±500、±1000與±2000°/sec 3軸角速度感測器(陀螺儀)

可程式控制,且程式控制範圍為±2g、±4g、±8g和±16g3軸加速器。

移除加速器與陀螺儀軸間敏感度,降低設定給予的影響與感測器的飄移。

數位運動處理(DMP: Digital Motion Processing)引擎可減少複雜的融合演算資料、感測器同步化、姿勢感應等的負荷。

運動處理資料庫支援AndroidLinuxWindows

內建之運作時間偏差與磁力感測器校正演算技術,免除了客戶須另外進行校正的需求。

以數位輸出的溫度感測器

以數位輸入的同步引腳(Sync pin)支援視頻電子影相穩定技術與GPS

可程式控制的中斷(interrupt)支援姿勢識別、搖攝、畫面放大縮小、滾動、快速下降中斷、high-G中斷、零動作感應、觸擊感應、搖動感應功能。

VDD供電電壓為2.5V±5%3.0V±5%3.3V±5%VDDIO1.8V± 5%

陀螺儀運作電流:5mA,陀螺儀待命電流:5μA;加速器運作電流:350μA,加速器省電模式電流: 20μA@10Hz

高達400kHz快速模式的I2C,或最高至20MHzSPI串列主機介面(serial host interface)

內建頻率產生器在所有溫度範圍(full temperature range)僅有±1%頻率變化。

使用者親自測試

10,000 g 碰撞容忍度

為可攜式產品量身訂作的最小最薄包裝 (4x4x0.9mm QFN)

符合RoHS及環境標準

以上是產品介紹,在那麼難的數學😂,要計算角度和演算法等等....,實在

超過我的能力範圍,目前只能一邊借用範例,取得角度值,讓想要的東西動

起來,以這個為前提,讓我來試試這個元件。

接線

I2C傳輸
VCC----+5V
GND---GND
SDA---A4
SCL---A5

程式碼

須匯入的庫


#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true); //是否顯示偏移量,false不顯示
}

void loop() {
  mpu6050.update();

  if(millis() - timer > 1000){
    
    Serial.println("=======================================================");
    Serial.print("temp : ");Serial.println(mpu6050.getTemp()); //溫度
    Serial.print("accX : ");Serial.print(mpu6050.getAccX());  //轉成物理單位(g)的x軸方向的加速度值)
    Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());  //轉成物理單位(g)的y軸方向的加速度值)
    Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ()); //轉成物理單位(g)的z軸方向的加速度值)
  
    Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());  //轉成物理單位(度/秒)x軸方向的角度值
    Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY()); //轉成物理單位(度/秒)y軸方向的角度值
    Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());  //轉成物理單位(度/秒)z軸方向的角度值
  
    Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX()); //加速度計x軸方向的角度值
    Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY()); //加速度計y軸方向的角度值
  
    Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX()); //陀螺儀x軸方向的角度值
    Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY()); //陀螺儀y軸方向的角度值
    Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ()); //陀螺儀z軸方向的角度值
    
    Serial.print("angleX : ");Serial.print(mpu6050.getAngleX()); //融合陀螺儀和加速度計的x軸方向角度值
    Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY()); //融合陀螺儀和加速度計的y軸方向角度值
    Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ()); //融合陀螺儀和加速度計的z軸方向角度值
    Serial.println("=======================================================\n");
    timer = millis();
    
  }

}


實驗結果

以陀螺儀角度值實驗











留言

這個網誌中的熱門文章

平衡小車(balance-Robot)-基本平衡-Arduino