一、舵機的“自白”
我(舵機)是一種位置(角度)伺服的驅動器,適用於那些需要角度不斷變化並可以保持的控制系統。
那麼問題來了?我們用舵機來幹嘛呢,當然是控制方向了,如今,基本上飛機或者智慧車又或是機器人等等都會用到舵機這個東西,所以說,認識舵機,並且運用舵機就成為我們必不可少的知識學習了,下面附圖:
圖 舵機的學習
舵機一般有三條線,一條接電源(5V即可),一條接地,最後一條接控制(即微控制器輸出的PWM控制),下面會給上具體實現程式碼,總的來說跟上一講區別不大,主要就是PWM週期輸出控制,利用 TIM_SetComparex() 函式來設定佔空比實現,但是多出的是計算問題,因為舵機有對應角度的時間計算,下面具體講解:
舵機的控制一般需要一個20ms左右的時基脈衝,該脈衝的高電平部分一般為0.5ms-2.5ms範圍內的角度控制脈衝部分,總間隔為2ms。以180度角度為例,的其控制關係是這樣的:
- 0.5ms--------------0度;
- 1.0ms------------45度;
- 1.5ms------------90度;
- 2.0ms-----------135度;
- 2.5ms-----------180度;
基本上,我們學生黨所需要的舵機的控制角度對應就是上述關係了,至於360度舵機這裡簡單提一下,主要是我這個舵機做不到(哈哈哈,這舵機180°的)
這裡講一下360°舵機的
- 0.5ms--------------0度;正向持續轉(最大速度)
- 1.5ms------------90度;停止轉動,速度無
- 2.5ms-----------180度;逆向持續轉(最大速度)
調整PWM週期即可改變轉動速度和方向。
二、舵機如何控制?
舵機的訊號線是做為輸入線就是接收PWM訊號(定時器產生)。
一般PWM的週期是20ms,那麼對應的頻率是50hz。那麼改變不同的佔空比就可以控制轉動的角度。其中佔空比從0.5-2.5ms(如果佔空比大於2.5ms也只會在最大角度。),相對應的舵盤位置為0-180度,呈線性變化。
給它提供一定的脈寬,它的輸出軸就會保持一定對應角度上,無論外界轉矩怎麼改變(只要目標不變就維持在這個角度類似PID自動控制演算法),直到給它提供一個另外寬度的脈衝訊號,它才會改變輸出角度到新的對應位置上如所求。
舵機內部有一個基準電路,產生週期為20ms,寬度1.5ms的基準訊號,有一個比較器,將外加訊號與基準訊號相比較,判斷出方向和大小,從而生產電機的轉動訊號。由此可見,舵機是一種位置伺服驅動器,轉動範圍不能超過180度,適用於那些需要不斷變化並可以保持的驅動器中,比如說機器人的關節、飛機的舵面等。
二、常見的舵機
SG90s
參考文章:
1. <STM32f1之舵機驅動+轉動角度調整(含主程式碼和計算)>:https://blog.csdn.net/weixin_45930808/article/details/119117499