標(biāo)題: stm32使用L298N控制直流電機(jī) PID [打印本頁]

作者: Wu_g_s    時間: 2021-1-9 10:03
標(biāo)題: stm32使用L298N控制直流電機(jī) PID
  1. 利用PID控制直流編碼電機(jī)
  2. 直流電機(jī)帶光電編碼器。

  3. 單片機(jī)源程序如下:
  4. #include "delay.h"
  5. #include "stm32f10x.h"
  6. #include "sys.h"
  7. #include "timer.h"
  8. #include "usart.h"
  9. #include "encoder.h"
  10. #include "oled.h"
  11. #include "pwm.h"
  12. #include "control.h"
  13. #include "led.h"
  14. #include "key.h"

  15. extern int Target_velocity;
  16. extern u16  Encoder;             //左右編碼器的脈沖計數(shù)
  17. extern u16  Moto1;                 //電機(jī)PWM變量

  18. u8 t=0;         
  19. float speed;

  20. int main(void)
  21. {               
  22.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級分組2
  23.   
  24.         delay_init();                     //延時函數(shù)初始化         
  25.         KEY_Init();                  //初始化與按鍵連接的硬件接口
  26.         OLED_Init();
  27.         uart_init(9600);                    //=====串口初始化
  28.   Encoder_Init_TIM2();            //=====編碼器接口
  29.       
  30.         TIM3_Int_Init(99,7199);          //10ms
  31.       
  32.         IN2=1;
  33.   IN1=0;
  34.       

  35.         LED_Init();                          //初始化與LED連接的硬件接口
  36.       
  37.         TIM1_PWM_Init(7199,0);//不分頻。PWM頻率=72000/(899+1)=80Khz

  38.     while(1)
  39.            {
  40.                         
  41.                          speed = Encoder*100/4/13/30;           
  42.                          printf("speed:%0.2f rad/s\r\n",speed); //x100/4/13/30 //13線  30減速比  4分頻
  43.                         
  44.                          OLED_ShowString(0,0,"speed:",16);
  45.                    OLED_ShowNum( 16,0,speed,3,16);
  46.                    OLED_ShowString(48,0,"rad/s",16);
  47.                    OLED_Refresh_Gram();//更新顯示到OLED                          
  48.                         
  49.                        
  50.                         t=KEY_Scan(0);                //得到鍵值
  51.                         switch(t)
  52.                         {                                 
  53.                                 case KEY0_PRES:  Target_velocity++;  break;
  54.                                 case KEY1_PRES:  Target_velocity--;  break;
  55.                                 default:                        delay_ms(10);      
  56.                         }                        
  57.                 }
  58. }                 
復(fù)制代碼



作者: admin    時間: 2021-1-9 15:37
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者: forest-float    時間: 2021-1-14 14:38
這個就有點和標(biāo)題不符合了吧,就一個主函數(shù),什么算法,電路圖都沒有




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