久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10838|回復: 12
打印 上一主題 下一主題
收起左側

[原創]開源51單片機PID電機調速Proteus仿真與源碼

  [復制鏈接]
跳轉到指定樓層
樓主
本代碼采用Proteus仿真,采用51單片機模擬PWM,用定時器獲取電機轉速信息,用PID算法控制轉速,轉速、PID都可以用按鈕設置,LCD顯示屏顯示出電機的轉速、差值、設定值、PID,并可以粗調跟微調,還有閃爍提示,用來指示當前的設置項目。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

不按設定鍵直接調整的是設定速度值因為速度值是以周期形式調整,所以速度值越小,轉速越高,2秒鐘無操作退出設置模式,非設置模式調節轉速

單片機源程序如下:
  1. //************************項目信息**************************
  2. //項目名稱:
  3. //客戶名稱:
  4. //************************文件信息**************************
  5. //文件名稱:pi.c
  6. //作    者:Lebo
  7. //文件版本:
  8. //校 驗 和:
  9. //************************硬件信息**************************
  10. //目標器件:
  11. //源 時 鐘:
  12. //UCBA型號:
  13. //************************平臺信息**************************
  14. //開發環境:
  15. //燒錄環境:
  16. //配置內容:
  17. //************************功能信息**************************
  18. //程序功能:
  19. //函數列表:
  20. //************************修改記錄**************************
  21. // <author>  <time>   <version> <desc>
  22. //1.Lebo    15/01/11    V1.0    build this moudle
  23. //2.
  24. //**********************************************************



  25. //**********************************************************
  26. //程序名稱:頭文件
  27. //程序說明:
  28. //**********************************************************

  29. #include "pid.h"
  30. //**********************************************************
  31. //程序名稱:增量式PID初始化 函數
  32. //入口參數:*ptrPID
  33. //出口參數:e0, e1, e2, ka, kb, kc, kz, max_adjust, max_out, min_out
  34. //返回參數:
  35. //調用函數:
  36. //程序說明:
  37. //**********************************************************

  38. void PID_IncInit(PID_TypeDef *ptrPID){
  39.         (* ptrPID).e0 = 0;
  40.         (* ptrPID).e1 = 0;
  41.         (* ptrPID).e2 = 0;
  42.         
  43.         (* ptrPID).ka = 0;
  44.         (* ptrPID).kb = 0;
  45.         (* ptrPID).kc = 0;
  46.         (* ptrPID).kz = 0;
  47.         
  48.         (* ptrPID).maxAdjust = 0;
  49.         (* ptrPID).maxOut = 0;
  50.         (* ptrPID).minOut = 0;
  51. }
  52. //**********************************************************
  53. //程序名稱:增量式PID系數設置 函數
  54. //入口參數:kp, ki, kd, z, *pid_ptr
  55. //出口參數:ka, kb, kc, kz
  56. //返回參數:
  57. //調用函數:
  58. //程序說明:
  59. /*
  60.     T--------采樣周期
  61.     Ti-------積分時間
  62.     Td-------微分時間

  63.     Kp = Kp
  64.     Ki = Kp*T/Ti
  65.     Kd = Kp*Td/T

  66.     A = Kp+Ki+Kd = Kp*(1 + T/Ti + Td/T)
  67.     B = Kp+2*Kd = Kp*(1 + 2Td/T)
  68.     C = Kd = Kp*Td/T
  69. *///120,11,0,10
  70. //**********************************************************
  71. void PID_IncSetRatio(u8 kp, u8 ki, u8 kd, u8 kz, PID_TypeDef *ptrPID){
  72.         (* ptrPID).ka = kp + ki + kd;
  73.         (* ptrPID).kb = kp + (2 * kd);
  74.         (* ptrPID).kc = kd;
  75.         (* ptrPID).kz = kz;
  76. }

  77. //**********************************************************
  78. //程序名稱:PID系數極限設置 函數
  79. //入口參數:max_ajst, max_outval, min_outval, *pid_ptr
  80. //出口參數:max_adjust, max_out, min_out
  81. //返回參數:
  82. //調用函數:
  83. //程序說明:
  84. //**********************************************************
  85. void PID_IncSetRatioLimit(s8 maxAdjust, u8 maxOut, u8 minOut, PID_TypeDef *ptrPID){
  86.         (* ptrPID).maxAdjust = maxAdjust;
  87.         (* ptrPID).maxOut = maxOut;
  88.         (* ptrPID).minOut = minOut;
  89. }

  90. //**********************************************************
  91. //程序名稱:增量式PID 函數
  92. //入口參數:nonce_error, pid_ptr, out_ptr
  93. //出口參數:*out_ptr
  94. //返回參數:
  95. //調用函數:
  96. //程序說明:
  97. /*
  98. ////位置式PID控制算式
  99. ////    離散的PID表達式:
  100. ////    U(n) = Kp*{e(n) + (T/Ti)*Sum[e(0)+e(1)...+e(n)] + (Td/T)*[e(n)-e(n-1)]}
  101. ////    U(n) = Kp*e(n) + Ki*Sum[e(0)~e(n)] + Kd*[e(n)-e(n-1)]
  102. ////    說明:
  103. ////    n--------采樣序號,n=0,1,2,…… 。
  104. ////    U(n)-----第n次采樣時刻的計算輸出量
  105. ////    e(n)-----第n次采樣時刻輸入的偏差值
  106. ////    e(n-1)---第n-1次采樣時刻輸入的偏差值
  107. ////    T--------采樣周期
  108. ////    Ti-------積分時間
  109. ////    Td-------微分時間
  110. ////    Kp-------比例系數
  111. ////    Ki-------積分系數,Ki = Kp*T/Ti
  112. ////    Kd-------微分系數,Kd = Kp*Td/T

  113. 增量式PID控制算式(廣泛應用)
  114.     增量式PID控制算法公式:
  115.     dU(n) = U(n)-U(n-1)
  116.     dU(n) = Kp*[e(n)-e(n-1)] + Ki*e(n) + Kd*[e(n)-2*e(n-1)+e(n-2)]
  117.     dU(n) = (Kp+Ki+Kd)*e(n) - (Kp+2*Kd)*e(n-1) + e(n-2)*Kd
  118.     dU(n) = A*e(n) - B*e(n-1) + C*e(n-2)
  119.     說明:
  120.     T--------采樣周期
  121.     Ti-------積分時間
  122.     Td-------微分時間

  123.     Kp = Kp
  124.     Ki = Kp*T/Ti
  125.     Kd = Kp*Td/T

  126.     A = Kp+Ki+Kd = Kp*(1 + T/Ti + Td/T)
  127.     B = Kp+2*Kd = Kp*(1 + 2Td/T)
  128.     C = Kd = Kp*Td/T

  129. 由于單片機的處理速度和ram 資源的限制,一般不采用浮點數運算,而將所有參數全部用整
  130. 數,運算到最后再除以一個2的N次方數據(相當于移位),作類似定點數運算,可大大提高
  131. 運算速度,根據控制精度的不同要求,當精度要求很高時,注意保留移位引起的“余數”,做
  132. 好余數補償。
  133. */
  134. //**********************************************************

  135. void PID_IncCompute(s16 offset, u8 *ptrOut, PID_TypeDef *ptrPID){
  136.         s16 outResult = (s16)(* ptrOut);
  137.         s32 median;
  138.         s8 adjust;
  139.         (* ptrPID).e2 = (* ptrPID).e1;
  140.         (* ptrPID).e1 = (* ptrPID).e0;
  141.         (* ptrPID).e0 = offset;
  142.         median = (s32)(* ptrPID).ka * (* ptrPID).e0 -\
  143.                                          (s32)(* ptrPID).kb * (* ptrPID).e1 +\
  144.                                          (s32)(* ptrPID).kc * (* ptrPID).e2;
  145.         median = median >> (* ptrPID).kz;
  146.         if(median < -(* ptrPID).maxAdjust)
  147.                 adjust = -(* ptrPID).maxAdjust;
  148.         else if(median > (* ptrPID).maxAdjust)
  149.                 adjust = (* ptrPID).maxAdjust;
  150.         else
  151.                 adjust = (s8)median;

  152.         outResult += adjust;
  153.         if(outResult > (* ptrPID).maxOut)
  154.                 outResult = (* ptrPID).maxOut;
  155.         else if(outResult < (* ptrPID).minOut)
  156.                 outResult = (* ptrPID).minOut;
  157.         *ptrOut = (u8)outResult;
  158. }        
