【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID

这篇具有很好参考价值的文章主要介绍了【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID

简介:二轮平衡小车的控制分为平衡环(又称为直立环,保持稳定角度)、速度环(用来保持稳定时速度为零)以及转向环(用来无转向命令时调整走直线),下面详细介绍各环PID参数的整定
硬件准备:平衡小车之家的小车底盘,STM32F1,电机驱动模块,MPU6050等
软件准备:简化后的平衡小车代码(关闭了蓝牙功能等),上位机示波器(观察角度)
一、直立环PID
直立环是为了保持平衡小车维持在机械中值,先插入机械中值的确定
根据每个人搭建的平衡小车不同,小车的物理参数(如重心、质量)也会变化,确定机械中值是,先将小车从后往前仰【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID
直到小车到达临界状态恰好向前倾倒,记录此时角度值1(通过OLED或者串口显示出来,这里我用的是串口显示)
同理反向操作一遍(从前往后倾倒)得到临界角度值2,取二者平均值记为中值
由于小车直立环更需要超前调节(D),而不太需要弥补性质的积分调节(I),所以大多直立环都是PD控制,关于P的确定:
首先确定P的极性,也就是P参数在你的控制函数里的正负:清零其他参数,设置P=+1,如果向前倾,车轮前转,则极性正确,反之错误(车轮需要向前倾的方向转动以达到矫正的目的,即平衡)
然后确定P的大小,清零其他PID参数,将P从小到大逐渐增大,当出现小车无大幅晃动的情况(可以比较好的矫正角度偏差),到达第一档,说明你的P已经在一个良好的适合调节的范围,继续增大P,中间可能出现更好的更稳定的现象,但不要停止增大参数(因为你不知道最好的阈值在哪里),最终目标是增大到小车出现大幅低频抖动,此时我的Kp=550【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID
接下来确定Kd,关于直立环D的确定:
也是先确定极性,清空之前设置的Kp及其他PID参数(单一变量),设置Kd=+0.5,Kd极性正确的现象与Kp一致,都是向哪里倾倒就像哪里转动。
接下来确定大小,此时恢复之前设置的Kp=550,从小到大设置Kd,直到出现高频率的震荡(此时有较强的抗干扰性,且小车极容易触发高频震荡,找到该参数时请及时关闭电机以防止电机损坏)可以看出此时的晃动幅度被抑制,但是晃动频率变高【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID
我得到的Kd=2.5,根据工程经验,将得到的Kp、Kd都乘以0.6,得到最终直立环的PD参数330、1.5

二、速度环PID
速度环是PI控制,速度环为了能保证稳定时候速度为0,防止出现小车为了保持固定角度一直前进的情况,更多的需要积分控制,速度环的变量是轮的速度,对其进行积分可以让滞后调节进行反作用,比如小车前行了一段距离,会被积分记住,然后让小车返回该段距离,这里有一个平衡小车的工程经验:Pi=(1/200)*Kp
,所以我们只需确定Kp即可,关于Kp的确定
还是老样子,先确定Kp的极性,此时根据单一变量原则,我们需要注释掉直立环和转向环的代码
//Balance_Pwm =balance(Angle_Balance,Gyro_Balance); Velocity_Pwm=velocity(Encoder_Left,Encoder_Right); //Turn_Pwm =turn(Encoder_Left,Encoder_Right,Gyro_Turn);
然后要想知道速度环Kp的极性,就要知道我们的轮子转向是负反馈还是正反馈,一些文章里说速度环需要的是正反馈,却没有细说原因是什么。原因是:小车的平衡以直立环为主,速度环为辅,当小车有向前的速度是,主导因素当然是因为小车在向前倾,直立环使其产生向前的速度,这个时候如果想恢复到速度为0,就需要添加更大的底盘速度使小车摆正,正因如此,当我们模拟转动小车的轮子时,正确的极性应该使得小车轮子继续沿我们刚才转动的方向旋转直到最大转速(因为你关闭了直立环调节极性时,速度环一直检测不到速度为0的状态,他就会很奇怪,以为自己的速度不够大没有使得小车回正,就一直加速)。
说了这么多,结论就是:转动小车的某一轮胎,小车自动沿着你转动的方向继续转动,则极性正确,否则极性错误

如果你没有出现极性正确或者错误的现象,而是两轮速度逐渐趋于0(滤波的作用),或者速度维持不变,那你要注意,很可能是你的编码器相位接错了导致两轮速度做和等于0

然后我们来确定Kp的大小
目标达到的条件:小车保持平衡的同时,速度接近0,若有轻微跑动可以回到原来的位置
记得之前注释掉了直立环吗,现在我们重新开启直立环,选一个量级(比如1,10,100)调节速度环Kp,我选择10量级,Ki由Kp确定(如上文所述)。调节过程中,
当Kp还没有足够大时,现象是小车已经可以保持角度稳定,但小车无法控制在一个摇摆范围内运动,仍然会直线冲刺,此时继续增大Kp&Ki
直到小车稳定在小幅空间及角度范围内摇摆晃动,效果最好
当然此时如果你继续增大可能会使积分作用大于直立环作用,现象是小车向某一方向冲刺或者震荡,如果你在上一步找到了稳定的Kp和Ki的值之后发现小车平衡能力虽然有,但抗干扰能力不强的话,你可以略增大Ki,同时震荡出现,调节直立环Kd使得震荡消除,也许可以提高小车抗性.
调整结束后,小车成功平衡【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID
当然到此为止,小车往返的路程里可能会不走直线(由于物理机械原因或者原地抖动时摩擦地面转向),这一点可能会按需求来,
,有的人认为仅平衡时也需要转向环的作用,但转向环更主要的作用是可以在之后命令控制时起到稳定作用
三、转向环
要了解转向环的参数极性以及PID设置,就要直到转向环所起的作用。我们希望转向环能在我们下达转向命令时加速(帮助)转向进程,并且有的人希望能在无命令时保持直线位姿,由此分析得到,if语句判断后,普通的维持平衡的转向只需要Kp比例调节即可满足需求(变量为z轴陀螺仪的值,但我觉得也可以尝试一下两轮的编码器差值?)转向时用到的则是PD超前调节。
平衡时的Kp极性:注释其他代码后,拿起小车绕z轴旋转,两轮转向与人为的转向相反,极性正确
平衡时的Kp大小设置:从小到大尝试,过小无明显作用,过大造成车体抖动(也可以在平衡时不设置)文章来源地址https://www.toymoban.com/news/detail-437008.html

