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