找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2114|回复: 3
收起左侧

电机PID调节程序

  [复制链接]
ID:760179 发表于 2023-5-16 19:18 | 显示全部楼层 |阅读模式
分别有增量式PID调节程序、积分限幅调节程序、位置式PID调节程序
  1. #include<stdio.h>
  2. struct _pid
  3. {
  4.         float Setspeed;//定义设定值
  5.         float ActualSpeed;//定义实际值
  6.         float err;//定义偏差值
  7.         float err_last;//定义上上个偏差值
  8.         float Kp,Ki,Kd;//定义比例、积分、微分系数
  9.         float err_next;//定义上一个偏差值
  10. }pid;
  11. void PID_init()
  12. {
  13.          printf("PID_init begin \n");
  14.          pid.Setspeed=0.0;
  15.          pid.ActualSpeed=0.0;
  16.          pid.err=0.0;
  17.          pid.err_last=0.0;
  18.          pid.err_next=0.0;
  19.          pid.Kp=0.2;
  20.          pid.Ki=0.015;
  21.          pid.Kd=0.2;
  22.          printf("PID_init end\n");
  23. }
  24. float PID_realize(float speed)
  25. {
  26.         float incrementSpeed;
  27.         pid.Setspeed =speed;
  28.         pid.err=pid.Setspeed-pid.ActualSpeed;
  29.         incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);
  30.         pid.ActualSpeed+=incrementSpeed;
  31.         pid.err_last=pid.err_next;
  32.         pid.err_next=pid.err;
  33.         return pid.ActualSpeed;
  34. }
  35. int main()
  36. {
  37.         int count;
  38.         printf("System begin\n");
  39.         PID_init();
  40.         count=0;
  41.         while(count<1000)
  42.         {
  43.                 float speed=PID_realize(50);
  44.                 printf("%f\t",speed);
  45.                 count++;
  46.         }
  47.         getchar();
  48.         return 0;
  49. }
复制代码


积分限幅PID.rar

677.47 KB, 下载次数: 41, 下载积分: 黑币 -5

增量式PID.rar

543.92 KB, 下载次数: 49, 下载积分: 黑币 -5

位置式PID.rar

5.52 MB, 下载次数: 47, 下载积分: 黑币 -5

回复

使用道具 举报

ID:762196 发表于 2023-5-20 17:30 | 显示全部楼层
点赞点赞点赞点赞点赞点赞点赞点赞
回复

使用道具 举报

ID:149799 发表于 2023-7-20 07:40 | 显示全部楼层
全面介绍PID的多种程序范例,谢谢分享。
回复

使用道具 举报

ID:7199 发表于 2023-7-25 19:32 | 显示全部楼层
还好可以借鉴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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