電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>單片機>位置型PID的C語言代碼的實現(xiàn)過程詳細資料概述

位置型PID的C語言代碼的實現(xiàn)過程詳細資料概述

2018-07-16 | docx | 0.01 MB | 次下載 | 免費

資料介紹

  上一節(jié)中已經(jīng)抽象出了位置性 PID 和增量型 PID 的數(shù)學(xué)表達式,這一節(jié),重 點講解 C 語言代碼的實現(xiàn)過程,算法的 C 語言實現(xiàn)過程具有一般性,通過 PID 算法的 C 語言實現(xiàn),可以以此類推,設(shè)計其它算法的 C 語言實現(xiàn)。

?

  第一步:定義 PID 變量結(jié)構(gòu)體,代碼如下:

  struct _pid{ float SetSpeed; //定義設(shè)定值 float ActualSpeed; //定義實際值 float err; //定義偏差值 float err_last; //定義上一個偏差值 float Kp,Ki,Kd; //定義比例、積分、微分系數(shù) float voltage; //定義電壓值(控制執(zhí)行器的變量) float integral; //定義積分值 }pid;

  控制算法中所需要用到的參數(shù)在一個結(jié)構(gòu)體中統(tǒng)一定義,方便后面的使用。

  第二部:初始化變量,代碼如下:

  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”); }

  統(tǒng)一初始化變量,尤其是 Kp,Ki,Kd 三個參數(shù),調(diào)試過程當中,對于要求的控制 效果,可以通過調(diào)節(jié)這三個量直接進行調(diào)節(jié)。

  第三步:編寫控制算法,代碼如下:

  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; }

  注意:這里用了最基本的算法實現(xiàn)形式,沒有考慮死區(qū)問題,沒有設(shè)定上下限, 只是對公式的一種直接的實現(xiàn),后面的介紹當中還會逐漸的對此改進。

  到此為止,PID 的基本實現(xiàn)部分就初步完成了。下面是測試代碼:

  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; }

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 651單片機窗簾控制器仿真程序
  12. 1.93 MB  |  2次下載  |  免費
  13. 751單片機大棚環(huán)境控制器仿真程序
  14. 1.10 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費