三天让车立起来!STM32平衡车入门PID —— 第三天(PID调参)

这篇具有很好参考价值的文章主要介绍了三天让车立起来!STM32平衡车入门PID —— 第三天(PID调参)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:本文章适用于STM32初学者,想完成一个好玩且有深度的项目但不知道从何下手的同学。
PID调参是平衡车的精髓所在,参数整定的好坏直接影响到平衡车的平衡效果。有的车平衡时来回晃而参数选的好的车就能稳稳地平衡在原地。可见PID调参在PID中是重中之重。我们一定要会调并且有针对性的去调。通过平衡车的例子举一反三,相信我们之后在遇到PID调参时能够从容不迫,非常迅速的找到最合适的值!!
对于一个控制系统,我们期望的响应结果是稳(系统稳定不震荡不发散)、快(系统响应快速)、准(系统静态误差小)。对PID控制器的调节结果评价也是如此。

PID系数的作用

比例系数Kp:

三个参数中的绝对主力,不可或缺。Kp增大可以加快系统响应,减小静差,但系统超调量会加大,稳定性变差。比例控制是一种立即控制,只要有偏差,就立即输出控制量。大部分系统只需要P控制即可实现基本的稳快准需求。

积分系数Ki:

三个参数中的一般主力,用于消除静差、Ki减小可以降低超调量,使系统的稳定性增强。积分控制是一种修复控制,只要有偏差,就会逐渐去往消除偏差的方向去控制。

微分系数Kd:

三个参数中的预备人员,一般不用,在反馈量噪声比较大时可能会使系统震荡。Kd增大可以加快系统响应,减小超调量,适用于迟滞系统或无阻尼系统。微分控制是一种提前控制,以偏差的变化率为基准进行控制。

基本调试方法:先比例(从中间到两边)、后积分(从0到大)、再微分(从0到大)。

所有需整定参数罗列

1.直立环(未用到I项)
Vertical_Kp——直立环P项
Vertical_Kd——直立环D项

2.速度环(未用到D项)
Velocity_Kp——速度环P项
Velocity_Ki——速度环I项

3.转向环
Turn_Kp——转向环P项
Turn_Kd——转向环D项

整定顺序:在平衡小车工程中我们先进行直立环的参数调节在进行速度环最后再加上转向环。

在PID参数整定之前我们首先要找平衡车的机械中值,所谓机械中值就是不在任何外力的干扰下,小车能够保持平衡时间最长的位置。

机械中值寻找步骤:
1.在OLED显示屏上显示对应的角度或者通过串口实时反馈角度。
2.观察角度,一只手把平衡从一个方向往另一个方向托,在其快速倒下的瞬间我们记住当前的角度值。另一个方向同理,我们将两个角度值相加除以2得到的中间值作为机械中值。(这个值往往不是0度可能是-1°、-2°、-3°或1°、2°、3°这是由小车的硬件所决定的)

直立环PID参数整定

直立环分析:直立环顾名思义就是让车别倒下,始终稳定在直立的状态,只要角度一倾斜,立马PID就要起作用通过控制电机转速来达到角度始终在机械中值位置。所以就要求小车的反应速度要快(Kp),并且要具有预测性,让其能够达到提前控制的目的(Kd)。综上分析,我们需要P项和D项而不需要I项。

直立环PD控制器:KpEk+KdEk_D

调参顺序:1️⃣Kp2️⃣Ki
1.判断参数(Kp,Kd)极性
因为我们PWM波的满占空比对应的ARR值为7200,所以我们预设一个Kp=200;这个预设值怎么来的呢,我们可以思考一下,我们将车慢慢倾斜,倾斜的角度越大,我们需要调节的量也就越大,也就是车轮转的越快。满占空比是7200,比如我们与机械中值相差10°,那我们P项算出来的占空比就是10*200=2000他是和7200在同一个数量级的所以可行。若预设值选为20或者2000,那我们的值要么根本达不到,要么可能极小的误差就会引起很大的反应。因此我们选择KP=200;
我们知道要想使小车保持平衡,那我们就要车往哪边倒,车轮就要往哪边转。所以当我们KP=200时我们观察小车的车轮转向,若和倾斜方向相同说明极性相同否则极性不同那我们就需要KP=-200;并且我们在倾斜角度越大时,车轮转的越快。若具有这个效果说明我们的PID程序没有问题可以进行下一步。

