使用arduino平衡quadcopter

我正在做一个有自动控制的自平衡四轴飞行器项目。 我正在使用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输出限制或其他任何值
  • 代码可以从URL读取https://github.com/antonkewin/quadcopter/blob/master/quadpid.ino


    由于没有提供,我假设:

  • 循环时间至少为4ms。 (越少越好)
  • 传感器噪音已降至可接受的水平。
  • MPU-6050需要将陀螺仪+加速度数据进行组合才能获得角度度数。
  • 如果上述问题没有得到解决,它将不会自我平衡。

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

  • 继续增加Kp直到开始快速振荡。 保持Kp值的一半。
  • 用kP设置,开始尝试kD值,因为它会试图抑制kP的超调。
  • 摆弄这两个值,调整它的完美。
  • 请注意,您的陀螺仪数据越精确,您可以将您的kP设置得越高。

    链接地址: http://www.djcxy.com/p/78609.html

    上一篇: Balancing quadcopter using arduino

    下一篇: Why I got this error?