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

news/2024/11/15 1:44:46/

说明:本文章适用于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的某些参数做改变从而让小车做出相应的动作。
到此平衡小车系列就全部结束了,如果有问题的话可以再评论区讨论!谢谢!


http://www.ppmy.cn/news/345286.html

相关文章

JavaScript DOM

1、DOM介绍 DOM(Document Object Model):文档对象模型。 将 HTML 文档的各个组成部分,封装为对象。借助这些对象,可以对 HTML 文档进行增删改查的动态操作。 1.1、Element元素的获取操作 具体方法 方法名说明getElementById (id 属性值)根…

新手如何组装一台电脑

新手如何组装一台电脑 首先,我们要先了解一台电脑的基本构成由哪些? CPU显卡主板散热器磁盘内存电源机箱显示器 通常我们需要根据自己对电脑的定位,根据需求和资金确定CPU和显卡 CPU CPU主要有AMD和Intel。 Intel芯片单核能力足够强&…

BUUCTF 大帝的密码武器 1

题目描述:(下载题目,然后修改后缀名为.zip打开:) 公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以…

Datax+DataX-Web分布式搭建

DataxDataX-Web分布式搭建 DataX简介 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX本身作为数据同步框架,将不同数据源的同步…

服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】

完整源码资料 地址直达:http://t.csdn.cn/RWsGw 前言 这是大二时候写的第一个Java项目,框架基本上都没有用到、而且用到的技术很老很老。只简单使用了一个Mybatis简化数据库的操作。前端框架用的还是Layui,贼难用。闲的无聊,对这…

室内全彩显示屏型号与价格范围一览:如何选择适合需求的显示屏解决方案

室内全彩显示屏作为一种重要的室内广告和信息展示媒介,为各种场合提供丰富多彩的视觉体验。然而,在众多型号中选择合适的室内全彩显示屏并了解其价格范围并不容易。本文将介绍室内全彩显示屏的几种常见型号,并提供相应的价格范围,…

全倒装COB小间距LED全彩显示屏必将推动下一代显示技术的发展。

近年来,Mini/Micro LED新型显示技术受到业界极大关注,随着物质水平的提高及互联网的快速发展,人类对视觉体验需求成为LED芯片尺寸和像素间距不断缩小的驱动力,受5G、超高清视频产业、新基建等加速发展,推进了超大尺寸显…

LED全彩显示屏三种基色

LED全彩显示屏通常由红色(Red)、绿色(Green)和蓝色(Blue)三种基色的LED灯珠组成。这种组合被称为RGB三基色系统。其实LED显示屏分为单色、双色和全彩类型。 红色(Red):红…