白泽平衡小车导航贴
esp32直流電機(jī)版平衡小車
esp32無刷電機(jī)版平衡小車
1.發(fā)現(xiàn)IIC設(shè)備
為什么我每次都要運(yùn)行這個(gè)程序呢?首先當(dāng)我們接好線了以后,就是確保這些傳感器接線正常并且是好的。如果你直接跑mpu6050采集數(shù)據(jù)的例程,那么一旦跑不通,就不知道是程序問題還是硬件問題或者是接線沒接好呢?所以我們一步一步來,哪里有問題就非常清晰了。
2.讀取mpu6050原始傾角數(shù)據(jù)
下面這個(gè)程序
#include "Wire.h" //I2C通訊庫 #include "I2Cdev.h" // #include "MPU6050.h" //mpu6050庫MPU6050 mympu; //定義mympu對象float pi=3.1415926; //Π的值,用于單位轉(zhuǎn)換 float AcceRatio=16384.0; //加速度計(jì)比例系數(shù) float GyroRatio=131.0; //陀螺儀比例系數(shù) //定義3個(gè)變量,用于存儲(chǔ)傾角數(shù)據(jù) float angle_x=0.0,angle_y=0.0,angle_z=0.0; int16_t ax=0,ay=0,az=0,gx=0,gy=0,gz=0; //加速度計(jì)陀螺儀原始數(shù)據(jù) float accx=0.0,accy=0.0,accz=0.0;void setup(){ Wire.begin(19, 18, 400000);//開啟iic通訊,mpu6050的數(shù)據(jù)傳輸協(xié)議為iicSerial.begin(115200);//打開串口mympu.initialize(); //初始化mpu6050 }void loop() {//通過調(diào)用該函數(shù),一次性從mpu6050獲取6軸數(shù)據(jù)mympu.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);accx=ax/AcceRatio; //x軸加速度accy=ay/AcceRatio; //y軸加速度accz=az/AcceRatio; //z軸加速度angle_x=(atan(accx/accz)*180/pi); //計(jì)算身體前后的傾角,繞y軸的轉(zhuǎn)角angle_y=(atan(accy/accz)*180/pi); //計(jì)算身體左右的傾角,繞x軸的轉(zhuǎn)角Serial.print(az);Serial.print(" ");//將z軸加速度原始數(shù)據(jù)輸出Serial.print(accx);Serial.print(" ");//將3軸加速度輸出(單位:g)Serial.print(accy);Serial.print(" ");//將兩個(gè)轉(zhuǎn)角從串口輸出Serial.print(accz);Serial.print(" ");//將兩個(gè)轉(zhuǎn)角從串口輸出Serial.print(angle_x);Serial.print(" ");//將兩個(gè)轉(zhuǎn)角從串口輸出Serial.print(angle_y);Serial.println(" ");delay(100); }上傳完成之后,我們從串口監(jiān)視器看,看最后兩列就是打印出來的兩個(gè)傾角數(shù)據(jù),這時(shí)我們可以手動(dòng)讓小車?yán)@輪子旋轉(zhuǎn),看哪個(gè)傾角跟隨著變化,這個(gè)傾角就是我們需要測的數(shù)據(jù)。
遇到的問題?
1.mpu6050失聯(lián)
?
mpu6050接在燈哥foc3.0的iic接口上???偶爾會(huì)莫名其妙mpu6050斷連??我要重新插拔一下電源接口才會(huì)恢復(fù)正常???請問這是什么原因
?
?2.mpu6050平放的時(shí)候顯示40度傾角
3.電機(jī)一轉(zhuǎn)mpu6050傾角變大
?一插電機(jī)mpu6050的角度就會(huì)變大,電機(jī)輸出速度也變大。
一拔下電機(jī)mpu6050的角度就恢復(fù)正常,然后串口突然中斷不輸出了。
總結(jié)
- 上一篇: MPU3050+加速度计数据处理
- 下一篇: android 陀螺仪滤波_Arduin