復制代碼



所有資料51hei提供下載:
PID Proteus.rar (172.39 KB, 下載次數: 392)


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:153008 發表于 2018-10-17 11:51 | 只看該作者
原理圖文件和源程序文件都打不開,能不能從發一份
回復

使用道具 舉報

板凳
ID:110278 發表于 2018-10-17 15:26 | 只看該作者
正是需要的材料。
回復

使用道具 舉報

地板
ID:20345 發表于 2018-10-28 09:14 | 只看該作者
Proteus仿真圖沒有單片機,仿真不起來。
回復

使用道具 舉報

5#
ID:417062 發表于 2018-10-29 13:56 | 只看該作者
樓主好厲害
回復

使用道具 舉報

6#
ID:501385 發表于 2019-6-22 14:01 | 只看該作者
sdwxysc 發表于 2018-10-28 09:14
Proteus仿真圖沒有單片機,仿真不起來。

樓主仿真文件是多層圖紙的需要切換在加載仿真程序
回復

使用道具 舉報

7#
ID:653751 發表于 2019-12-15 18:14 | 只看該作者
樓主,可以發一份hex 文件嗎,急需,謝謝啦
回復

使用道具 舉報

8#
ID:649857 發表于 2019-12-23 20:33 | 只看該作者
malonglong33 發表于 2019-6-22 14:01
樓主仿真文件是多層圖紙的需要切換在加載仿真程序

