STM32 HAL庫控制数字舵機

2021-09-29 11:42:15 字數 1095 閱讀 4178

數字舵機一般比較貴,數字舵機與模擬舵機的區別是前者在得到相應的脈衝後,會很清脆的到達固定的角度,不會產生異響;而模擬舵機則會在到達固定角度後抖動。

數字舵機大多是是依靠pwm進行控制,舵機乙個週期是20ms,給定固定占空比,則會轉到相應的角度;例如讓舵機轉到90度的位置,那麼20ms的週期內就是讓低電平佔1.5ms,這樣就控制了舵機轉到90度。對應如下表:

所以我們的方法就是使用stm32微控制器的定時器輸出週期為20ms的pwm波,通過更改占空比值實現舵機的角度控制。通過上表可以得到乙個公式:一度的占空比 = 1 / 90 * 角度 + 0.5

這裡我使用stm32f407ve,配置定時器3和pwm通道1,配置如下:

定時器3的時鐘主頻是84m,這裡我分8400頻(8399+1),計數值200(199+1),

所得到的定時週期時間就是:200 * 8400 / 84000000 = 0.02s = 20ms

pwm的頻率就是:84000000 / (200 * 8400) = 50hz

按照以上配置計算,那麼上面的公式就要擴大十倍,變為:一度的占空比 = 1 / 90 * 角度 + 5

轉為**就是:

// angle:角度值,0~180

void

servo_control

(uint16_t angle)

通過該函式,就可以很方便的控制数字舵機轉動了!

注意:

stm32cubemx生成的**不是使能定時器,所以需要你手動新增下面一行**使能定時器:

STM32 HAL庫學習筆記

1 系統時鐘 一般用stm32cube生成,使用者只需要會用stm32cube就行。2 gpio輸出void led gpio config void 3 gpio輸入void key gpio config void 4 外部中斷void exti key config void void ext...

STM32 HAL庫學習筆記

1 普通函式與 函式的區別 對普通函式的呼叫 呼叫程式發出對普通函式的呼叫後,程式執行立即轉向被呼叫函式執行,直到被呼叫函式執行完畢後,再返 用程式繼續執行。從發出呼叫的程式的角度看,這個過程為 呼叫 等待被呼叫函式執行完畢 繼續執行 對 函式呼叫 呼叫程式發出對 函式的呼叫後,不等函式執行完畢,立...

STM32 HAL庫 韌體庫 公升級

1 使用官方提供的新功能。2 上個版本有bug,下個版本bug解決了的情況是可能的。不過,上個版本沒bug,下個版本有bug的情況是有的 微小概率事件 開啟 stm32h7xx.h ctrl f搜尋 version 1 通過官網獲取最新hal庫 1 2keil官網經常會卡著顯示不了後續內容,這時可以...