【F103C8T6+HAL】一阶倒立摆
配置:F103C8T6+CUBEMX+HAL库
倒立摆作为经典的控制问题
可以拆解成两项
起摆跟立摆
起摆的逻辑并不难分析,只需要保证杆在左侧时候滑块右拉,右侧左拉即可完成起摆
难点在于立摆
立摆涉及到摆角度与位置的控制
角度环保持摆直立,位置环保证摆不乱走
角度环与位置环
如果只闭一个角度环,可以立摆,但是不能纠正摆的位置,立摆之后会朝一个方向猛冲,造成电机追不上摆的假象。如果连立摆都做不到可能是电机转速太慢,
这时候就需要考虑闭第二个环。两个环控制涉及到串并级,以及控制周期的问题。
我们最早是做的并级,角度环位置环共同控制摆,但是效果并不理想。角度环调大了位置环没作用,位置环调大了不能立摆。
最后换了串级,角度环作为内环,用位置环返回的数字去修正角度的输入值。效果很显著,摆开始震荡,解决了摆方向的问题。
但是这时候摆的速度还是递增的,摆的震荡并不收敛。
解决方法是,在摆第一次震荡之前,速度较低的时候,重置位置环的位置,保证摆在震荡时候始终是减速的,摆的速度会越来越慢,达成收敛
控制周期
当时摆控制周期为0.1ms,角度环中断周期是0.5ms 位置环为5ms,后来才发现这应该是个错误。
首先定时器能不能达到0.1ms的精度,这是有待商榷的。
其次摆的控制周期小于角度环的输出周期,这是非常不合理的,理论上应该是控制周期小于角度环的输出周期。但是最后没什么影响,以后要注意这一点。
杂七杂八
电位器采集采用了平滑滤波算法,相较于平均值滤波,角度的变化更为平滑,在一定程度上可以抑制周期性干扰
中间还涉及数据采集误差的问题,比如电位器临界值突变等。
能在硬件上解决的问题就不要代码解决。
感觉分析问题,解决问题的能力有待提高
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 素颜的博客~!
评论