摘要:本文介紹姿態(tài)傳感器MPU6050的使用方法
姿態(tài)傳感器是一種用于測(cè)量物體姿態(tài)的傳感器,它可以檢測(cè)物體的加速度和角速度,并計(jì)算出物體的方向和角度。前邊介紹的RPI-1031只能定性的得到物體的傾斜情況,而姿態(tài)傳感器則可以定量的得到物體傾斜的方向和角度。
MPU6050是一種常用的姿態(tài)傳感器,它具有高精度、低功耗和成本低廉的特點(diǎn)。本文將介紹MPU6050的基本原理、工作方式、應(yīng)用領(lǐng)域以及優(yōu)缺點(diǎn)。
MPU-6050是全球首例6軸運(yùn)動(dòng)處理傳感器。它集成了3軸微機(jī)電系統(tǒng)(Microelectro Mechanical Systems, MEMS)陀螺儀和3軸MEMS加速度計(jì),以及板載數(shù)字運(yùn)動(dòng)處理器(Digital Motion Processor, DMP)。加速度計(jì)可以檢測(cè)物體的線(xiàn)性加速度,而陀螺儀可以檢測(cè)物體的角速度。因此,MPU-6050可以測(cè)量物體在x、y、z三個(gè)方向上的加速度和角速度。通過(guò)將加速度計(jì)和陀螺儀的測(cè)量結(jié)果進(jìn)行數(shù)據(jù)融合,可以計(jì)算出物體的方向和角度。所以,MPU-6050常應(yīng)用于平衡車(chē)、飛行器等需要檢測(cè)自身姿態(tài)的場(chǎng)景。
前面所說(shuō)的幾軸通常指加速度傳感器(即加速計(jì))、角速度傳感器(即陀螺儀)、磁感應(yīng)傳感器(即電子羅盤(pán))的數(shù)量,這三類(lèi)傳感器測(cè)量的數(shù)據(jù)在空間坐標(biāo)系中都可以被分解為X,Y,Z三個(gè)方向軸的力,因此也常常被稱(chēng)為3軸加速度計(jì)、3軸陀螺儀、3軸磁力計(jì)。
上面3類(lèi)傳感器有其各自的功能特點(diǎn)及應(yīng)用,比如加速度計(jì)可以測(cè)量設(shè)備的線(xiàn)性加速度,陀螺儀可以測(cè)量設(shè)備自身的旋轉(zhuǎn)角速度,還有磁力計(jì)可以檢測(cè)設(shè)備的方位。通過(guò)它們相互組合和匹配融合又可以衍生出更多的不同應(yīng)用,在叫法上通過(guò)這樣簡(jiǎn)單的軸數(shù)上相加的可以變成六軸傳感器或者九軸傳感器。
六軸傳感器:通常指的是三軸加速度計(jì)+三軸陀螺儀,三軸加速度計(jì)是檢測(cè)三個(gè)方向的加速度的,三軸陀螺儀是檢測(cè)旋轉(zhuǎn)角速度,因此可以用在平衡車(chē)、體感游戲機(jī)以及飛行器上。
九軸傳感器:就是三軸加速度計(jì)+三軸陀螺儀+三軸磁力計(jì)的組合,在飛行器上是廣泛應(yīng)用的。另外,在九軸傳感器基礎(chǔ)上再加入氣壓傳感器,從而能獲取海拔高度的數(shù)據(jù),人們通常稱(chēng)之為十軸傳感器。
通常使用的MPU6050模塊如下所示:
那么MPU6050所對(duì)應(yīng)的坐標(biāo)系和角速度方向如下所示:
在上圖中可以看到,向右為X軸正方向,向前為Y軸正方向,垂直模塊向上為Z軸正方向。旋轉(zhuǎn)角的方向按右手法則定義,即右手大拇指指向軸向,四指彎曲的方向即為繞該軸旋轉(zhuǎn)的方向。
為了稱(chēng)呼方便,給這三個(gè)旋轉(zhuǎn)角又起了三個(gè)不同的名字:
橫滾角(Roll):即為繞X軸旋轉(zhuǎn)方向的角度;
俯仰角(Pitch):即為繞Y軸旋轉(zhuǎn)方向的角度;
偏航角(Yaw):即為繞Z軸旋轉(zhuǎn)方向的角度;
這三者合稱(chēng)為姿態(tài)角或歐拉角(Euler angles)。通過(guò)一架飛機(jī)的姿態(tài)來(lái)理解這三個(gè)角度,應(yīng)該更容易一些,如下所示:
MPU6050作為首款6軸的姿態(tài)傳感器,擁有以下一些特性:
1.以數(shù)字形式輸出6軸或9軸(需外接磁力傳感器——通過(guò)XCL、XDA進(jìn)行通信)的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion)、歐拉角格式(Euler Angle forma)的融合演算數(shù)據(jù)(需DMP支持)。
2.具有測(cè)量范圍為±250、±500、±1000 與±2000°/sec的3軸角速度感測(cè)器(陀螺儀)。
3.集成可程序控制,測(cè)量范圍為±2g、±4g、±8g和±16g的3軸加速度傳感器。
4.自帶數(shù)字運(yùn)動(dòng)處理(DMP:Digital Motion Processing)引擎,可減少M(fèi)CU進(jìn)行復(fù)雜的融合演算、傳感器同步化、姿勢(shì)感應(yīng)等的負(fù)荷。
5.自帶一個(gè)數(shù)字溫度傳感器。
6.可程序控制的中斷(interrupt)(INT接口的功能),支持姿勢(shì)識(shí)別功能。
7.自帶1024字節(jié)FIFO,有助于降低系統(tǒng)功耗
8.高達(dá)400KHz的IIC通信接口
MPU6050模塊引腳的功能如下表所示:
引腳 |
功能 |
VCC、GND |
電源供電,直流3.3V~5V |
SCL、SDA |
I2C通信引腳(模塊已經(jīng)內(nèi)置兩個(gè)4.7K上拉電阻,因此接線(xiàn)時(shí)可以直接把SCL和SDA接在GPIO口上) |
XCL、XDA |
主機(jī)I2C通信引腳(為了擴(kuò)展芯片功能,通常用于外接磁力計(jì)或者氣壓計(jì)) |
AD0 |
從機(jī)地址最低位(接0則7位從機(jī)地址為1101000;接1則7位從機(jī)地址為1101001) |
INT |
中斷輸出引腳(可以配置芯片內(nèi)部事件以觸發(fā)中斷引腳的輸出) |
接下來(lái)就來(lái)看一個(gè)簡(jiǎn)單的例子,通過(guò)一個(gè)程序來(lái)獲得MPU6050的測(cè)量數(shù)據(jù)。首先把MPU6050與ESP32擴(kuò)展板相連接,連接的方法如下:
MPU6050 |
ESP32擴(kuò)展板 |
VCC |
+5V |
GND |
GND |
SCL |
P22 |
SDA |
P21 |
接下來(lái)是下載一個(gè)支持MPU6050的庫(kù),在A(yíng)rduino IDE中,有很多關(guān)于MPU6050的庫(kù),我所選擇的是MPU6050_tockn庫(kù),如下圖所示:
使用MPU6050_tockn庫(kù)讀取MPU6050模塊的信息需要以下幾步:
- 引入頭文件MPU6050_tockn.h
- 創(chuàng)建MPU6050對(duì)象
- 調(diào)用begin()方法進(jìn)行初始化
- 調(diào)用calcGyroOffsets()方法進(jìn)行自檢
- 調(diào)用update()方法更新數(shù)據(jù)
- 調(diào)用各種方法得到各種需要的數(shù)據(jù)了。
具體代碼如下所示:
#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); }文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-861016.html void?loop()?{ ? mpu6050.update(); ? if(millis()?- timer > 1000){ ? ? ? ? Serial.println("======================================================="); ? ? Serial.print("temp : ");Serial.println(mpu6050.getTemp()); ? ? Serial.print("accX : ");Serial.print(mpu6050.getAccX()); ? ? Serial.print("\taccY : ");Serial.print(mpu6050.getAccY()); ? ? Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ()); ? ? ? Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX()); ? ? Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY()); ? ? Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ()); ? ? ? Serial.println("=======================================================\n"); ? ? timer = millis(); ? ? ? } } |
在這個(gè)程序中,讀取了原始的加速度和角速度數(shù)據(jù)。至于更多的數(shù)據(jù)以及更多的應(yīng)用,未來(lái)將會(huì)有一個(gè)關(guān)于平衡車(chē)的主題,在那里會(huì)進(jìn)行更詳細(xì)的介紹。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861016.html
到了這里,關(guān)于一起玩兒物聯(lián)網(wǎng)人工智能小車(chē)(ESP32)——71 姿態(tài)傳感器MPU6050的使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!