IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【硬石科技】电机系列教学(基于STM32)——PID算法实现闭环控制 -> 正文阅读

[嵌入式]【硬石科技】电机系列教学(基于STM32)——PID算法实现闭环控制

闭环控制系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入量(目标转速)就是我们的目标值,减去检测装置传回来的实际值(编码器测得的转速),就是实际偏差。将偏差输入到控制器(STM32),运算之后控制执行机构(驱动板和电机),输出被控量。

普通的位式控制算法

特点:
1.输出信号比较单一,要么是高电压要么是低电压。
2.输出信号的依据是,如果当前值小于设定值,输出值就设定高;如果当前值不小于设定值,输出值就设定低;此算法只是当前值与实际值的简单比较。
3.只考虑控制对象当前的状态值。
**缺点:**由于控制对象纯在惯性,(执行部件控制作用到控制对象上,不会导致控制对象立马变化,而是慢慢变化的现象叫惯性),所以,当当前值大于等于设定值时,输出值设定为低,但是由于惯性,当前值还会继续增大。然后由于此时输出值为低,所以当前值又逐渐减小,当发现当前值小于设定值时,输出值设定为高,但是由于惯性,当前值还会继续减小。这样就会导致,当前值永远在设定值上下波动,而不是刚好达到设定值。

PID控制算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PID控制算法

思想在这里插入图片描述
P、I、D实际上是同时考虑了当前偏差、历史偏差、最近(当前偏差的前两三次)偏差。然后把三种偏差进行线性叠加,形成输出值。
前面的系数K,实际起到一个放大器或者衰减器。

算法分析
假设传感器每1s读取一次当前值,第i秒记为Xi,并将所有采样的数据存储起来。
那么第k秒的当前偏差为在这里插入图片描述
Ek可能大于、等于、小于0。

比例控制在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

积分控制
我们把所有采集到的当前偏差都相加。
在这里插入图片描述
当Sk>0,说明过去这段时间,大多数输出是未达标的;Sk=0的几率很小,说明历史大多数输出是达标的;Sk<0,说明过去这段时间,大多数输出是超标的;
在这里插入图片描述
在这里插入图片描述
不能单纯的用I控制,它必须配合P一起来控制,主要就是为了消除P控制的稳态误差。

在输出值第一次到达目标值之前,积分控制对系统是不利的。因为,他会把历史偏差累加为一个很大的值,那么若此时当前值恰好达标,却加上了这个积分项,那么明显就把输出量给超调了,然后再通过积分控制慢慢地衰减当前值,造成当前值在设定值上下震荡一会。

微分控制

只把最近两次的偏差进行处理,预测出将来偏差的变化趋势。
在这里插入图片描述在这里插入图片描述
不能单纯的用D控制,它必须配合P一起来控制,主要就是为了在偏差接近0时(偏差的变化趋势等于0),抑制偏差的作用就变为0。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位置式和增量式PID算法

在这里插入图片描述
位置式PID算法

在这里插入图片描述
1.T为计算周期(采样周期),也是PID算法修正输出的速率,他不能小于控制周期(PWM信号的周期)。也不能太大,太大了会造成微分控制失效。此值不是固定的,要根据不同实际情况调整。
2.Ti为积分时间,是PI共同作用的时间;此值不是固定的,要根据不同实际情况调整。输出量第一次到达目标值之前,把Ti设置的大一点,让积分控制尽量不要影响到系统;当输出量第一次到达目标值之后,积分控制的作用才体现出来。
3.Td为微分时间,是PD共同作用的时间;此值不是固定的,要根据不同实际情况调整。

在这里插入图片描述
增量式PID算法

在这里插入图片描述
Ek为当前偏差值,E(k-1)为上次偏差值…

在这里插入图片描述

增量式PID速度闭环代码分析

在将PID用于电机控制时,我这个PID的输入参数是编码器的数值、目标位置,我的输出PWM是个什么东西呢?这个PWM可以是-1—+1的占空比,也可以是比较寄存器的数值,例如ARR是3000,PWM这个可以是1500,代表PWM占空比50%,那有的会问,例如我的encoder是1000,target是2000,那么pid.ek
= 1000,按照pid.kp = 10计算,那么pid.kp*pid.ek = 10000,也就是说这个输出pwm如果代表占空比-1–+1的话,远远大于它的范围,那是不是这个计算或者公式有问题呢?或者是不是pwm代表的意义不对呢?其实是没有关系的,因为按照计算10000大于1,PWM=1,那么完全按照占空比1运行,等到encoder=target时,pwm=0,电机就不再运动了,到达了目标位置;但是这里要提醒大家,encoder与target代表编码器数值,二者的差值肯定是整数,乘以pid.kp=10之后,肯定大于1,所以PWM始终是100%占空比,这样有可能时钟无法找到目标位置,所以pid.kp=10这个参数设置就不合理,比如设置pid.kp=0.001,则encoder与target差值如果在1000以内,PWM就可能在-1–+1之间,这样才能真正的起到调节作用,所以kp的值并不是大家随意乱设,要根据控制量的实际情况、输出值的实际意义,设定参数,脱离实际意义的盲目瞎设参数反而适得其反。
———————————————— 版权声明:本段来自CSDN博主「苏守坤」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014453443/article/details/100573722

增量式和位置式PID的区别

增量式与位置式区别:
1增量式算法不需要做累加,控制量增量的确定仅与最近几次偏差采样值有关,计算误差对控制
量计算的影响较小。而位置式算法要用到过去偏差的累加值,容易产生较大的累加误差。

2增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作
影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。 而位置式的输出直接对应对象的输出,因此对系统影响较大。

3增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。

4在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅

位置式PID优缺点:
优点:
①位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用

缺点: ①每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。

增量式PID优缺点:
优点: ①误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。
②手动/自动切换时冲击小,便于实现无扰动切换。当计算机故障时,仍能保持原值。
③算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关。

缺点: ①积分截断效应大,有稳态误差;

②溢出的影响大。有的被控对象用增量式则不太好; ————————————————
版权声明:本段来自CSDN博主「Z小旋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/as480133937/article/details/89508034

PID参数整定经验

一般步骤

a.确定比例增益P   确定比例增益P
时,首先去掉PID的积分项和微分项,一般是令Ti->无穷大Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%70%。比例增益P调试完成。
  b.确定积分时间常数Ti
  比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。
  c.确定微分时间常数Td   积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。
  d.系统空载、带载联调,再对PID参数进行微调,直至满足要求。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:48:39  更:2021-07-31 16:49:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 17:11:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码