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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32電機PID算法實現程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:574745 發表于 2019-6-29 20:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
增量式PID的算法實現,帶詳細注釋

單片機源程序如下:
  1. #include "control.h"       
  2. int Target_velocity=1;  //設定速度控制的目標速度為50個脈沖每10ms
  3. int TIM3_IRQHandler(void)  
  4. {   
  5.         if(TIM3->SR&0X0001)//10ms定時中斷
  6.         {   
  7.                   TIM3->SR&=~(1<<0);                                       //===清除定時器1中斷標志位                 
  8.                   Encoder=Read_Encoder(2);                                 //===讀取編碼器的值,M法測速,輸出為每10ms的脈沖數
  9. //                  Led_Flash(100);                                          //===LED閃爍;指示單片機正常運行       
  10.                   Motor=Incremental_PI(Encoder*100,Target_velocity);           //===速度PI控制器
  11.                   Xianfu_Pwm();                                            //===PWM限幅
  12.             Set_Pwm(Motor);                                          //===賦值給PWM寄存器  
  13.         }              
  14.          return 0;          
  15. }

  16. /**************************************************************************
  17. 函數功能:賦值給PWM寄存器
  18. 入口參數:PWM
  19. 返回  值:無
  20. **************************************************************************/
  21. void Set_Pwm(int motor)
  22. {
  23.                         if(motor>0)                        AIN2=1,                        AIN1=0;
  24.                         else                   AIN2=0,                        AIN1=1;
  25.                         PWMA=myabs(motor);
  26. }

  27. /**************************************************************************
  28. 函數功能:限制PWM賦值
  29. 入口參數:無
  30. 返回  值:無
  31. **************************************************************************/
  32. void Xianfu_Pwm(void)
  33. {       
  34.           int Amplitude=7100;    //===PWM滿幅是7200 限制在7100
  35.     if(Motor<-Amplitude) Motor=-Amplitude;       
  36.                 if(Motor>Amplitude)  Motor=Amplitude;       
  37. }

  38. /**************************************************************************
  39. 函數功能:絕對值函數
  40. 入口參數:int
  41. 返回  值:unsigned int
  42. **************************************************************************/
  43. int myabs(int a)
  44. {                   
  45.           int temp;
  46.                 if(a<0)  temp=-a;  
  47.           else temp=a;
  48.           return temp;
  49. }
  50. /**************************************************************************
  51. 函數功能:增量PI控制器
  52. 入口參數:編碼器測量值,目標速度
  53. 返回  值:電機PWM
  54. 根據增量式離散PID公式
  55. pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]
  56. e(k)代表本次偏差
  57. e(k-1)代表上一次的偏差  以此類推
  58. pwm代表增量輸出
  59. 在我們的速度控制閉環系統里面,只使用PI控制
  60. pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)
  61. **************************************************************************/
  62. int Incremental_PI (int Encoder,int Target)
  63. {        
  64.    float Kp=20,Ki=30;       
  65.          static int Bias,Pwm,Last_bias;
  66.          Bias=Encoder-Target;                //計算偏差
  67.          Pwm+=Kp*(Bias-Last_bias)+Ki*Bias;   //增量式PI控制器
  68.          Last_bias=Bias;                           //保存上一次偏差
  69.          return Pwm;                         //增量輸出
  70. }
復制代碼

所有資料51hei提供下載:
電機速度閉環控制V1.7z (188.4 KB, 下載次數: 330)



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

使用道具 舉報

沙發
ID:574843 發表于 2019-6-30 00:04 | 只看該作者
樓主厲害
回復

使用道具 舉報

板凳
ID:13442 發表于 2019-6-30 08:11 | 只看該作者
      謝謝分享
回復

使用道具 舉報

地板
ID:463265 發表于 2019-7-1 16:53 | 只看該作者
這個真的厲害了
回復

使用道具 舉報

5#
ID:83422 發表于 2019-7-2 14:16 | 只看該作者
謝謝分享,比較典型的pi調節方式
回復

使用道具 舉報

6#
ID:423971 發表于 2020-4-16 23:25 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

7#
ID:811987 發表于 2021-7-24 16:44 | 只看該作者
這個源碼好像沒有設置電機的目標速度具體是多少,請問應該怎么去寫呢?
回復

使用道具 舉報

8#
ID:745413 發表于 2021-7-28 19:25 | 只看該作者
FEAramd 發表于 2021-7-24 16:44
這個源碼好像沒有設置電機的目標速度具體是多少,請問應該怎么去寫呢?

同問
回復

使用道具 舉報

9#
ID:604514 發表于 2021-8-3 16:52 | 只看該作者
這個電機是什么電機?
回復

使用道具 舉報

10#
ID:959454 發表于 2021-8-8 11:11 | 只看該作者
這個是步進電機吧?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九看片| 久久久一| 91九色porny首页最多播放 | 色性av | 人人艹人人爽 | 精品91久久| 国产精品久久久久久久久久 | 特黄级国产片 | 国产精品入口久久 | 久久只有精品 | 99久久久久久99国产精品免 | 亚洲视频三 | 久久99久久久久 | 免费看国产片在线观看 | 69av片| 一区二区三区日韩 | 91久久久久久久 | 日韩中文字幕 | 超碰8| 做a视频 | 亚洲视频区 | 国产精品免费在线 | 91精品国模一区二区三区 | 国产精品一区二区久久 | 欧美一级二级视频 | 国产婷婷 | 久久国产一区二区三区 | 成人在线中文字幕 | 久久成人一区 | 亚洲综合一区二区三区 | 国产精品久久久久9999鸭 | 久久久国产一区二区三区 | 日韩精品一区二区三区免费视频 | 一级做a爰片性色毛片视频停止 | 一区二区免费在线 | 欧美中文字幕在线观看 | 91看片免费版 | 综合久久久 | 国产日产精品一区二区三区四区 | 插插插干干干 | 国产乱码精品一品二品 |