找回密码
 注册
关于网站域名变更的通知
查看: 369|回复: 1
打印 上一主题 下一主题

原来PID算法都用在这些方面,不看不知道啊

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-8 13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
原来PID算法都用在这些方面,不看不知道啊7 e4 a8 {+ U; M& f- g
) K& C: @, ?9 d8 U
这里的 PID 是指控制类的比例 -积分 -微分算法,而不是进程 ID 号。
. \, Y" e  G' w& i  W& I# N! WPID 算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源、电源管理芯片等领域。/ b: |7 C' X+ R9 Z6 _
一般《自动控制原理》上给的是位置式算法,如下图所示。但是工程上,用增量式算法比较多,这样可以避免积分环节饱和溢出的问题,具体公式和整定参数的口诀就不贴出来了,网上资料多如牛毛。
5 B7 o6 N" h( ?  \7 W# ~下面看这样的一个电机控制的例子,如下图所示。这就是一个闭环控制系统, 非常简单。 不管是用 C 还是 verilog ,你都能一下子把代码写好,但是在你整定参数的时候,却发现,怎么调都没用。! j8 l$ S0 ?( U% [+ _+ }
原因在于你对这个系统的反馈机构理解得不够。比如, 716空心杯电机,设定在 100 转/秒,但是你却用了 50M 时钟让PID 算法工作,假设 PID 是全并行的(数据吞吐量也达到9 E) F7 ~6 D( A# a
50M )。$ |/ n8 u& G6 d8 V( f2 k! |1 m2 _
这时,不管你怎样调参数,电机都不受控制,一下子很快,一下子很慢。
6 ^$ M# ~2 Y/ `# ]) e; o静下来想想,不难发现问题。9 a) ~5 C, \1 c" w5 J* o8 c2 a
假设电机瞬时转速是 101 转/秒,光电开关大概每隔 4.95 毫秒才反馈一个速度量过来,在这期间是没有反馈的。
1 U. a) C9 }. C& w设定的转速是 100 转/秒,用工作在 50M 全并行的增量式 PID算法,在 4.95 毫秒内,不断地累积 1 转/秒的误差,期间被PID 算法作用了 247.5 次!
0 P6 Q$ D0 A6 r6 i也就是说,因为 PID 的工作频率太高,积累误差的速率太快(从另一个角度来看就是反馈机构太慢) ,所以电机不受控制,这时,你把 PID 的工作频率降下来,就会发现,电机渐渐地受控制了。) a" X; M* l, S1 o. K) ], E+ @7 Y
下面给一个在 FPGA 中使用 PID 算法做电机控制的完整框图。4 o" K0 W7 ~& i- ~9 G/ u
综上所述,控制类算法,除了要关注算法本身的特点以外,还要深刻理解反馈机构和执行机构。- ~+ z% l/ e; s7 v( F1 j  O2 N
BTW ,一般来说,电机控制用 PI 或者 PD 控制就可以了,如果用 PID 三个环节的话,一来参数不容易调节,二来容易自激,当然也不排除某些特殊场合需要用 PID 三个环节,甚至还会用到三环控制(速度环、相位环、电流环) 。
3 Q* P# _9 I' r: P# F/ t; ]* H3 Q6 c此外,除了 PID 以外,常用的控制类算法还有模糊控制、MPC (模型预测控制)算法。
7 x( ?4 b* `. W! \: W- ]9 p! e5 S% z4 Y1 k* E5 W! K+ }! ^8 I

/ \1 P1 c& V; V# Q$ `) Z
游客,如果您要查看本帖隐藏内容请回复
$ X/ {) S: n/ k! I1 w0 A* |
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-1-8 19:20 | 只看该作者
    PID算法的应用
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-4 00:19 , Processed in 0.140625 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表