数字PID算法基础

        数字PID是由编程语言实现的PID算法并烧录到控制芯片中,控制芯片与电机驱动连接,将PID控制算法的输出转换为PWM控制信号发送给电机驱动电路,电机驱动电路与直流电机相连并将PWM控制信号转换为具有相同占空比的PWM供电电压,通过对输入电机的PWM供电电压占空比的控制实现对电机转速的调节;通过传感器监测电机转速,反馈至控制芯片,实现闭环。

1、公式推导

        PID控制算法在连续时间序列下的公式如下:

        对连续时间信号进行等间隔采样,就得到离散化的数字信号。

        容易得到PID的离散化表达式,该表达式也成为位置式PID:

        增量式PID,即ux - ux-1,表达式为:

        所以,可以看出,位置式PID和增量式PID在本质上是同一种表达式。

2、PID控制的实际含义

        以电机控制为例,期望转速是1000rpm,与实际电机转速(400rpm)的差值为600rpm输入PID控制器,电机驱动产生PWM波调节电机转速。

2.1、使用比例环节进行控制

        只是用比例环节进行控制,e(t)为控制转速与电机实际转速的差值。

        这是用比例环节进行电机控制的转速曲线,随着系数Kp的增加,转速曲线的波动越来越陡峭,波峰也越来越高。从Kp调节控制器的转速曲线可以发现,这里有两个问题:

        1、存在转速波动。转速调节的初始阶段,电机转速有一段上下波动阶段(7秒前),这一段波动在实际应场景往往是不可以接受的;

        2、存在稳态误差。在比例环节的控制下,电机的稳态转速始终与目标转存在偏差。根据比例环节的公式,当偏差消失后比例环节的输出也为0,因此稳态转速永远无法与目标转速一致。

        实际中,随着Kp增加,前期转速波动增加、稳态误差降低,但始终无法消除。

2.2、增加微分环节

        针对问题1的转速波动,可以通过增加微分环节来解决。

        通过,下面的转速曲线,来看积分环节如何解决转速波动问题的。e(t)大于e(t-1)表示当前转速正在远离目标转速,根据积微分环节的公式,此时微分环节会将转速往靠近目标值进行调整。可以看到微分环节相当于一个阻尼器,转速原理目标值时,它阻止远离;转速靠近目标值时,它阻止靠近。从而让被控对象更快的稳定在一个状态,不进行波动。

2.3、增加积分环节

        针对问题2的稳态误差问题,可以通过增加积分环节来解决。

        对于稳态误差,系统稳定后目标值和实际中始终存在一个偏差。如果此时,积分环节增加进来,它会对这部分偏差进行正向积分,在积分作用下,积分环节的输出变得越来越大,因此PID控制起的输出也变得越来越大,从而当前转速开始升高。当转速超过目标转速后,积分环节又会对这部分偏差进行负向积分,PID控制器的输出变小,从而转速开始下降。

        只要转速没有停在目标转速上,积分环节就会一直发挥调节作用,被控对象会因为这种调节作用,最终稳定在目标转速上。

3、总结

        PID控制器在只有比例环节时,存在转速波动和稳态误差。通过增加积分环节可以消除稳态误差,通过微分环节消除转速调节的波动问题。因此,在PID三个环节的共同努力下,就可以实现如下理想的转速调节曲线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/279547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF+Halcon 培训项目实战(7):目标匹配助手

文章目录 前言相关链接项目专栏运行环境匹配图片7.Halcon代码导出控制台测试导入halcon.dll运行报错:运行结果: 7.WPF导入Halcon新建WPF程序Nuget目录项目目录相关代码app.xaml:导入HandyControl Style主题App.xaml.cs:全局异常捕捉NlogHelper:日志打印M…

数据库——创建存储过程、函数和触发器安装phpmyadmin

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作: (1)登录 MySQL,在 MySQL 中创建用户,…

云原生|对象存储|minio分布式集群的搭建和初步使用(可用于生产)

前言: minio作为轻量级的对象存储服务安装还是比较简单的,但分布式集群可以大大提高存储的安全性,可靠性。分布式集群是在单实例的基础上扩展而来的 minio的分布式集群有如下要求: 所有运行分布式 MinIO 的节点需要具有相同的访…

数据结构-十大排序算法

数据结构十大排序算法 十大排序算法分别是直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、外部排序。 其中插入排序包括直接插入排序、折半插入排序、希尔排序;交换排序包括冒泡排序、快速排序&#xff1…

【MySQL表的约束】

文章目录 前言:1. 空属性2. 默认值3. 列描述4. zerofill5. 主键6. 自增长7. 唯一键8. 外键9 . 综合案例 - 阅读 前言: 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性…

代数结构与图论

文章目录 图的基本概念代数系统群与环格与布尔代数 图的基本概念 代数系统 单位元和零元如果存在,则是唯一的当代数系统的元素大于1时,单位元与零元不相等对于可结合的二元运算,可逆元素的逆元唯一同类型的代数系统:运算个数相同…

