电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>单片机>位置型PID的C语言代码的实现过程详细资料概述

位置型PID的C语言代码的实现过程详细资料概述

2018-07-16 | docx | 0.01 MB | 次下载 | 免费

资料介绍

  上一节中已经抽象出了位置性 PID 和增量型 PID 的数学表达式,这一节,重 点讲解 C 语言代码的实现过程,算法的 C 语言实现过程具有一般性,通过 PID 算法的 C 语言实现,可以以此类推,设计其它算法的 C 语言实现。

 

  第一步:定义 PID 变量结构体,代码如下:

  struct _pid{ float SetSpeed; //定义设定值 float ActualSpeed; //定义实际值 float err; //定义偏差值 float err_last; //定义上一个偏差值 float Kp,Ki,Kd; //定义比例、积分、微分系数 float voltage; //定义电压值(控制执行器的变量) float integral; //定义积分值 }pid;

  控制算法中所需要用到的参数在一个结构体中统一定义,方便后面的使用。

  第二部:初始化变量,代码如下:

  void PID_init(){ printf(“PID_init begin \n”); pid.SetSpeed=0.0; pid.ActualSpeed=0.0; pid.err=0.0; pid.err_last=0.0; pid.voltage=0.0; pid.integral=0.0; pid.Kp=0.2; pid.Ki=0.015; pid.Kd=0.2; printf(“PID_init end \n”); }

  统一初始化变量,尤其是 Kp,Ki,Kd 三个参数,调试过程当中,对于要求的控制 效果,可以通过调节这三个量直接进行调节。

  第三步:编写控制算法,代码如下:

  float PID_realize(float speed){ pid.SetSpeed=speed; pid.err=pid.SetSpeed-pid.ActualSpeed;

  PID 控制----C 语言讲解

  pid.integral+=pid.err; pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pi d.err_last); pid.err_last=pid.err; pid.ActualSpeed=pid.voltage*1.0; return pid.ActualSpeed; }

  注意:这里用了最基本的算法实现形式,没有考虑死区问题,没有设定上下限, 只是对公式的一种直接的实现,后面的介绍当中还会逐渐的对此改进。

  到此为止,PID 的基本实现部分就初步完成了。下面是测试代码:

  int main(){ printf(“System begin \n”); PID_init(); int count=0; while(count《1000) { float speed=PID_realize(200.0); printf(“%f\n”,speed); count++; } return 0; }

PID C语言 代码
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1美的电磁炉电路原理图资料
  2. 4.39 MB   |  16次下载  |  10 积分
  3. 2反激式开关电源设计解析
  4. 0.89 MB   |  2次下载  |  5 积分
  5. 3简易光伏控制器原理图资料
  6. 0.07 MB   |  1次下载  |  5 积分
  7. 4TPS23755数据手册
  8. 0.07 MB   |  次下载  |  免费
  9. 536伏,10兆赫兹低噪声双运算放大器COS5532 技术手册
  10. 0.41 MB   |  次下载  |  免费
  11. 6LM5176 55V 宽输入电压同步4开关降压/升压控制器技术手册
  12. 2.40 MB   |  次下载  |  免费
  13. 7MCU模块原理图资料
  14. 0.37 MB   |  次下载  |  1 积分
  15. 8LoRa1121 FCC&CE认证 多频段LoRa无线通讯模块规格书
  16. 997.05 KB  |  次下载  |  免费

本月

  1. 1美的电磁炉电路原理图资料
  2. 4.39 MB   |  16次下载  |  10 积分
  3. 2冷柜-电气控制系统讲解
  4. 13.68 MB  |  7次下载  |  10 积分
  5. 3SDFM 激光测距模块模组手册
  6. 0.54 MB   |  7次下载  |  免费
  7. 4直流电路的组成和基本定律
  8. 1.67 MB   |  4次下载  |  免费
  9. 5SW6238V ACCC 三 PD 四口多协议移动电源 SOC规格书
  10. 0.59 MB   |  4次下载  |  1 积分
  11. 6安川A1000变频器中文版说明书
  12. 20.16 MB  |  3次下载  |  3 积分
  13. 7IP6742_datasheet_100V8A 同步 BUCK 控制器
  14. 2.16 MB  |  3次下载  |  免费
  15. 8PAW3395DM-T6QU:光学游戏导航芯片手册
  16. 1.26 MB   |  2次下载  |  10 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233094次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191448次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183360次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81605次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73829次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分