嵌入式开发--PID控制

news2024/11/24 20:32:05

PID简介

讲解PID的文章书籍很多,本文就不详细讲了,只讲一下我在学习过程中不容易理解的一些问题点,以供大家参考。比如很多书籍对于PID,只讲了计算,但是最后计算出来的值如何应用,则完全不讲,当时我是一头雾水,后来搞明白以后又觉得还是很简单的,但如果书籍里面能提一下,那不是让人学习起来容易很多么。
PID就是比例,积分,微分三个单词的首字母缩写,是工程上控制系统中的一个常用控制算法。以下结合我之前做过的一个温度控制的项目来介绍PID。用的是当时保留下来的一些调试图片,供参考。
PID有两种控制方式,增量式和位置式,二者在数学上完全等价,随便用一个都可以,有兴趣的可以看一下二者的公式推导。
区别在于位置式需要累加过往的所有值,所以要用一个比较大的计数器,特别是对于长滞后时间的加热系统,往往会用到Float类型或Double,这对于某些单片机来说并不友好。当然这个累加并不会无限的变大,因为系统达到稳定值以后,后续累加的值是围绕0值做正负波动的,而增量式只需要用到最近3次的值,可以用一个INT类型的变量即可,不涉及浮点计算,对单片机的要求低很多。

控制说明

目标温度为230度。用的是一个直流控交流的固态继电器,去驱动一个220V的发热线圈,通过调节PWM占空比,来改变发热状态。占空比在0-100%之间调节,0就是无输出,100就是满功率输出。
为了减小对电网的纹波影响,现在的直流控交流的固态继电器似乎都是具有过零检测的,也就是说,无论你的控制 时机如何,固态继电器都要等到交流电达到零点时才改变控制状态,最高控制精度是半个交流电周期,从时间上看就是1%的控制精度,这也直接造成最后的温度控制精度不可能太高,实际做到温度波动约为1度,如下图,蓝线是温度偏差值曲线,黄线是PID控制的占空比输出(归一化为0-10,以方便显示)
在这里插入图片描述

比例

当前130度,差100度,那第我按1/10取比例系数的话,那P值就是10,如果当前是200度,差30度,那P值就是3,按比例取值即可,这个系数定为Kp,最后算出来的值就是比例的值。
只用比例控制的话,系统会振荡,也就是围绕目标温度230度上下波动,类似于下图这样:
在这里插入图片描述
或者始终达不到设定值,总是差一点,当然这时把比例系数调大一些,一般就可以进入振荡状态。到了振荡状态,就可以继续往后调了。

积分

积分控制的作用是消除静差,如果不用积分控制的话,由于控制精度的问题,系统始终与目标之间有一个固定的差值,当把这个差值做一个长时间的累加以后,这个值就会影响到最终的结果,进而消除这个固定的偏差。
比如不用积分时,温度始终比期望值高1度或低1度,控制律体现为最小的占空比变化,这时引入积分,就可以在一段时间之后适时的增加1个或减小1个占空比变化,从而在长时间来看抹平这个固定偏差值。
举例,如果设定温度是230度,而实测温度229度,则偏差为1度,并将其乘以一个系数Ki(也有叫Ti),最后进行累加。这个值就是积分值。

微分

比例和积分控制都是滞后控制,这会导致系统需要很长的时间才能达到稳定。而对于长滞后时间的加热系统来说,这个时间往往是不可忍受的。而微分控制就可以解决这个问题。
比如说上上次测量时,温度偏差50度,上次测量时温度偏差45度,本次测量时温度偏差为35度,说明系统的温度正在加速上升,如果持续下去,肯定会造成过冲,使得温度大大超过设定值。
微分就是偏差减去偏差,即上一次的值是5度,本次的值是10度,再将其乘以一个系统Kd(也有叫Td),就是微分值。

PID输出