您好,這個多層圖紙怎么切換?
回復

使用道具 舉報

9#
ID:693716 發表于 2020-3-9 10:48 | 只看該作者
學習下,這個站長給了這么高的黑比,必須學習
回復

使用道具 舉報

10#
ID:368708 發表于 2020-3-17 15:47 | 只看該作者
世界很安靜 發表于 2019-12-23 20:33
您好,這個多層圖紙怎么切換?

proteus界面Desig->下拉列表中會出現Rootsheet1和Rootsheet2,這兩個就是來回切換圖紙的。
回復

使用道具 舉報

11#
ID:711846 發表于 2021-6-25 17:43 | 只看該作者
z是什么參數?duty怎么看想用示波器看一下
回復

使用道具 舉報

12#
ID:65956 發表于 2021-6-26 08:13 | 只看該作者
謝謝分享,跟高手學習是一件讓人長進的事
回復

使用道具 舉報

13#
ID:228452 發表于 2023-8-11 22:58 | 只看該作者
MotorControl.hex file included for Proteus simulation
in Proteus go to Design /go to next sheet(page-down) click on CPU/ properties and select
MotorControl.hex
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区av | 成人性视频免费网站 | 成人免费视频网站 | 中文字幕在线不卡 | 国产毛片久久久久久久久春天 | 成人免费网站 | 一区二区三区四区不卡 | 日韩av成人在线 | 国产精品视频久久 | 成av在线 | 日韩有码一区二区三区 | 精品二 | 国产精品三级久久久久久电影 | 亚洲九九 | 一级片在线视频 | 久久久国产精品入口麻豆 | 国产精品自在线 | 日本免费一区二区三区四区 | 日韩精品一区二区三区在线播放 | av片毛片 | 超碰免费在线 | 日韩在线观看视频一区 | 成人自拍视频 | 中文字幕在线免费视频 | 欧美亚洲高清 | 日韩在线观看视频一区 | 午夜影院官网 | 亚洲精品视频在线 | 亚洲三级av | 亚洲精品68久久久一区 | 亚洲国产精品久久人人爱 | 亚洲精品福利视频 | 成人精品一区亚洲午夜久久久 | 水蜜桃久久夜色精品一区 | 日韩欧美一区二区三区四区 | 久久久久国产精品一区二区 | 色www精品视频在线观看 | 九九久久久久久 | 91久久久久久久久久久久久 | 国产成人免费 | 国产sm主人调教女m视频 |