HAL库版STM32双轮自平衡车(五) ———— 调参

  • Post author:
  • Post category:其他


系列文章目录


HAL库版STM32双轮自平衡车(一) ———代码思路和PID基础精讲


HAL库版STM32双轮自平衡车(二) ——— CubeMX的配置、原理图接线、物料准备


HAL库版STM32双轮自平衡车(三) ———代码精讲


HAL库版STM32双轮自平衡车(四) ———— 原理图以及PCB绘制

HAL库版STM32双轮自平衡车(五) ———— 调参(本篇)



完整工程——> 闲鱼搜店铺   “黄金独角兽的小店”




完整工程代码及学习资料(设置了收费望支持理解)



https://h5.m.goofish.com/item?id=681989715310&ut_sk=1.X2hUgNjQh0QDAMrgZaxtwchr_21407387_1684499716074.copy.detail.681989715310.2209260974794&forceFlush=1&ownerId=9db66f5694ab477fc49456657355a970&un=b92a505ad4316dfe46071105c2583afc&share_crt_v=1&un_site=77&spm=a2159r.13376460.0.0&sp_abtk=common_xianyu_commonInfo&sp_tk=UndhbWRvMlUwNzc%3D&cpp=1&shareurl=true&short_name=h.UEhbs71&bxsign=scd2vrEz8ec8281p2gBEWXb_hK1esb_MFtgLX0U9fHSxWHWEUxw2KDwuHFLf7dA0QUH1VGbvJXD3BKyKhMRbpxqeMktn1Tlm-MUD_wJhhrmkLdpYFWkc1t0KApMVQN8nj5NZvwrV_KDRe53CoD_5Yi2wg&tk=Rwamdo2U077&app=chrome



前言

这部分B站上以及CSDN里面都有很好的调参过程,其实都大同小异。这篇文章的内容是我学习了网上的各种学习资源然后自己进行归纳总结得到的,希望对你有帮助。文末还放了一些参考链接可以参照学习。


首先要知道


直立环是负反馈

,就简单理解为小车往哪倒,直立环就

阻碍

小车往哪倒


速度环是正反馈

,就简单理解为小车失去平衡后,只能通过单方向运动维持平衡,加入速度环就是修正小车的角度,小车一直往前面开时,速度环让小车以

更快速度行驶使得小车后仰

总体的调参过程如下:

  1. 确立机械中值(这里主要针对的是角度的机械 中值,速度的机械中值就设置为0就好了)
  2. 计算确定需要调节参数的大概范围
  3. 直立环 ——Kp极性、Kp大小、Kd极性、Kd大小
  4. 速度环 ——Kp&Ki极性、Kp&Ki大小(根据调参经验线性关系:Ki=(1/200)*Kp,仅调Kp即可)

具体调参过程如下:



计算确定需要调节参数的大概范围


如果小车需要直立,摆幅差不多就要

≤10°

。,如果超过此范围,小车抖动较为厉害

根据直立环的程序:

balance_up=Up_balance_KP*Bias+Up_balance_KD*Gyro; //计算平衡控制的电机PWM  PD控制   Up_balance_KP是P系数,Up_balance_KD是D系数

由于PWM最大是

7200

,角度在

10°

,反推可以得到:


直立环的Kp

可选范围应该在

0~700。

当然这只是个大致的范围,具体多少还需要进一步调试。


直立环的Kd

对应的是角速度,由于角速度都是四位数以上的数值,所以可以从1左右开始试。


速度环Kp&Ki

小车电机满速旋转时,左右两个电机,编码器相加可达160。

假设速度偏差(实际测量值与理想值)达到50%时满转,即速度偏差相加达80时电机满转

velocity=Velocity_KP*Encoder

那么有

7200/80=90

,也就说kp最大为

90

(注意,这里只是在假设偏差为50%的前提下).



判断极性以及调参现象



  • 直立环

1.Kp极性:

极性错误:小车往哪边倒,车轮就往反方向开,会使得小车加速倒下。

极性正确:小车往哪边倒,车轮就往哪边开,以保证小车有直立的趋势。

2.Kp大小:

Kp一直增加,直到出现大幅低频振荡。(即小车平衡时出现抖动)

P过小,响应太慢,不能达到直立。

P过大,会出现大幅度的低频抖动。

3.Kd极性:

极性错误:拿起小车绕电机轴旋转,车轮反向转动,无跟随。

极性正确:拿起小车绕电机轴旋转,车轮同向转动,有跟随。

4.Kd大小:

Kd一直增加,直到出现高频振荡。(即触碰小车出现剧烈抖动)

D可消除P大了之后产生的大幅低频抖动。

D过大,会出现高频抖动。


直立环调试完毕后,对所有确立的参数乘以0.6作为最终参数。


原因:之前得到的参数都是Kp、Kd最大值,根据工程经验平衡小车的理想参数为最大参数乘以0.6求得。


结果:乘0.6后,小车抖动消失,但同时直立效果也变差。待下面加入速度环就能得到更好的性能。




  • 速度环


需要注意的是:


在确定【速度环参数极性】时,需要去掉【直立环运算】;


在调节【速度环参数大小】时,需要引入【直立环运算】。


Kp&Ki:线性关系:Ki=(1/200)*Kp,仅调Kp即可

1. Kp&Ki极性:(直立环注释)

极性错误:手动转动其中一个车轮,另一车轮会以同样速度反向旋转——典型负反馈。

极性正确:手动转动其中一个车轮,两个车轮会同向加速,直至电机最大速度——典型正反馈。

2.Kp&Ki大小:

增加Kp&Ki,直至:小车保持平衡的同时,速度接近于0,且回位效果好。​

P过小,响应慢,出现的现象是加速减速慢,迟钝。

P过大,会出现低频抖动。


学习文章:


平衡小车就该这么调


结语

关于HAL库版平衡小车系列文章的更新也接近尾声了,跟着我的步骤一步步地来相信兄台也可以做出来属于自己的平衡小车,如果在制作过程遇到了什么问题,欢迎评论区或者私信与我探讨交流,大家一起进步。



完整工程——> 小黄鱼搜店铺   “黄金独角兽的小店”


码字不易,希望喜欢的小伙伴别忘了


点赞+收藏+关注


,你们的肯定就是我创作的动力





欢迎大家积极交流,本文未经允许谢绝转载!!!




版权声明:本文为LYH6767原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。