0
点赞
收藏
分享

微信扫一扫

白泽平衡小车导航贴


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的数据传输协议为iic
Serial.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);
}

上传完成之后,我们从串口监视器看,看最后两列就是打印出来的两个倾角数据,这时我们可以手动让小车绕轮子旋转,看哪个倾角跟随着变化,这个倾角就是我们需要测的数据。

白泽平衡小车导航贴_串口_02

遇到的问题 

1.mpu6050失联

白泽平衡小车导航贴_#include_03

 

mpu6050接在灯哥foc3.0的iic接口上   偶尔会莫名其妙mpu6050断连  我要重新插拔一下电源接口才会恢复正常   请问这是什么原因

白泽平衡小车导航贴_#include_04



 

 2.mpu6050平放的时候显示40度倾角

白泽平衡小车导航贴_#include_05

3.电机一转mpu6050倾角变大

 一插电机mpu6050的角度就会变大,电机输出速度也变大。

一拔下电机mpu6050的角度就恢复正常,然后串口突然中断不输出了。

白泽平衡小车导航贴_#include_06

举报

相关推荐

0 条评论