Arduino ESP32自平衡小车制作实现(不需编码器)

1_mpu6050陀螺仪角度方向和静态平衡角度测试

/*说明:
  1【陀螺仪补偿值的计算】
  试时提前用calcGyroOffsets(true)函数计算出,补偿值。
  知道mpu6050的补偿值后用setGyroOffsets()直接设置补偿值。
  避免每次开机都要计算补偿值(注:检测大概需要3-5秒时间)
  2【静态平衡角度获取】
  普通做法是将小车两轮悬空,两轮间底盘放置在水平置物架上(如包裹小纸盒),读取此时的角度。可以大概作为静态平衡角度。
  但因安装时各电器器件和电池安装不会绝对居中,所以下车的中心不一定在水平上。
  最好通过放置小车轮子在桌面,用手前后调整找到保持平衡的静态角度。
*/
// 20220902测试,静态角度为-1.14度。陀螺仪补偿值测定后为setGyroOffsets(8.24, 1.43, -0.34);

#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire); //实例化mpu对象

void setup()
{
   
  Serial.begin(9600);
  Wire.begin(13, 15);
  mpu6050.begin();
  //  mpu6050.calcGyroOffsets(true);
  // mpu6050.setGyroOffsets(-0.02,-0.02, -0.02);
}

void loop()
{
   
  mpu6050.update();//陀螺仪刷新
    float AngleX = mpu6050.getAngleX();
    Serial.println(AngleX);
  //  float AngleY = mpu6050.getAngleY();
  //  Serial.println(AngleY);


//检测Z轴偏转时的加速度数值大小值,作为转向环PWM计算参考。正常直行时在-10-10之间波动。
//顺时针为负值,逆时针为正值
//  float GyroZ = mpu6050.getGyroZ();
//  Serial.println(GyroZ);
}

2_马达驱动方向和死区大小测试


/*
 * ==程序编写2==
 * 【马达驱动方向和死区大小测试】 
 * 
 * 测试结果 6v电压供给下。
 * pwm+为前进,pwm+-为后退
 * 左马达IN1 IN2,OUT1 OUT2 , pwm   36起转。
 * 右马达IN3 IN4,OUT3 OUT4, PWM    39起转。
 * 
 */

#define IN1 26
#define IN2 27
#define IN3 32
#define IN4 33
int pwm = 0;

void motor(int left_EN, int right_EN)
{
   
  if (left_EN == 0)
  {
   
    analogWrite(IN1, 0);
    analogWrite(IN2, 0);
  }
  if (left_EN < 0)
  {
   
    if (left_EN < -255)
      left_EN = -255;
    analogWrite(IN1, 0);
    analogWrite(IN2, 0 - left_EN);
  }
  if (left_EN > 0)
  {
   
    if (left_EN > 255)
      left_EN = 255;
    analogWrite(IN1, left_EN);
    analogWrite(IN2, 0);
  }
  if (right_EN == 0)
  {
   
    analogWrite(IN3, 0);
    analogWrite(IN4, 0);
  }
  if (right_EN < 0)
  {
   
    if (right_EN < -255)
      right_EN = -255;
    analogWrite(IN3, 0);
    analogWrite(IN4, 0 - right_EN);
  }
  if
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值