以下文章來源于:公_眾_號開源電子網
讀取更多技術文章,請掃碼關注

你知道怎么用STM32控制舵機嗎?
本文我們來學習下如何使用STM32去控制舵機旋轉相應角度,
舵機介紹
舵機實質上可以看作一個伺服電機,它也有驅動電路、控制電路,只不過一般舵機作業范圍只旋轉一定的角度,最常見的就是180°的舵機,當然也有360°的舵機,這里只以180°舵機為例

圖1:SG90舵機
舵機內部結構
舵機主要由以下幾個部分組成,減速齒輪組、位置反饋電位計、直流電機、內部控制電路板

當直流電機接收到脈沖指令就會開始轉動,之后帶動減速齒輪組,減速齒輪組會帶動下方接的電位器,之后控制板讀取到電位器的信號變化,就可以知道當前舵機旋轉的角度,這樣就形成了一個倍訓回路,
舵機控制
舵機的控制一般需要一個20ms的脈寬調制(PWM)信號,該脈沖的高電平部分一般為0.5ms-2.5ms范圍相對應舵盤位置的0-180°,那么對應的控制關系如下:
0.5ms--------------0度
1.0ms--------------45度
1.5ms--------------90度
2.0ms--------------135度
2.5ms--------------180度
舵機與脈沖高電平時間關系動圖(周期20ms):

一般舵機有三根信號線

棕色表示GND,
紅色表示VCC,
橙色表示信號腳(即脈沖輸入引腳)
代碼實作
那我們知道了舵機的控制原理了,我們只需要使用STM32的定時器外設不斷輸出周期為20ms的脈沖信號,且控制高電平時間在0.5ms - 2.5ms之間即可控制舵機旋轉角度了,
本文將使用STM32F407,TIM8_CH1輸出脈沖控制舵機
CubeMX配置

這樣就配置好不斷輸出周期20ms脈沖信號了
代碼撰寫:

①啟動TIM8_CH1的脈沖輸出;
②在while里邊,每秒修改高電平持續時間
0.5ms對應0°,
1ms對應45°,
1.5ms對應90°,
2ms對應135°,
2.5ms對應180°,
這樣就大功告成了!!!大家有問題可以留言,或者留下你們想看的內容,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356155.html
標籤:其他
