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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32倒立擺平衡源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:514559 發表于 2019-7-26 13:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. #include "stm32f10x.h"
  2. #include "led.h"
  3. #include "delay.h"
  4. #include "usart1.h"
  5. #include "135.h"
  6. #include "time.h"
  7. #include "moto.h"
  8. #include "adc.h"
  9. #include "PID.h"
  10. #include "inv_mpu.h"
  11. #include "inv_mpu_dmp_motion_driver.h"
  12. #include "mpu6050.h"

  13. /*使用的資源      老王2017/7/13   --倒立擺
  14. 串口1:TX--PA9    RX--PA10
  15. key:PE0 ~ 9  上拉輸入
  16. LED: PD8 9 10    推挽輸出
  17. OLED: 3.3v  
  18. D0(SCLK)--PC0 | D1(SDIN)--PC1 | RST--PG15 | DS-- PD3| CS--PD6 | RST--PG15
  19. 角度傳感器:PB0
  20. */


  21. //#define zero_angle  3195
  22. #define ok_angle 230//倒立時候的傳感器的值
  23. //#define task2_start_angle  1250  

  24. vu16 len=0;//串口1接收數據的長度
  25. u8 task_flag=0;

  26. extern int pwm;
  27. extern int flag;
  28. extern int number;

  29. short aacx,aacy,aacz;                   //加速度傳感器原始數據 --三軸加速度
  30. short gyrox,gyroy,gyroz;         //陀螺儀原始數據       --三軸角速度
  31. float pitch,roll,yaw;            //歐拉角 x z y  

  32. int adc_result;
  33. u8 dis_flag=0;


  34. void Init(void)  // 初始化函數
  35. {
  36.        
  37.        
  38.   delay_init();
  39.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);         //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  40.         LED_Init();       
  41.         adc_config();        //傳感器        
  42.         DC_motor_init();
  43.   DC_Set_Pwm (0);
  44.         time5_Init(9999,71); //1ms控制
  45.   time4_Init(9999,71); //1ms控制               
  46.         LocPIDInit(); //位移式PID初始化
  47.         LocPIDSet(ok_angle);//設定初值
  48.         uart_init(112500);
  49.         time3_PWM_Init(5000,71);         //不分頻。PWM頻率=72000000/900=80Khz   越大卻快(370-899)
  50. }

  51. int main()
  52. {        
  53.         Init();               

  54.         while(1)
  55.         {
  56.                 int pwm;
  57.                 int right,left;
  58.                 int dig_right,dig_left;
  59.                
  60.                  right=ok_angle+50;
  61.                  left=ok_angle-50;
  62.                  dig_right=ok_angle+500;
  63.                  dig_left=ok_angle-2000;
  64.                  adc_result =  Get_Adc();
  65.                
  66.                 if(adc_result>=dig_left && adc_result<=dig_right )
  67.           {
  68.                  LocP_I_D_Set(10,0,10);  //PID參數的賦予                       
  69.      pwm=LocPIDCalc(adc_result);                       
  70.                  DC_Set_Pwm(pwm);                               
  71.     if(pwm>999) pwm=999;
  72.    else if(pwm<-999) pwm=-999;               
  73.                 }

  74.                  if(adc_result>=left&& adc_result<=right) DC_Set_Pwm(0);   //降低靈敏性       
  75.            if(adc_result>dig_right&& adc_result<4100)   DC_Set_Pwm(0);
  76.            else if(adc_result<dig_left)   DC_Set_Pwm(0);
  77.      printf("pwm==%d\r",pwm);
  78.      printf("    adc==%d\r\n",adc_result);
  79.   }

  80.        
  81. /*void renwu_2(void)
  82. {
  83.                 
  84.   while(1)
  85.         {
  86.        
  87.     int right,left;
  88.                 int dig_right,dig_left;
  89.                
  90.                 right=ok_angle+5;
  91.                 left=ok_angle-5;
  92.                 dig_right=ok_angle+330;
  93.                 dig_left=ok_angle-330;
  94.                 adc_result =  Get_Adc();
  95.        
  96.                 if((adc_result>0&&adc_result<dig_left)||(adc_result>dig_right&&adc_result<4100))
  97.                 {       
  98.                  TIM_Cmd(TIM4, ENABLE);  //使能TIM4       
  99.      if(flag==1)                        DC_Set_Pwm(610);                  
  100.                  else if(flag==2)   DC_Set_Pwm(-610);
  101.      }                            
  102.            else if(adc_result>=dig_left && adc_result<=dig_right )
  103.            {
  104.                   TIM_Cmd(TIM4, DISABLE);  //關閉TIM4       
  105.                   number=0;
  106.                         flag=0;
  107.                   LocP_I_D_Set(20,2.1,80);  //PID參數的賦予
  108.       pwm=LocPIDCalc(adc_result);                       
  109.                   DC_Set_Pwm(pwm);               
  110.       if(pwm>899) pwm=899;
  111.             else if(pwm<-899) pwm=-899;                               
  112.                   if(adc_result>=left&& adc_result<=right) DC_Set_Pwm(0);   //降低靈敏性       
  113.                  }
  114.       printf("adc==%d\r\n",adc_result);
  115.                 }   
  116. }*/
  117. }
復制代碼


倒立擺.7z

231.61 KB, 下載次數: 9, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:514559 發表于 2019-7-26 13:14 | 只看該作者
謝謝謝謝
回復

使用道具 舉報

板凳
ID:1 發表于 2019-7-27 00:38 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费v片| 久久不卡 | 亚洲人在线观看视频 | 日本视频免费观看 | 国产精品一区2区 | 黑人中文字幕一区二区三区 | 亚洲精品av在线 | 国产成人福利视频 | 亚洲免费观看视频 | 久久激情av | 中文字幕视频在线免费 | 亚洲人人| 久久久久国产一区二区三区 | 999久久久免费精品国产 | 国产精品视频网 | 日日噜噜噜夜夜爽爽狠狠视频, | 乱一性一乱一交一视频a∨ 色爱av | 大学生a级毛片免费视频 | 久在线精品视频 | 亚洲一区在线日韩在线深爱 | 久久99精品久久久久久琪琪 | 久久久久久久一区 | 欧美a区 | 国产综合在线视频 | 亚洲五码在线 | 一二三区在线 | 成人精品一区亚洲午夜久久久 | 黄网站在线观看 | 99热国产免费 | 日本高清视频在线播放 | 欧美精品一区二区三区在线播放 | 国产a视频 | 天堂久久天堂综合色 | 国产成人艳妇aa视频在线 | 亚洲一区 | 91xxx在线观看 | 亚洲视频在线免费观看 | 国产精品欧美一区二区三区不卡 | 精品国产91乱码一区二区三区 | 国产欧美精品 | 91精品在线播放 |