亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: stm32 +mpu6050dmo數據處理+PID180°舵機控制,不是很完善,僅供參考 [打印本頁]

作者: king_zxt    時間: 2018-4-23 15:12
標題: stm32 +mpu6050dmo數據處理+PID180°舵機控制,不是很完善,僅供參考
http://new-play.tudou.com/v/889752316.html?spm=a2hzp.8244740.0.0

主函數
  1. int main(void)
  2. {         
  3.         delay_init();                     //延時函數初始化         
  4.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  5.         uart_init(115200);                 //串口初始化為115200
  6.          IIC_Init();

  7.                 TIM3_PWM_Init(19999,71);        //PA6,PA7 PWM 舵機輸出 20ms
  8.           PWMA=1600;
  9.           PWMB=1600;
  10.                  delay_ms(500);
  11.           MPU6050_initialize();     //=====MPU6050初始化        
  12.     DMP_Init();  
  13. //                 Init_HMC5883();
  14.                  TIM2_Getsample_Int(4999,71);                //5ms定時中斷

  15.         while(1)
  16.         {

  17. delay_ms(50);


  18. ///////////////////////////////////////////////////////
  19.         }
  20. }
復制代碼
PID計算
  1. int MPU6050_PID(float pitch,float Target)
  2. {  
  3.                  static float  kp=66,kd=-20,Ki=0.04;
  4.                 static float LastError,SumError;
  5.                 float Error,dError;
  6.           int PWM;
  7.                 char flag;
  8. //求偏差
  9.                 Error = pitch-Target;       //
  10.                 printf("\n Error= %.2f \n",Error);
  11. //積分
  12.         SumError+=Error;
  13.                 //積分限幅
  14.                 if(SumError>500) SumError=500;
  15.                 else if(SumError<-500) SumError=-500;
  16.                 //積分分離
  17.                 if(fAbs(Error)<3)        flag=1;
  18.                 else flag=0;
  19. //微分
  20.         dError=LastError-Error;
  21.         LastError=Error;
  22. //計算PID        
  23.          PWM = kp*Error+kd*dError+flag*Ki*SumError;           //
  24.          return PWM/100;
  25. }
復制代碼


舵機PID控制.zip

452.93 KB, 下載次數: 322, 下載積分: 黑幣 -5


作者: king_zxt    時間: 2018-4-23 17:58
演示視頻http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
作者: 51sunny    時間: 2018-5-1 16:40
樓主可以分享一下整個源碼嗎 謝謝
作者: wyj841224    時間: 2018-5-2 17:18
謝謝,樓主。
作者: king_zxt    時間: 2018-5-3 21:23
51sunny 發表于 2018-5-1 16:40
樓主可以分享一下整個源碼嗎 謝謝

上面就是整個源碼了,燒進去就能用了
作者: zds1995    時間: 2018-5-4 15:27
多謝,樓主。
作者: zds1995    時間: 2018-5-4 15:32
樓主,PID那部分有完善一點的嗎,我測試只要有一點偏轉就會往一個方向轉的。qq:3506746761
作者: king_zxt    時間: 2018-5-5 00:14
zds1995 發表于 2018-5-4 15:32
樓主,PID那部分有完善一點的嗎,我測試只要有一點偏轉就會往一個方向轉的。qq:3506746761

我沒有去再改善,你可以嘗試的調一下參
作者: 蒼穹問道者    時間: 2019-2-5 20:39
不錯
666

作者: 黑明    時間: 2019-8-9 20:19
真的很感謝樓主
作者: 單片機混子    時間: 2019-8-23 15:21
使用了HMC5883??只用MPU6050和STM32該如何修改?
作者: 單片機混子    時間: 2019-9-3 17:29
這個程序中沒有用到HMC5583吧,我用的GY-25Z,為什么下載程序后串口調試助手上不顯示傾斜角度???
作者: 單片機混子    時間: 2019-9-3 17:31
我用的GY-25Z,下載程序后串口調試助手不隨傳感器的變化而變化,一直都是0.00怎么解決???
作者: 超神NK    時間: 2019-9-6 20:40
單片機混子 發表于 2019-8-23 15:21
使用了HMC5883??只用MPU6050和STM32該如何修改?

我看視頻樓主這個原理就跟控制平衡小車差不多,單軸就行,不需要航向角,剩下就是調PID參數
作者: zwh    時間: 2021-2-9 23:43
樓主你好,感謝你的分享,我看了你的代碼,有一個疑問:代碼用的應該是位置式pid算法,但是我看到計算PID輸出后,再加上了上次輸出的結果,請問是為什么呢。    Inc_PWM=MPU6050_PID(Pitch,0);
    Ver_PWM =Ver_PWM + Inc_PWM;
    if(Ver_PWM>500) Ver_PWM=500;
    if(Ver_PWM<-800) Ver_PWM=-800;
    PWMA=Amp_Limit(Ver_PWM+1600);




作者: king_zxt    時間: 2021-4-6 17:15
zwh 發表于 2021-2-9 23:43
樓主你好,感謝你的分享,我看了你的代碼,有一個疑問:代碼用的應該是位置式pid算法,但是我看到計算PID輸 ...

是位置式控制,結果加上上一次的輸出是根據舵機的控制原理來的,舵機要轉動的角度是相對上一次的
作者: fhhbmw1234    時間: 2021-11-1 11:21
Ver_PWM =Ver_PWM + Inc_PWM;
請問這句程序是什么意思呢,感謝樓主
作者: fhhbmw1234    時間: 2021-11-1 11:28
請問樓主是要在motor.c中實現產生PWM的么。就是用TIM_SetCompare2(TIM3, CompareValue);這個函數
作者: fhhbmw1234    時間: 2021-11-1 11:32
請問樓主PID的輸出PWM為什么要除以100呢
return PWM/100;
作者: fhhbmw1234    時間: 2021-11-1 11:58
king_zxt 發表于 2021-4-6 17:15
是位置式控制,結果加上上一次的輸出是根據舵機的控制原理來的,舵機要轉動的角度是相對上一次的

抱歉,還想問一下您 微分,積分時間怎么選擇的呢




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1