到了这里,关于【平衡小车】【串级PID参数整定】【详细版】根据现象手动调整平衡小车的PID的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • PID超详细教程——PID原理+串级PID+C代码+在线仿真调参

    目录 前言 仿真调参环境 案例引入——小球位置控制 抛开案例——更专业地理解PID 由虚到实——代码编写 最后一步——PID参数调整 总结——使用PID的步骤 更进一步——串级PID 很多人应该都听说过PID,它的运算过程简单,并能在大多情况下实现较好的控制效果,因此它是工

    2024年02月02日
    浏览(65)
  • (六)【平衡小车制作】位置式PID、直立环与速度环编程

    本篇文章我将针对 位置式PID算法 、 直立环 、 速度环 等的编程进行详细的讲解,让每位小伙伴能够对这三个概念的编程逻辑有更加清晰的理解。 1.中文公式  直立环输出=Kp1×角度偏差+Kd×角度偏差的微分  // 角度偏差=真实角度-期望角度 2.英文公式  直立环PD控制器:Kp×

    2024年02月03日
    浏览(55)
  • 【MATLAB数据处理实用案例详解(22)】——基于BP神经网络的PID参数整定

    基于BP神经网络的PID控制的系统结构如下图所示: 考虑仿真对象,输入为r(k)=1.0,输入层为4,隐藏层为5,输出层为3,仿真输出满足 a ( k ) = 1.2 ( 1 − 0.8 e x p ( − 0.1 k ) ) , y ( k ) = a ( k ) y − 1 1 + ( y − 1 ) 2 + u − 1 a(k)=1.2(1-0.8exp(-0.1k)),y(k)=a(k) frac{y-1}{1+(y-1)^2}+u-1 a ( k ) = 1.2 ( 1 −

    2024年02月07日
    浏览(60)
  • 位置环速度环串级位置式PID实现全过程解析(详细)

    电机型号:MD36N行星减速电机_AB两相光电编码器霍尔编码器 电机参数: 单片机型号:STM32F429IG,keil 程序最终功能:串级位置式PID反复调节电机,使得电机可以在一定范围内精准任意停靠在某个位置,比如电机控制目标在圆形轨道转动,就可以实现在固定角度的位置停靠,四

    2023年04月08日
    浏览(41)
  • STM32CubeMX 直流电机串级PID位置速度控制、HAL库、cubemx、PID、串级PID、位置控制、速度控制、双环控制

    提示:本文章的串级PID位置速度控制,是在前两篇文章速度控制,位置控制的基础上实现的,这一章节中不需要额外的cubemx的配置,只需要写简单的代码即可,复杂的地方在于串级pid的调试过程。 pid是我们在学习单片机中首先要学会的控制算法,而串级pid又是在单pid的基础上

    2024年02月14日
    浏览(53)
  • 串级PID 位置环+速度环

    1位置环和速度环的串级pid,首先要记住,位置环的输出是速度环的输入,最后控制输出为速度环的输出。 速度环的PID控制器 代码如下 速度环只用Kp和Ki控制即可 位置环PID控制器 位置环用Kp和Kd即可(只用Kp好像也行的) 2如何将位置环和速度环串在一起 对于位置环 目标为行

    2024年02月05日
    浏览(48)
  • PID循迹机器人及整定

    如何对线路循迹机器人进行编程 (robotresearchlab.com) PID调谐文章:http://robotresearchlab.com/2019/02/16/pid-line-follower-tuning/ 介绍人们选择对 循迹机器人 进行线路编程的两种主要方式,并比较两者。将详细比较“简单循迹”和“PID 循迹”。在低速下,简单的循迹算法是完全可以接受的

    2024年02月15日
    浏览(40)
  • simulink学习笔记:基于模型的控制和pid整定

    在学习的时候发现了一个很好的学习simulink的网站,打算来练练手:Introduction: Simulink Control,过程中会涉及到搭建动力学模型和设计pid控制器(整定pid参数)。该模型描述的是火车的两节车厢,对前一节车厢施力,控制其速度按照跟随指定的方波。我在我的资源里也把我建好

    2024年02月13日
    浏览(45)
  • 【Simulink】仿真_PID控制器调谐/调参/整定

    如何使用PID调谐器自动调优PID控制器块? 模型下载: 转速闭环 PID调谐器提供了一种快速和广泛适用的 single-loop PID通过Simulink控制块的整定方法。通过这种方法,可以调优PID控制器参数,以实现具有所需响应时间(response time)的鲁棒(robust)设计。 PID调谐器的典型设计工作流程包括

    2024年02月05日
    浏览(54)
  • 掌上单片机实验室 – 实现PID自整定(11)

    一、背景         上一篇实现了小车运动控制,在程序框架下,基于FreeRTOS编写了驱动任务,包含电机控制、测速、PID调速、行走距离控制等和运动相关的功能。但 PID 调速只是完成了算法,并未真正实现调速,因为 PID 调速的核心是PID 参数的确定,即 整定 !而 整定是

    2023年04月08日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包