2.调节Kp
我们逐步增大Kp,我们可以步进30慢慢的往上加或往下减,并且我们要时刻观察小车的情况。我们通过对公式的分析,若P很大那么小车会大幅度低频振荡,若P还不够小车会一直向一个方向跑直到倒下。所以我们就慢慢地加减这个值,当小车达到低频振荡时说明Kp已经足够大了这个值我们就确定了。(Kp调节过程中小车会慢慢的有平衡的趋势)

3.调节Kd
KD的作用是消除振荡,所以我们D项要从0慢慢往上加,同时Kd的极性与Kp相同。我们步进0.5,当我们选取Kd=0.5时我们可以发现低频振荡已经消失。我们在往上加,当小车有良好的跟随性时(当我们手拿着小车在平面上快速移动,小车能够很良好的跟随并且平衡),当前的KD就可以确定了。如果直立环参数调的好,小车在没有人为干扰下能够静止在原地,平衡很长时间。
根据工程的经验,我们要将此时所定下来的Kp,Ki都乘0.6.

速度环PID参数整定

速度环PI:KpEk+KiEk_S

1.判断参数(Kp,Ki)极性
因为我们使用的是串级PID,速度环的输出是直立环的输入,我们直立环的KP已经是几百了所以我们速度环的PID参数会很小。所以我们预设KP=0.1根据工程的经验我们的速度环Kp=Ki*200所以我们预设的KP=0.1那么Ki=0.0005。判断极性有两种方法:
1️⃣试。我们在直立环数值保持不变的情况下,要么取正要么取负。若极性错误的话,小车不会像单纯直立环控制那样,会快速倒下。如果小车的平衡效果并且用手轻轻取碰小车,小车不会倒下说明极性正确。
2️⃣把直立环的参数注释掉或者都设为0。并且将最后PWM赋值的数值直接改为速度环的输出,也就是暂时取消串级PID,以及屏蔽掉直立环。单纯让速度环算出来的值加载到电机上,若极性正确向一端倾斜,小车的车轮会向同方向轻微转动一下。

2.调节Kp,ki
kp=200*Ki
在直立环参数整定完成之后,我们从0开始往上加,KP步进为0.1对应的KI步进就为0.005.我们一直往上试,直到小车有轻微高频抖动像抽搐一样,我们的值就可以了。注意:小车的高频抖动可能会损坏电机以及驱动等,所以我们在小车高频抖动时要立即关闭小车。避免损坏。
这样通过直立环,速度环的共同作用我们的小车也能良好的保持平衡并且拥有抗干扰能力。用外力干扰他他也不会倒下,迅速的回归平衡状态。到此小车的基本功能也就实现了。如果小车虽然能平衡但效果不是那么好,我们可以细调,步进值小一点,要有耐心。
我们也可以通过一些波形显示的上位机去观看图形的情况,这样更有利于我们去调参!

转向环PID参数整定

PWM_out=Turn_Kdgyro_Z + Turn_KpRC;

在转向环中,我们其实只用整定一个Kd。
我们不加转向环时,小车在平衡中会慢慢的转向。而转向环的作用就是对他的转向进行一个约束。这里是对Z轴的角速度进行约束。我们小车向左转那我们就要有一个反方向的力去抑制转向。这里我们通过差速法。将直立环,速度环运算出来的PWM值,一个车轮+转向环输出值。而另一个车轮-输出值。形成差速。
1.判断参数(Kd)极性
KD预设为0.5,若我们用手拿着小车旋转,有一个抵抗的力说明极性正确。若帮助你旋转,助力那么极性错误,我们就需要将值改为-0.5.

2.调节Kd
我们将速度环的入口参数Target_Speed赋值例如10。小车就会在保持平衡的同时
向前或向后移动,我们观察他沿直线行驶的偏移情况,若偏移较大那么kd偏小,若近似位置,在50cm内没有较大偏移那么当前的值就合适。

3.调节Kp
这个kp我们通常是蓝牙控制它的值已达到转向的目的。当转向时KP=20,kd=0去掉转向约束。当不转向时我们kp=0,kd的值变为之前整定的值加上转向约束。这样我们的小车就会更加稳定的平衡在原地。

到此我们的PID调参就已经全部完毕,我们可以根据这些加一些更好玩的功能例如平衡车循迹其实就是对期望速度,转向时的PID值的操作,还有避障,跟随等都是对PID的某些参数做改变从而让小车做出相应的动作。
到此平衡小车系列就全部结束了,如果有问题的话可以再评论区讨论!谢谢!文章来源地址https://www.toymoban.com/news/detail-416839.html