基于js和html的骰子游戏

介绍: 1.游戏者选择“大”时,三个骰子点数之和为11-18时,游戏者获胜。2.游戏者选择“小”时,三个骰子点数之和为3-10时,游戏者获胜。3.如果游戏者选择具体点数,则根据三个骰子的点数计算,如果与…

《C++PrimerPlus》第13章 类继承

13.1 一个简单的基类 基类和派生类示例&#xff08;球会会员管理&#xff09; 头文件tabtenn1.h #ifndef __TABTENN1_H__ #define __TABTENN1_H__#include <iostream> #include <string>using namespace std;class TableTennisPlayer {private:string firstname;…

js实时监听input输入框值的变化

实习日记之通过调用common chemistry的api接口实现输入keyword查找cas号和mw。做了一个简单的html网页&#xff0c;用到了ajax技术。比较简单&#xff0c;适合刚入门的宝学习参考。代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&l…

理解 AQS 和 ReentrantLock

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、公平锁和非公平锁 1.1 含义 1.2 如何自我实现 1.2.1 公平锁实现&#xff1a; 1.2.2 非公平锁实现: 1.2.3 公平和非公平的区…

Leetcode的AC指南 —— 哈希法/双指针:15. 三数之和

摘要&#xff1a; Leetcode的AC指南 —— 15. 三数之和。题目介绍&#xff1a;给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且…

数据结构学习 Leetcode72 编辑距离

关键词&#xff1a;动态规划 最长公共子序列 题目&#xff1a; 思路&#xff1a; 这题我虽然做出来了但是还是有点迷糊。首先&#xff0c;这道题一定是和最长公共子序列相似的。 所以往最长公共子序列方向思考&#xff0c;考虑的它的状态和转移方程以及边界。 状态和转移方…

Ajax学习

文章目录 AjaxAjax 是什么Ajax 经典应用场景Ajax 原理示意图ajax的异步请求的方法ajax的逻辑:应用实例-验证用户名是否存在思路框架图:需求分析: 到数据库去验证用户名是否可用思路框架图大功告成:使用JQuery-Ajax实现上面相同的需求:Ajax Ajax 是什么 AJAX 即"Async…

【HTML5】第1章 HTML5入门

学习目标 了解网页基本概念&#xff0c;能够说出网页的构成以及网页相关名词的含义 熟悉Web标准&#xff0c;能够归纳Web标准的构成。 了解浏览器&#xff0c;能够说出各主流浏览器的特点。 了解HTML5技术&#xff0c;能够知道HTML5发展历程、优势以及浏览器对HTML5的支持情…

【嵌入式开发学习必备专栏】

文章目录 嵌入式开发学习必备专栏1.1 ARM Coresight SoC-400/SoC-600 专栏导读目录1.1.1 Performance Profiling1.1.2 ARM Coresight Debug 工具系列1.1.2.1 ARM DS5 系列1.1.2.2 劳特巴赫 Trace32 系列1.1.2.3 JTAG OpenOCD 系列 1.2 ARM Cache 专栏1.3 ARM AMBA Bus 专栏1.3.…

java使用JSON工具解析字符串、数组详解

一&#xff1a;问题 1.最近自己在前后端数据交互时需要进行JSON格式字符串、数组数据进行转换&#xff0c;进行问题整理 2.遇到需要JSON字符串转换的朋友可以阅读 二&#xff1a;解析步骤 1.第一点首先确定需求&#xff0c;明确需要转的字符串是一个对象还是一个数组&#…

C练习——判断三角形并求面积

题目&#xff1a;从健盘任意输入三角形的三边长为a,b,c,编程判断a,b,c的值能否构成一个三角形&#xff0c;若能构成三角形&#xff0c;则计算并输出三角形的面积&#xff0c;否则提示不能构成三角形。 已知构成三角形的条件是&#xff1a;任意两边之和大于第三边。 解析&#…

jQuery-Validate验证插件的使用步骤【详解】

jQuery-Validate验证插件的使用步骤详解 1. 写在前面2. 效果展示3. Validate环境的搭建4. Validate基本方法的使用5. 实现错误消息的本地化6. 实现远程验证7. 自定义验证方法8. 验证表单完整版8.1 Html表单8.2 表单验证js逻辑8.3 表单验证css样式 1. 写在前面 我们知道&#x…

windows11经常断网WiFi

解决方法&#xff1a;从官方网站下载&#xff0c;更新WiFi驱动程序&#xff0c;

Linux:apache优化(2)—— 网页传输压缩

网页传输压缩 客户端在请求httpd服务器数据&#xff0c;httpd服务器在返回数据包给客户端时&#xff0c;先对返回的数据进行压缩&#xff0c;压缩之后再传输 作用&#xff1a;配置 Apache 的网页压缩功能&#xff0c;是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行…