使用 Arduino 平衡四轴飞行器

Balancing quadcopter using Arduino

我正在做一个关于具有自主控制的自平衡四轴飞行器的项目。我正在使用 Arduino Mega 2560 和 MPU6050。我在没有借助DMP的情况下从MPU6050获得了滚动角和俯仰角,并应用了复杂的滤波器来忽略由于振动引起的噪声。

在 Arduino 中断的帮助下,还配置并能够 运行 带 Flysky 发射器和接收器的 BLDC 电机。现在为了平衡,我只关注一个轴(即滚动)。我还制作了一个平衡架,用于通过电机自由移动滚动轴。

对于控制部分,我正在实现PID算法。我尝试只使用 kp 值,这样我可以以某种方式平衡,然后继续使用 ki 和 kd 术语。但不幸的是,对于 Kp 本身,四轴飞行器正在经历剧烈的振荡并且根本没有稳定下来。

我的一些查询是:

代码可以从URLhttps://github.com/antonkewin/quadcopter/blob/master/quadpid.ino

读取

由于没有提供,我假设:

  • 循环时间至少为 4 毫秒。 (越少越好)
  • 传感器噪音已降低到可接受的水平。
  • MPU-6050 需要组合陀螺仪+加速度数据以获得以度为单位的角度。

如果不注意以上几点,它会自己不平衡

最初,您可以在不调整 kI 的情况下逃脱。因此,让我们关注 kP 和 kD:

  • 继续增加Kp,直到它开始快速振荡。保持 Kp 值的一半。
  • 设置 kP 后,开始试验 kD 值,因为它会尝试抑制 kP 的超调。
  • Fiddle围绕这两个值,将其调至完美。

请注意,您的陀螺仪数据越准确,您可以将 kP 设置得越高。