将计算出来的比例,积分,微分值三都简单相加,就是最后的PID输出值。
最后PID的整定,其实就是调节Kp,Ki,Kd这三个系数的值各取多少,就这么简单。
然后将输出值与控制系统统一起来,举例,若PID的输出值为5000,且我们归一化到2000为满功率输出,则从0到2000之间时,按1/20的比例控制PWM,大于2000则用100%占空比。也可以规定一个最低值,比如50以下始终用1%占空比的做一个功率维持。这些控制方式都可以自定。

PID的整定

整定的讲解,各种文章实在是太多了,随便看一两篇即可,都大同小异。
最后的整定结果,看下图,温度波动在1度以内,从第1次达到偏差为0值起计算,200个测试周期进入稳定值,过冲为2.5度
在这里插入图片描述
下图为另一个参数,过冲约为3度,但稳定时间大大缩短,不到100个周期即稳定
在这里插入图片描述

最后放一张很有用的图

网上找来的,不清楚出处了,这个图对于整定PID参数非常有用。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:设计一个学生学籍管理系统,设计相关信息,并执行一些计算和文件操作

题目: 设计一个学生学籍管理系统: 学生信息包括:姓名、学号、性别和英语、数学、程序设计、体育成绩。数据录入支持键盘输入和文件导入;同时支持导入输入,如自动列出“姓名、学号、性别”,而成绩部分由键盘…

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型。 SFP、SFP+、SFP28、QSFP+和QSFP28这些光模块类型对专业人员来说并不陌生,这些热拔插模块都可用于连接网络交换机和其他网络设备(如服务器或收发器)进行数据传输。但你了解这些模块的具体区别吗?QSFP28…

Python爬虫爬取某电影排行榜图片实例

今天继续给大家介绍Python 爬虫相关知识,本文主要内容是Python爬虫爬取某电影排行榜图片实例。 一、要求分析 在上文Python爬虫爬取某电影排行实例中,我们已经能够使用Python程序爬取某电影排行榜中的电影名称。今天,我们来尝试以下下载电影…

入职第一天,HR拿了一个橙子进门说:你的学历不是统招本科,不符合公司要求,给你个橘子,走吧!...

今天来讲一件又好笑又好气的事,这是一位网友的亲身经历:入职第一天,入职材料填到一半,HR拿了一个橙子进门,放在桌子上开口说:抱歉,由于之前工作失误,没确认你的第一学历不是统招本科…

RK3568平台开发系列讲解(调试篇)Linux相关日志分析

🚀返回专栏总目录 文章目录 一、dmesg二、动态打印案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍Linux内核的日志分析。 一、dmesg printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空…

​杭州蓝然创业板IPO终止:应收账款、存货账面高,楼永通为实控人​

近日,杭州蓝然技术股份有限公司(下称“杭州蓝然”)向深圳证券交易所提交了撤回在创业板上市申请文件的申请。同时,其保荐机构也撤回保荐。12月23日,深圳证券交易所做出决定,终止对杭州蓝然在创业板IPO的审核…

学习笔记:Java 并发编程②

若文章内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系博主删除。 视频链接:https://www.bilibili.com/video/av81461839配套资料:https://pan.baidu.com/s/1lSDty6-hzCWTXFYuqThRPw&am…

Matlab 实现磁测数据日变改正

1 算法 算法来自于GEMLink 5.2的帮助文档,这个文档基本解决了算法问题。 GemLink日变改正模块界面 1.1 概述 日变改正模块旨在执行磁力日变数据计算,而不用在仪器上进行日变(仪器是未经过校正的原始数据)。这个模块要求已经保…

[ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛

没啥时间打比赛就大概看了一下做了几题 文章目录[Misc] reindeer game[Misc] 调查问卷[Web] ezphp[Misc] reindeer game ​ 这题最简单的方法就是玩游戏了,然后直接出flag flag{82a2acb6-9803-4936-92db-f1431d90c6d1} [Misc] 调查问卷 flag{the_harder_u_struggl…

故事的开始:RaidAI

目录引言RapidAI/RapidOCRRapidAI/YOLO2COCORapidOcrAndroidOnnxRapidAI/RapidOcrNcnnRapidAI/PaddleOCRModelConverterRapidAI/RapidTTSRapidAI/RapidASRRapidAI/RapidPix2Pix引言 RapidAI是一个将AI模型应用到工程中的开源组织,致力于搭建AI模型从学术界到工程界…

RabbitMQ:消息分发模型

Work queues,也被称为 Task queues,任务模型,当消息处理比较耗时时的时候,可能产生消息的速度会远远大于消息的消费速度,消息会堆积越来越多,无法及时处理,此时就可以使用work模型:让…

圣诞的荒诞小故事并记录互联网协议-五层模型

今天敲代码敲着敲着灵光乍现,突然一个荒诞的故事💡映入脑海。 1.未来和过去: 人高度发达(以下称之为渡) 渡可以打开时空穿越过去(以下称之为旧迹),并且可以进随心所欲的来去自如&a…

【微服务】Nacos的寻址机制

目录 一、 Nacos的寻址机制 1、前提 2、设计 3、内部实现 3.1、单机寻址 3.2、文件寻址 3.3、地址服务器寻址 4、未来可扩展点 4.1、集群节点自动扩缩容 💖 Spring家族及微服务系列文章 一、 Nacos的寻址机制 1、前提 Nacos 支持单机部署以及集群部署&am…

xxl-job基本原理以及底层流程讲解

任务执行策略 任务阻塞策略 整体架构部署 这里主要讲解下每个模块的作用 调度模块:负责管理调度信息,按照调度配置发出调度请求,自身不承担任何业务代码。调度系统于任务解耦,提高了系统可用性和稳定性,同时调度系统性…

MFC工程的文件说明

工程创建 使用VS创建一个MFC的工程,这里不做说明 文件说明 使用VS创建好的MFC工程有如下文件: MFC全称Microsoft Foundation Classes,也就是微软基础类库;是VC的核心,是C与Windows API的结合,很彻底的用C封装了Win…

这个医生说的防疫措施,我挺认可的

上面那个语音是一个朋友发给我的,语音时间比较长,但是里面讲的很多内容我觉得挺不错的,现在疫情反复,我们会听到很多关于疫情的信息,有的人说奥密克戎感染性很强,之前专家说的无症状是骗人的,根…

元宇宙产业委联席秘书长叶毓睿:去中心化和去中介化的定义、区别,以及和元宇宙的关系

原创 Peter Ye 转自:乐生活与爱IT Plus 近日有个有关元宇宙的线上分享,有位名叫谢晓雪的听众提了一个我之前没思考过的问题:去中心化和去中介化的区别? 当时我回答了一部分,但主要是讲的之间的联系,区…

【年终总结】求职面试一定要扬长避短

时光荏苒,这周日就是元旦了,我也把年终总结提上了日程。 前言 今年的年终总结我打算多写几篇,每篇瞄准一个方向,写一些对大家有帮助、有启发的内容。 初步的想法会整理三篇: 第一篇分享求职面试的经验第二篇分享接私…

Mybaits(环境搭建和基本使用)

目录   一、什么是 Mybaits   二、配置环境     2.1 导入 MyBatis Framework     2.2 连接 MyBatis   三、增删改查功能     3.1 创建实体类     3.2 select     3.3 delete 和 update     3.4 insert   四、SQL 注入     4.1 什么是 SQL…

2022年终总结、展望2023

2022年终总结、展望2023前言一、2022年工作成绩二、2022年工作不足即如何改进三、可以传承的工作方法或者经验四、2023年工作目标 &#xff08;目标细化、可落地&#xff09;<font colorred> 1、薪资待遇2、云端高效的实时智能视频处理平台架构图3、 云端高效的实时智能视…