找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2761|回復(fù): 0
收起左側(cè)

51單片機(jī)霍爾電機(jī)PID調(diào)速程序-Proteus仿真

[復(fù)制鏈接]
ID:850067 發(fā)表于 2021-6-19 21:54 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.jpg
3.jpg
4.jpg
代碼太多放不下,請(qǐng)到附件下載后瀏覽,謝謝。。

單片機(jī)源程序如下:
  1. #include "pid.h"
  2. #include "huoer.h"

  3. extern times_A,times;
  4. float PID_M_Kp =0.1382, PID_M_Ki = 0.001, PID_M_Kd =0.01; //定義 Kp、Ki、Kd 三個(gè)參數(shù)
  5. float pid_Sv;
  6. u16 PID_m_add=0,pid_pwm;

  7. float PID_current_error; //當(dāng)前差值
  8. float PID_last_error; //上次差值
  9. float PID_prev_error; //上上次差值
  10. float integrality_date=0; //積分?jǐn)?shù)據(jù)

  11. void Motor(u16 std_speed)
  12. {
  13.                 float P,D;//,I;//,I,D; //定義局部變量
  14.           std_speed+=120;
  15.                 PID_prev_error=PID_last_error; //更新每次的差值
  16.                 PID_last_error=PID_current_error; //更新每次的差值
  17.                 PID_current_error=std_speed-times; //更新每次的差值
  18.           
  19.           integrality_date=integrality_date+PID_current_error;
  20.                 P=PID_M_Kp*PID_current_error; //比例 P 輸出公式
  21.          // I=PID_M_Ki*integrality_date; //積分 I 輸出公式
  22.     D=PID_M_Kd*(PID_current_error-PID_last_error); //微分 D 輸出公式
  23.        
  24.                 PID_m_add=P+D;//+I;//+I+D+PID_m_add; //電機(jī)的 PID 增量值輸
  25.        
  26.                 output_pwm(PID_m_add);
  27. }

  28. void output_pwm(u16 output)
  29. {
  30.         if(output>200)output=200; //限制電機(jī)的最大速度
  31.    if(output<1)output=1;
  32.            pid_pwm = output;
  33. }

  34. /*/////////////////
  35. 60   360
  36. 420  0


  37. /////////////////*/
復(fù)制代碼
51hei.png
所有資料51hei提供下載:
1602霍爾編碼電機(jī).zip (85.26 KB, 下載次數(shù): 213)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表