PID算法在STM32上的实现

本文详细介绍了PID算法在STM32微控制器上的实现,包括比例、积分和微分控制的原理及其实现细节,分别阐述了位置式和增量式PID算法的工作机制。并提供了C语言代码示例,帮助理解如何在STM32平台上应用PID算法。此外,还讨论了PID参数整定的方法,以及增量式PID相对于位置式PID的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PID调节算法在STM32上的实现


(一)PID控制算法(P:比例    I:积分 D:微分)

(二)首先先说明原理,使用的是数字PID算法,模拟PID算法在计算机这样的系统中是不能够直接使用的,数字PID算法又分为位置式PID控制算法和增量式PID控制算法,那么下面从原理上说明这两种算法

(三)原理分析如图

(四)从上面图中我们可以得到定义

定义变量

用户设定值: SV

当前值(实际值): PV

偏差: E = SV - PV

(五)如果我们在一段时间内就从传感器读取一个值,那么我们就可以得到一个实际值的数据序列,,那么我们也会得到一个偏差值的序列.

读取时间:  t(1)    t(2)    ------  t(k-1)    t(k)
读取到的值:  X(1)    X(2)    ------  X(k-1)  X(k)

偏差值:     E(1)    E(2)    ------  E(k-1)  E(k)

那么我们从偏差值中可以知道:  E(X)  > 0     说明未达标

                E(X) = 0     说明正好达标

                E(X) < 0              说明超标

 (六)比例控制(P),作用:对偏差起到及时反映的作用,一旦产生偏差,控制器立即做出反映.............

定义:
比例系数:Kp    (根据系统进行调节)
比例输出:POUT  = Kp * E(k)      

POUT   = Kp * E(k) + OUT0 

OUT0说明:OUT0是防止E(K) = 0 时候比例控制不作用,所以添加个OUT0进去,OUT0可以根据系统定义大小

Kp说明:如果我们得到一个偏差之后,将偏差进行放大或者缩小来让控制器进行控制

(七)积分控制(I),作用:消除静差............

从上面我们得到偏差序列:
偏差值: E(1) E(2)    ------  E(k-1)  E(k)

定义,历史偏差值之和:S(k) = E(1) + E(2) + .... + E(k-1) + E(K)
定义,积分输出:   IOUT = Kp * S(k) + OUT0

八)微分控制(D),作用:反映偏差信号的变化趋势.............

从上面我们得到偏差序列:

偏差值: E(1) E(2)    ------  E(k-1)  E(k)
定义,偏差之差:D(k) = E(k) - E(k-1)
定义,微分输出:DOUT = Kp * D(k) + OUT0

(九)那么我们从上面就能得出PID的控制算法

PIDOUT = POUT + IOUT + DOUT = (Kp * E(k) + OUT0) + (Kp * S(k) + OUT0) + (Kp * D(k) +OUT0)
       = Kp * (E(k) + S(k) + D(k)) + OUT0

OUT0防止PIDOUT = 0 时候算法还有输出,防止失去控控制
比例(P):考虑当前
积分(I):考虑历史
微分(D):考虑未来

(十)位置式PID,上面只是简单的说明了一下原理,那么实际的数字PID控制算法中

Ti:积分常数
TD:微分常数
T:计算周期

上面两个

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值