到了这里,关于三天让车立起来!STM32平衡车入门PID —— 第三天(PID调参)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32平衡车

    首先附上本项目的GitHub仓库 本项目使用 STM32F103C8T6 作为主控, Keil5 开发, Mahony 算法进行姿态解算的平衡车。项目中给出了 MPU6050 、 ICM20602 、 ICM42605 三种主流IMU的驱动。目前仅实现了直立平衡,在设计设加入了BlueTooth模块,手机遥控部分还在开发中(新建文件夹) (°ー°〃

    2023年04月08日
    浏览(35)
  • 基于stm32的平衡小车

    目录 前言 一、电机驱动部分 1、TB6612FNG电机驱动模块接线方式: 2、代码使用定时器2的4路输出pwm 3、gpio引脚初始化,以及前进,后退引脚设置 二、MPU6050陀螺仪部分 三、编码器捕获部分 四、pid部分 1、直立环KD 2、速度环KI 3、转向环(PD) 五、蓝牙通信部分 总结 经过几天对

    2024年02月09日
    浏览(41)
  • STM32使用PID调速

    PID算法是一种闭环控制系统中常用的算法,它结合了比例(P)、积分(I)和微分(D)三个环节,以实现对系统的控制。它的目的是使 控制系统的输出值尽可能接近预期的目标值。 在PID算法中,控制器通过不断地测量实际输出值和目标值之间的误差,并使用比例、积分和微

    2024年02月11日
    浏览(33)
  • STM32——灰度PID的使用

    世界正处在科技革命和产业革命的交汇点上,科学技术在广泛交叉和深度融合中不断创新,以信息、生命、纳米、材料等科技为基础的系统集成创新,以前所未有的力量驱动着经济社会发展。而且,随着信息化、工业化不断融合,以机器人科技为代表的智能产业蓬勃兴起,成

    2024年02月16日
    浏览(33)
  • STM32两轮平衡小车原理详解(开源)

    关于STM32两轮平衡车的设计,我想在读者阅读本文之前应该已经有所了解,所以本文的重点是代码的分享和分析。至于具体的原理,我觉得读者不必阅读长篇大论的文章,只需按照本文分享的代码自己亲手制作一辆平衡车,其原理并不言而喻了。 源完整代码工程在文章末尾百

    2024年02月05日
    浏览(54)
  • 基于STM32-F401的平衡小车

    目录 一、控制系统设计 1.1机械结构设计 1.2传感系统设计 1.3执行器设计 1.4控制算法设计 二、控制系统的制作与调试 2.1机械结构的制作与调试 2.2电路系统的制作与调试 2.3控制程序的编写与调试 三、控制系统的测试与分析 3.1测试方法 3.2测试数据与现象 3.3结果分析 一个系统

    2024年02月06日
    浏览(50)
  • STM32 蓝牙平衡小车(一)硬件原理图

    第一篇文章首先介绍平衡小车的硬件组成,对硬件原理图进行详解。   1. 主控板:主控芯片(STM32F103C8T6)+电机驱动芯片(TB6612FNG)。 2. 小车框架:平衡车底盘、带编码器的电机、轮子 3. 电池:狮子航模电池2200mAh11.1V35C,T母头 4. DC-DC降压模块:MP1584EN,3A可调降压稳压电源模

    2024年02月14日
    浏览(41)
  • STM32无线透传、PID调试工具

    一、无线透传概述与应用 无线模块 (RF wireless module) ,是数字数传电台 (Digital radio)的模块化产品,是指借助DSP 技术和无线电技术实现的高性能专业数据传输电台模块。 无线模块延伸到很多的系统中,工业控制的开关量io设备,485无线传输设备dw-m1,模拟量采集和控制设备。从

    2024年04月11日
    浏览(43)
  • STM32 FOC电机PID学习笔记

    在系统上存在外部干扰的情况下反馈是最好的选择否则使用前馈网络。为扭矩、通量和速度实施的调节器实际上是比例(P Proportional )、积分(I Integral)、微分 (D Derivative ) 调节器。 STM32中实际提供了3种,但是实际上我们常用的电机反馈调节使用的是PI反馈控制就够了。 PID的

    2024年02月06日
    浏览(37)
  • 基于STM32的平衡小车设计过程分享(1)

    一、简介 接触STM32开发一段时间了,想用STM32做一个有意思的项目,经历了无数的调参调参再调参,终于让它站稳了,接一下就一步步的跟大家介绍一下,项目的整体实现过程— 二、项目介绍     STM32平衡小车是一种基于STM32芯片的智能小车,它可以通过自动控制来保持平衡

    2024年02月05日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包