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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機溫度控制的PID算法及C程序實現

  [復制鏈接]
跳轉到指定樓層
樓主
ID:711352 發表于 2020-4-22 10:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
溫度控制系統是一個慣性較大的系統,也就是說, 當給溫區開始加熱之后,并不能立即觀察得到溫區溫度的明顯上升;同樣的, 當關閉加熱之后, 溫區的溫度仍然有一定程度的上升。 另外,熱電偶對溫度的檢測, 與實際的溫區溫度相比較,也存在一定的滯后效應。所以,傳統的定點開關控制溫度會有正負誤差幾度的現象, 但這不是溫度控制器本身的問題, 而是整個熱系統的結構性問題,使溫度控制器控溫產生一種慣性溫度誤差。這也給溫度的控制帶來了困難。
要解決溫度控制器這個問題, 采用PID控制技術, 是明智的選擇。PID控制,是針對以上的情況而制定的、新的溫度控制方案,用先進的數碼技術通過 Pvar、Ivar 、Dvar三方面的結合調整,形成一個模糊控制,來解決慣性溫度誤差問題。

基于單片機溫度控制的PID算法的C 程序如下:
  1. /*
  2. pid 算法 C 源程序,還有實現 pid 自動調整。 51 用于控制溫度 26-100 攝氏度。
  3. TIME:2018-07-29 20:15:07
  4. */
  5. #include <stdlib.h>
  6. #include "global_varible.h"
  7. /****************************************************************************
  8. * 模塊名 : PID
  9. * 描述 : PID 調節子程序
  10. * 采用 PID-PD 算法。在偏差絕對值大于△ e 時,用 PD 算法,以改善動態品質。
  11. * 當偏差絕對值小于△ e 時,用 PID 算法,提高穩定精度。
  12. * PIDout=kp*e(t)+ki*[e(t)+e(t-1)+...+e(1)]+kd*[e(t)-e(t-1)]
  13. *=====================================================================
  14. =======
  15. * 入口 : 無
  16. * 出口 : 無
  17. * 改變 : PID_T_Run= 加熱時間控制
  18. *****************************************************************************/
  19. void PID_Math(void)
  20. {
  21. signed long ee1; //偏差一階
  22. //signed long ee2; //偏差二階
  23. signed long d_out; // 積分輸出
  24. if(!Flag_PID_T_OK)
  25. return;
  26. Flag_PID_T_OK = 0;
  27. Temp_Set = 3700; //溫度控制設定值 37.00 度
  28. PID_e0 = Temp_Set - Temp_Now; // 本次偏差
  29. ee1 = PID_e0 - PID_e1; //計算一階偏差
  30. //ee2 = PID_e0-2*PID_e1+PID_e2; //計算二階偏差
  31. //一階偏差的限制范圍
  32. if(ee1 > 500) ee1 = 500;
  33. if(ee1 < -500) ee1 = -500;
  34. PID_e_SUM += PID_e0; //偏差之和
  35. //積分最多累計的溫差
  36. if(PID_e_SUM > 200) PID_e_SUM = 200;
  37. if(PID_e_SUM < -200) PID_e_SUM = -200;
  38. PID_Out = PID_kp * PID_e0 + PID_kd * ee1; //計算 PID 比例和微分輸出
  39. if(abs(PID_e0) < 200) //如果溫度相差小于 1.5 度則計入 PID 積
  40. 分輸出
  41. {
  42. if(abs(PID_e0) > 100){ //如果溫度相差大于 1 度時積分累計限制
  43. if(PID_e_SUM > 100) PID_e_SUM = 100;
  44. if(PID_e_SUM < -100) PID_e_SUM = -100;
  45. }
  46. d_out = PID_ki * PID_e_SUM; //積分輸出
  47. if(PID_e0 < -5){ //當前溫度高于設定溫度 0.5 度時積分累
  48. 計限制
  49. if(PID_e_SUM > 150) PID_e_SUM = 150;
  50. if(PID_e_SUM > 0) d_out >>= 1; //當前溫度高于設定溫度 0.5 度時削弱積
  51. 分正輸出
  52. }
  53. PID_Out += d_out; //PID 比例 ,積分和微分輸出
  54. }
  55. else
  56. PID_e_SUM=0;
  57. PID_Out /= 100; //恢復被 PID_Out 系數放大的倍數
  58. if(PID_Out > 200) PID_Out=200;
  59. if(PID_Out<0) PID_Out=0;
  60. if(PID_e0 > 300) PID_Out=200; //當前溫度比設定溫度低 3 度則全速加熱
  61. if(PID_e0 < -20) PID_Out=0; //當前溫度高于設定溫度 0.2 度則關閉加

  62. Hot_T_Run = PID_Out; //加熱時間控制輸出
  63. // PID_e2 = PID_e1; //保存上次偏差
  64. PID_e1 = PID_e0; //保存當前偏差
  65. }
復制代碼

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:97678 發表于 2024-10-24 07:54 | 只看該作者
global_varible.h  這個文件可以提供嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区在线免费观看 | 久久久久无码国产精品一区 | 精品中文字幕久久 | 午夜专区 | a级片网站 | 91精品国产综合久久久久久首页 | 亚洲精品9999久久久久 | 成人免费视频网 | 欧产日产国产精品视频 | 久久看精品 | 亚洲免费精品 | 国产丝袜人妖cd露出 | 国产伦精品一区二区三区视频金莲 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 国产成人99av超碰超爽 | 在线看一区二区三区 | 午夜小视频在线观看 | 精品一区二区视频 | 欧美日韩亚洲系列 | 久久久久91 | 天天躁人人躁人人躁狂躁 | 美女黄色在线观看 | 97久久精品午夜一区二区 | 午夜视频网站 | 久久影音先锋 | 免费观看黄 | 国产精品久久久久久一区二区三区 | 午夜欧美 | 欧美黑人一区二区三区 | 欧美视频在线播放 | 国产情侣啪啪 | 国产日本精品视频 | 欧美国产一区二区 | 中文字幕一区在线 | 丁香色婷婷 | 激情91 | 免费视频久久 | 国产清纯白嫩初高生在线播放视频 | 精品影视| 精品福利一区二区三区 | 亚洲网视频 |