標(biāo)題: 通過三個(gè)按鍵PWM控制舵機(jī)程序 正點(diǎn)原子stm32 mini板 [打印本頁]

作者: liushuiwuqing    時(shí)間: 2017-9-30 19:30
標(biāo)題: 通過三個(gè)按鍵PWM控制舵機(jī)程序 正點(diǎn)原子stm32 mini板
我也來發(fā)一個(gè),正點(diǎn)原子stm32 mini板通過三個(gè)按鍵PWM控制舵機(jī)的程序。

根據(jù)工作原理,舵機(jī)的具體控制方法就是需要一個(gè)20ms左右的時(shí)基脈沖,
該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。
脈沖寬度從0.5ms~2.5ms,相對應(yīng)舵盤的位置為0~180度,呈線性變化。

***************一般舵機(jī)脈沖寬度20ms,高電平寬度與角度對應(yīng)關(guān)系***********
0.5ms————0度;
1.0ms————45度;
1.5ms————90度;
2.0ms————135度;
2.5ms————180度;

根據(jù)上面的原理,我們知道單片機(jī)只要產(chǎn)生20ms的脈沖信號(hào),通過改變高電平時(shí)間從0.5ms到2.5ms變化,就能使舵機(jī)轉(zhuǎn)動(dòng)到對應(yīng)的角度


單片機(jī)源程序如下:

  1. /*
  2.      此程序是從網(wǎng)上找到的,本人修改了下
  3.      程序小白,如有錯(cuò)誤,請見諒^_^      
  4. */


  5. #include "led.h"
  6. #include "delay.h"
  7. #include "sys.h"
  8. #include "pwm.h"
  9. #include "key.h"
  10. #define key1 PCin(5)
  11. #define key2 PAin(15)
  12. #define key3 PAin(0)       

  13. u16 cout;
  14. int main(void)
  15. {       
  16.           cout=1850;
  17.                 KEY_Init();
  18.                 delay_init();                            //延時(shí)函數(shù)初始化          
  19.                 LED_Init();                                    //初始化與LED連接的硬件接口
  20.                 TIM1_PWM_Init(1999,719);    //PWM頻率===(2000*720)/72000000=0.02=20ms
  21.            while(1)
  22.         {         
  23.       if(key3==0&&key1==0)   //key1按下,舵機(jī)緩慢正向轉(zhuǎn)動(dòng)
  24.                          {  
  25.                                  if(key1==0)
  26.                            {  
  27.                                          delay_ms(5);
  28.                              cout+=1;
  29.                                  }
  30.                                  
  31.          
  32.                          }
  33.                   else        if(key3==1&&key1==0)  //key1、key3同時(shí)按下,舵機(jī)加速轉(zhuǎn)動(dòng)
  34.                            {  
  35.                                          delay_ms(5);
  36.                              cout+=5;
  37.                                  }
  38.                       if(key1==1&&key2==1&&key3==0)    //舵機(jī)回到90度(起始位置)
  39.                                                 {  
  40.                                                         cout=1850;                
  41.                                                 }

  42.                         if(key3==0&&key2==0)      //key2按下,舵機(jī)緩慢反向轉(zhuǎn)動(dòng)
  43.                             {       
  44.                                                         delay_ms(5);
  45.                                 cout-=1;
  46.                                         }
  47.                         else        if(key3==1&&key2==0)   //key2、key3同時(shí)按下,舵機(jī)加速轉(zhuǎn)動(dòng)
  48.                            {  
  49.                                          delay_ms(5);
  50.                              cout-=5;          
  51.                                  }
  52.                                                                                
  53.               TIM_SetCompare1(TIM1,cout); //PWM輸出
  54.               delay_ms(50);

  55.        
  56.          
  57. }
  58.                          
  59. }
復(fù)制代碼

所有資料51hei提供下載:
PWM控制舵機(jī).rar (395.65 KB, 下載次數(shù): 498)



作者: 孤獨(dú)求敗    時(shí)間: 2018-4-26 22:15
收下了
作者: 一波三折    時(shí)間: 2018-5-13 16:04
謝謝樓主
作者: WJHBCCM    時(shí)間: 2018-5-18 09:26
謝謝樓主
作者: 老規(guī)矩    時(shí)間: 2018-10-1 15:08
感謝感謝
作者: h348463963    時(shí)間: 2019-3-8 15:42
謝謝樓主
作者: sa549236986    時(shí)間: 2019-5-11 20:08
請問樓主方不方便加個(gè)QQ 我有許多地方請教一下 就差個(gè)主程序不會(huì)編了

作者: sa549236986    時(shí)間: 2019-5-11 20:09
QQ是549236986
作者: JamesGordan    時(shí)間: 2019-6-15 20:57
高手  感謝
作者: 18239311863    時(shí)間: 2019-8-2 10:09
好資料。值得學(xué)習(xí)
作者: 4591314    時(shí)間: 2019-12-7 15:35
f4的板子可以用么?
作者: 委曲求全    時(shí)間: 2019-12-18 08:46
請問舵機(jī)用什么型號(hào)的

作者: fatee    時(shí)間: 2023-4-25 00:43
太棒了




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