倒立摆stm32F407控制程序

#具体操作
写好倒立摆程序的关键是确定pid算法的程序和参数值。我根据网上查找的资料写了用stm32F407控制倒立摆的pid程序,现在我将程序分享给大家。

我的程序主要是根据位置式离散pid公式pwm=Kpe(k)+Ki∑e(k)+Kd[e(k-1)-e(k-1)]来写,其中e(k)代表本次偏差,e(k-1)代表上一次的偏差,∑e(k)代表e(k)以及之前的偏差的累积和;pwm代表输出给电机的pwm波的占空比,Kp、Ki、Kd是需要调试的参数,P用于提高响应速度、I用于减小静差、D用于抑制震荡。

倒立摆我选择的是平衡小车之家的产品,用电位器判断倾角,用编码器判断转动的位置,所以是两级pid控制。因为参数比较多,我省略了积分项,于是公式就简化为pwm=Kp*e(k)+Kd[e(k-1)-e(k-1)]。这样做减少了调试的工作量,经过实际测试也能很好地让倒立摆保持平衡。
在控制倒立摆时,一般先通过电位器调整倒立摆的倾角。pid程序如下:
倒立摆stm32F407控制程序根据pid公式同样可类推得到编码器的pid控制程序。程序如下:倒立摆stm32F407控制程序
当然,在使用编码器的时候要配置32单片机定时器的编码器模式,配置程序如下:

倒立摆stm32F407控制程序
配置完成后就可以写总的两级pid程序,我是用定时器中断函数来实现的。在写的时候要注意中断内程序的执行时间不能超出定时器中断的循环时长,否则响应会出问题。中断程序如下:
倒立摆stm32F407控制程序

最后是调整pid参数的阶段。我的调试方法是加按键来快速修改参数,这样不需要多次编译程序,节省时间。具体操作是在中断函数中加了通过按键改变参数的程序,并将修改的参数打印在电脑屏幕上,程序如下:
倒立摆stm32F407控制程序
这些操作就是我在写代码时候大致的心路历程了,希望能帮助到大家。