0

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

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

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

我的一些疑问是:

  • 一个 PID 回路是否足够,或者我们必须添加另一个?
  • 除了反复试验,我可以实施什么类型的调整方法来找到 kp、ki、kd?
  • 我将我的 ESC 编程为 1000 到 2000 微秒。我的 PID 输入角度将在 +/- 180 范围内。我是否可以直接将 PID 输出限制设置为范围 -1000 到 1000 或 -180 到 180 或任何其他值?

代码可以从 URL https://github.com/antonkewin/quadcopter/blob/master/quadpid.ino读取

4

1 回答 1

0

由于没有提供,我假设:

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

如果不注意以上几点,它将无法平衡自己。

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

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

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

于 2017-05-26T09:18:57.910 回答