mpu-6050三軸陀螺儀測試
簡介
供電電源:3V~5V(內部低壓差穩壓)
通信方式:標準IIC通信協定,晶片內置16bit AD轉換器,16位元資料輸出
陀螺儀範圍:±250 500 1000 2000 °/sec
加速度範圍:±2 ±4 ±8 ±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。產品傳輸可透過最高至400kHz的I2C或最高達20MHz的SPI。
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和±16g的3軸加速器。
移除加速器與陀螺儀軸間敏感度,降低設定給予的影響與感測器的飄移。
數位運動處理(DMP: Digital Motion Processing)引擎可減少複雜的融合演算資料、感測器同步化、姿勢感應等的負荷。
運動處理資料庫支援Android、Linux與Windows
內建之運作時間偏差與磁力感測器校正演算技術,免除了客戶須另外進行校正的需求。
以數位輸出的溫度感測器
以數位輸入的同步引腳(Sync pin)支援視頻電子影相穩定技術與GPS
可程式控制的中斷(interrupt)支援姿勢識別、搖攝、畫面放大縮小、滾動、快速下降中斷、high-G中斷、零動作感應、觸擊感應、搖動感應功能。
VDD供電電壓為2.5V±5%、3.0V±5%、3.3V±5%;VDDIO為1.8V± 5%
陀螺儀運作電流:5mA,陀螺儀待命電流:5μA;加速器運作電流:350μA,加速器省電模式電流: 20μA@10Hz
高達400kHz快速模式的I2C,或最高至20MHz的SPI串列主機介面(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();
}
}
實驗結果
以陀螺儀角度值實驗
留言
張貼留言