使用arduino平衡四轴飞行器

时间:2017-03-09 16:21:24

标签: arduino pid electronics balance mpu6050

我正在做一个自平衡四轴飞行器与自主控制的项目。我正在使用Arduino Mega 2560和MPU6050。我在没有DMP帮助的情况下从MPU6050获得了滚动角和俯仰角,并应用了复杂的滤波器来省略振动引起的噪声。还配置并能够在arduino中断的帮助下使用Flysky变送器和接收器运行BLDC电机。现在为了平衡,我只关注一个轴(即滚动)。我还构建了一个平衡支架,用于通过电机自由移动滚动轴。

对于控制部分,我正在实施PID算法。我尝试只使用kp值,以便我可以平衡,然后转到ki和kd术语。但不幸的是,对于Kp本身而言,四轴飞行器正在经历激烈的振荡并且根本没有稳定下来。

我的一些疑问是,

  • 单个PID循环是否足够,或者我们必须添加另一个
  • 我可以实现什么类型的调整方法,以找到除试错之外的kp,ki,kd
  • 我将我的ESC编程为1000到2000微秒。我的PID输入角度将在+/- 180范围内。是否可以直接设置范围-1000到1000或-180到180或任何其他值的pid输出限制

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

中读取

1 个答案:

答案 0 :(得分:0)

由于没有提供,我假设:

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

如果不考虑上述要点,则不会自行平衡。

最初,你可以在没有调整kI的情况下离开。所以让我们关注kP和kD:

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

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