PID算法快速学习

认识PID

数值输入(Input)通过P(比例)、I(积分)、D(微分)根据设定值(SetPoint)控制数值输出(Output)

主要是为了实现数值快速稳定平缓的达到设定值

配置PID

PID是一个算法,可以在任何能写代码的地方引用他。

PID算法有位置式和增量式。
位置式:输出值直达设定值,适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制。

增量式:输出值是近几次位置误差的增量,适用于执行机构带积分部件的对象,如步进电机等

配置PID算法最主要的是对P(比例)、I(积分)、D(微分)的三个数值进行调参
这三个参数的作用:

P(比例):数值的变化幅度,误差值(当前输入值与设定值的差)*kp

I(积分):数值的累加修正,输入值与设定值存在误差时,随时间增加对误差值进行累加后*ki,具体表现在输入值接近设定值,但达不到设定值时,慢慢让输入值达到设定值。

D(微分):该参数设定值越大,越阻碍数值变化。该值过大并不能阻碍数值变化,会严重影响输出值,过小会使输出值过冲。

注意事项

清楚自己使用的是位置式还是增量式

增量式PID需要定义一个变量将输出值累加,比如

double outputvalue;
outputvalue += Output;
if (outputValue <= 1000 && outputValue >= 0)
        TIM3 ->CCR2 = outputValue;
if (outputValue > 1000) outputValue = 100;
if (outputValue < 0)outputValue = 0;

并且限制实际输出值的范围,以免导致严重错误

例程

风洞控制小球悬浮

修改P值会使小球改变的向目标移动速度,但是值太大会造成过冲,最后造成震荡,太小反应速度就太慢。

修改I值小球没有明显的变化,但是可以观察到小球震荡的幅度变小,主要作用就是修正系统误差,接近设定位置

修改D值会增大或者减小对小球的阻尼作用,减小过冲

调试时,不光需要设置PID的参数,还需要现在PID的输出范围。一开始调试的时候,输出PWM默认最大和0,导致小球反复震荡,调节PID的效果甚微。测试出PWM对小球移速的影响,分成5个阶段,快速上升,缓慢上升,悬浮,缓慢下降,快速下降。然后根据这些值设定pwm的范围,小球不在大范围震荡,细调PID后可以小范围移动悬浮在目标位置

调试时发展PWM的频率对小球的移动速度也有很大的影响,PWM频率越高,需要的占空比越大,反之。

附上一个增量式PID

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