這次要練習的是GY-521的Sensor,其核心的晶片是MPU-6050。
MPU-6050是一個內包含三軸陀螺儀以及三軸加速計結合在一起的數位運動處理器(簡稱DMP),以 I²C 輸出6軸的旋轉矩陣的數位資料。若再包含三軸的電子羅盤可以處理複雜的9軸MotionFusion運算。
1、GY-521規格
核心晶片:MPU-6050模塊(三軸陀螺儀 + 三軸加速度)
供電電源:3-5v(內部低壓差穩壓)
通信方式:標準 I²C通信協議
晶片內置16bit AD轉換器,16位數據輸出
陀螺儀範圍:±250 500 1000 2000 °/s
加速度範圍:±2±4±8±16g
2、I²C函式庫
而MPU-6050的因為是靠 I²C溝通的,所以需要到I2Cdevlib去找相關的函式庫 library.I2Cdevlib 是一個開放原始碼的專案,裡頭提供許多微處理裝置的函式庫供使用。要安裝該函式庫只需要到其 Github 頁面將原始碼下載下來,並將其中Arduino 資料夾內的內容通通放到 Arduino 工作目錄中的 libraries 資料夾中。做法如下:
1. 到 I2Cdevlib 找到MPU6050的 library相關資料,點選Source的連結
2. 連結到GitHub,點選右上角的Code的小方塊
3. 進到下一個頁面之後,右下角有一個Download ZIP,就按下下載。
4. 下載後的檔案,解壓縮,找到其中MPU-6050,丟到Arduino的library資料夾中。
5. 此時重開Arduino IDE,就可以看到Example之下有MPU6050_raw的範例
3、接線
接線的部分一樣就是把SCL與SDA接起來,如此便可以了。
若有要使用MPU-6050 DMP6的範例程式,需另外再接ADO到3.3V去。
(參考 http://blog.kuoe0.tw/posts/2013/12/29/arduino-with-gy-521-mpu6505-imu-sensor)
4、Code
接下來可以在 libraries/MPU6050/Examples/MPU6050_raw 中找到範例程式。裡頭有兩個範例,先用 MPU6050_raw 跑一次看看以取得原始資料。選好硬體規格與串列埠,把範例upload之後就會開始運行了,只要打開串列埠即可看到大量的訊號輸出,記得這種鮑率要改為38400。這時只要隨意地揮動 GY-521 這塊板子,就能發現輸出的訊號會有較明顯的改變。
其中數據顯示的對應關係取決於所選擇的靈敏度,在I2Cdevlib的函式庫裡,加速度靈敏度預設值為+/- 2G,角速度靈敏度預設值為+/- 250 °/s,如果該設備是完全水平和不動的,那麼:
(2) Z軸量測到的加速度應為1G,也就是16384 (在2G的靈敏度的時候)
(3) X / Y / Z軸角速度的陀螺儀應該為 0 (最大到
但在現實中,加速軸將不完全為 0,因為它是很難做到完全水平,並有一定的雜訊與誤差,而陀螺儀也同樣不會準確地讀出0值 。
接下來我們就可以用這個加速規量測空間用的物體勢態,與加速度、角速度了。
---------------------------------------------------------
參考資料:
i2c函式庫網站:http://www.i2cdevlib.com/devices/mpu6050#source
datasheet:http://www.invensense.com/mems/gyro/documents/PS-MPU-6000A.pdf
Bear 實驗室:http://www.takobear.tw/12/post/2014/01/bear-arduinompu6050servo.html
請問如何消除雜訊合誤差?...THX
回覆刪除路人甲
luck_1682000@pchome.com.tw
以現在這塊晶片來說,我們已經不可能去改電路了,
刪除你能做的就只有在程式端數值上做調整。
看要犧牲即時性,做過去時間的平均
還是犧牲精度,取高斯
感謝您詳細的介紹
回覆刪除常常因為國外的網路空間人生地不熟
甚麼都看不懂
別這麼說,資料也都是大家都互相分享學習
刪除真的感謝...以前沒有注意到
刪除要使用MPU-6050 DMP6的範例程式
需另外再接其他腳位
想說怎麼都不會動
補充一下,『MPU6050』『I2Cdev』一定要放在Arduino\libraries的目錄下,否則會出現compile錯誤。
回覆刪除我的情況是將『MPU6050』放在Arduino\libraries\MEMS下而出現錯誤訊息。
感謝補充
刪除請問我已經將『MPU6050』『I2Cdev』都放在Arduino\libraries下
刪除可是執行時依然會跑出
Arduino:1.6.5 (Mac OS X), 板子:"Arduino Uno"
In file included from /Users/apple/Documents/Arduino/libraries/I2Cdev/I2Cdev.h:37:0,
from MPU6050_DMP6.ino:46:
/Users/apple/Documents/Arduino/libraries/MPU6050/em_cmu.h:37:23: fatal error: em_device.h: No such file or directory
#include "em_device.h"
^
compilation terminated.
編譯時發生錯誤
怎麼都出現這個 試了好多次
回覆刪除MPU6050_raw.ino:36:20: error: I2Cdev.h: No such file or directory
把解壓縮得的I2Cdev目錄整個copy到 Arduino/Library目錄下試看看
回覆刪除謝謝分享,我看國外的資料看到頭昏了還是沒搞懂,看你的十分鐘搞定。多謝
回覆刪除作者已經移除這則留言。
回覆刪除我已經把I2CDev 跟MPU6050放到libraries 下面了
回覆刪除可他還是顯示:
fatal error: msp430.h: No such file or directory
#include
compilation terminated.
是不是我少放了什麼阿?
我發現我的I2CDev 裡面有多出兩個msp430 .c 和.h檔
刪除我把他們刪掉之後就可以跑了.. 但是跑出來都是一堆亂碼
不知道發生什麼事..
Baud rate 改 384000,在畫面的右下角
刪除可是我的右下角沒有38400這個選項~ 怎麼會這樣...
回覆刪除所以我剛剛把兩邊傳輸率改成57600 就可以跑了...
回覆刪除不知道為什麼?
看來是兩邊速度都一樣就好!!
刪除是的,看來您解決問題的動作很快。
刪除請問一下 ax ay az gx gy gz 個代表什麼阿?
回覆刪除新手剛接觸不太懂@@
x y z方向的加速度,還有row, yaw, pitch的角加速度
刪除感謝~
刪除不好意思請問一下
回覆刪除那些加速度 角加速度是怎麼計算出來的
因為我想把他用來控制馬達
新手QQ
不好意思,他內部的原理我只知道是用微機電製程做磁力與重力方向的感測,然後微分之後得到加速度,與角加速度。公式可以在大學機動學的課本裡找到。但您要我詳細指出怎麼算出來的,我需要花一點時間複習。
刪除請問一下,他顯示的單位是什麼?
刪除怎麼換算成 公尺/米平方
MPU6050_raw.ino:36:20: error: I2Cdev.h: No such file or directory
回覆刪除不好意思 ,請問一下我試了好幾次一直出現這個問題,請問要如何解決呢
不知是不是lib放錯地方?有在example看到mpu6050嗎?
刪除有耶 我有在example 裡面看到,mpu6050_raw
刪除試了好幾次還是失敗 不知道有解決方法嗎
刪除沒有放到 I2Cdev資料夾,I2Cdev資料夾 和 MPU6050資料夾 都要放入目錄
刪除您好:想請教您,如果我用的板子是UNO R3的話,有辦法直接套用MPU 6050的EXAMLE嗎?
回覆刪除UNO的 SCL SDA在a4、a5所以應該可以用,不過你的腳位要改!
刪除想請問
回覆刪除如果想將針腳從20及21改到其他的針腳,程式該如何修改呢?
不是幾號針腳的問題,而是一定得是SCL & SDA的腳位。不同arduino的版本,SCL與 SDA的腳位還不太一樣。
刪除請問這要怎樣解決
回覆刪除MPU6050_raw.ino:36:20: fatal error: I2Cdev.h: No such file or directory
compilation terminated.
Error compiling.
也……就像訊號寫的,I2Cdev.h: No such file。
刪除可問可否教學一下
回覆刪除我想用Arduino+MPU6050+步進馬達來 做自動轉向大燈
可以給我一件要怎摸寫嘛哈哈我者是參考參考
是否可以解使一下 它可以用在甚麼地方
回覆刪除飛行器 或者需要量測平衡的地方
刪除請問如何更改輸出速率呢??
回覆刪除意思是我想改成每秒100個輸出 請問要如何更改及如何來計算
回覆刪除您好 我有個問題想請教
回覆刪除我使用這塊板子時發現
平行旋轉的部分只能使用陀螺儀計算
無法融合加速計數據
請問作者有甚麼這方面的解決方法嗎
我沒有親自試過,不過您有對旋轉的角度做二次微分嗎?雖然理論上可行,不過sample rate不夠的話,也許做出來的效果很差。您可以試看看。
刪除請問這也可以用Arduino Nano嗎?
回覆刪除當然可以
刪除請問陀螺儀多個 SCL跟SDA不夠怎麼辦?
回覆刪除兩個以上陀螺儀程式需要改哪邊?
感謝大大回答
請問如果只要取樣物體的XYZ軸,程式碼該如何修改
回覆刪除您好,請問要怎麼更改"I2Cdevlib的函式庫裡 加速度和腳加速度靈敏度預設值"。例如把2G改成16G
回覆刪除我也有同樣問題 有人可幫忙嗎
刪除終於找到了
刪除在初始化那附近
加入這個
初始化時就改變了
accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_2000);
accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_4);
後面自己改
一個是250 500 1000 2000
2 4 8 16
請問更改"I2Cdevlib的函式庫裡(MPU6050.cpp裡)加速度和角加速度靈敏度預設值"="將sensor讀取值的速度加快"的意思嗎?
刪除你好,如果要使用uno连接的话,该怎么样接线啊
回覆刪除你好,如果要使用uno连接的话,该怎么样接线啊
回覆刪除VCC <--> 5V
刪除GND <--> GND
SCL <--> A5
SDA <--> A4
ad0不是要接地或著接高電位這樣才有正確的地址? 空接可以嗎?
回覆刪除請問可以透過訊號控制servo的開關嗎,在mpu6050一直執行的狀態下,雖然馬達一直接收到平衡角度的訊息,但是我希望能控制馬達旋轉的開關,在某些時候不希望伺服馬達開啟
回覆刪除不好意思請問一下~
回覆刪除uno接線如下
VCC <--> 3.3V
GND <--> GND
SCL <--> A5
SDA <--> A4
上傳MPU6050_raw的範例程式
為什麼有讀到值但全都是0
QQ
請問一下 為何照著版大的方法我會得到Invalid library found in C:\Users\User\Documents\Arduino\libraries\arduino: Missing 'author' from library
回覆刪除請問一下 跑範例MPU6050_raw都沒問題,但不知為什麼我將旁邊一顆伺服馬達打開,系統就停一下了,是干擾嗎?
回覆刪除你好,若想改成+/- 16G 的話,要怎麼改呢?
回覆刪除你好 請問讀到的數據 要如何作積分 這些數據是存在哪裡??
回覆刪除請問一下我的六軸跑出來為什麼一直都是0
回覆刪除程式怎麼下載
回覆刪除想問個問題,我用arduino 做一台兩輪式機器車,但無法精準的轉向90度還是180度,可以用陀螺儀來做嗎
回覆刪除A
回覆刪除C:\Users\雿喟?Desktop\Arduino\libraries\MPU6050\examples\MPU6050_raw\MPU6050_raw.ino:36:20: fatal error: I2Cdev.h: No such file or directory
compilation terminated.
exit status 1
開發板 Arduino/Genuino Uno 編譯錯誤。
一直舞法編譯 請問我該怎麼辦?
把I2Cdev資料夾中的I2Cdev.cpp與I2Cdev.h放到library的MPU6050資料夾裡試試看,我試完就沒有您所說的問了
刪除作者已經移除這則留言。
回覆刪除想問我上傳授後出現在C:\Users\sky\Documents\Arduino\libraries\i2cdevlib-master: C:\Users\sky\Documents\Arduino\libraries\i2cdevlib-master裡找到無效的程式庫
回覆刪除這是甚麼原因
我其實是想找個零件顯示目前傳感器的姿勢的。有一點攪不明白:如果初始時傳感器傾斜擺放,並傳感器靜止不動,那麼偵測出來的數據應該都是0,因為沒有角速度啊
回覆刪除請問這個程式碼可以套用到M0 pro嗎
回覆刪除請問一下 COM讀到的值是不是LSB值? 然後應該還要單位換算一下才能得到 g 和 deg/s 單位的值?
回覆刪除為甚麼我的監控視窗只跑出這一行就沒了
回覆刪除Initializing I2C devices...
請問使用 arduino uno 時如何接腳?
回覆刪除請問出現的數據為亂碼 是怎麼回事
回覆刪除