我正在做一个关于具有自主控制的自平衡四轴飞行器的项目。我正在使用 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读取