PWM控制舵機(jī)
1 舵機(jī)簡介
伺服電機(jī)通常被稱為舵機(jī),它是一種帶有輸出軸的小裝置。當(dāng)我們向伺服器發(fā)送一個控制信號時,輸出軸就可以轉(zhuǎn)到特定的位置。只要控制信號持續(xù)不變,伺服機(jī)構(gòu)就會保持軸的角度位置不改變。如果控制信號發(fā)生變化,輸出軸的位置也會相應(yīng)發(fā)生變化。日常生活中,舵機(jī)常被用于遙控飛機(jī)、遙控汽車、機(jī)器人等領(lǐng)域。
舵機(jī)在機(jī)器人領(lǐng)域非常有用。因為舵機(jī)有內(nèi)置的控制電路,它們的尺寸雖然很小,但輸出力夠大。像Futaba S-148這樣的標(biāo)準(zhǔn)舵機(jī)能提供 0.3牛/米的扭矩,相對于它的外形大小來說這已經(jīng)足夠強(qiáng)大了。同時,舵機(jī)消耗的能量與機(jī)械負(fù)荷成正比。因此,一個輕載的舵機(jī)系統(tǒng)不會消耗太多的能量。
2 舵機(jī)結(jié)構(gòu)
舵機(jī)主要由以下幾個部分組成:外殼、舵盤、直流電機(jī)、減速齒輪組、角度傳感器、控制驅(qū)動電路和接口線纜等。常見的舵機(jī)內(nèi)部結(jié)構(gòu)如下圖所示。
舵機(jī)的輸入有三根線,一般的中間的紅色線為電源正極,咖啡色線的為電源負(fù)極,黃色色線為控制線號線。
3 舵機(jī)控制
控制線用于傳輸角度控制信號。這個角度是由控制信號脈沖的持續(xù)時間決定的,這叫做脈沖編碼調(diào)制(PCM)。舵機(jī)的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍,總間隔為2ms。脈沖的寬度將決定馬達(dá)轉(zhuǎn)動的距離。
例如:1.5毫秒的脈沖,電機(jī)將轉(zhuǎn)向90度的位置(通常稱為中立位置,對于180°舵機(jī)來說,就是90°位置)。如果脈沖寬度小于1.5毫秒,那么電機(jī)軸向朝向0度方向。如果脈沖寬度大于1.5毫秒,軸向就朝向180度方向。以180度舵機(jī)為例,對應(yīng)的控制關(guān)系是這樣的:
0.5ms | 0度 |
---|---|
1.0ms | 45度 |
1.5ms | 90度 |
2.0ms | 135度 |
2.5ms | 180度 |
4 任務(wù)實踐
通過按鍵控制舵機(jī)角度,當(dāng)KEY1按下后, 減少占空比,當(dāng)KEY2按下后,增加占空比,并在串口輸出此時的角度。
- PWM參數(shù)計算
PWM信號周期Period=20ms,采用STM32內(nèi)部8MHz的時鐘,計算可得(ARR+1)*(PSC+1)=160000,故可取ARR=199,PSC=799。舵機(jī)為0度時,高電平持續(xù)時間為0.5ms,即占空比Duty=0.025,則CCR初始值可以設(shè)為5.
PWM參數(shù)計算在STM32基礎(chǔ):定時器的PWM輸出功能中有詳細(xì)講解。
- 在CubeMX中配置PWM(采用定時器3通道1)、串口以及按鍵1和按鍵2對應(yīng)GPIO為中斷模式并使能.
在CubeMX中配置串口,在Keil中使用“Use MicroLIB”并在代碼中重定向printf函數(shù)的方法在STM32基礎(chǔ):定時器的定時計數(shù)功能有詳細(xì)講解。
在CubeMX中配置GPIO中斷并使能的方法已經(jīng)按鍵的相關(guān)操作在STM32基礎(chǔ):中斷系統(tǒng)中有詳細(xì)講解。
- 編寫代碼
/* USER CODE BEGIN PD */
#define CCR_MAX 25 // CCR最大值
/* USER CODE END PD */
/* USER CODE BEGIN PV */
uint16_t CCR = 5; // CCR初始值
uint16_t Step = 5; // CCR步進(jìn)值
/* USER CODE END PV */
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY1_Pin)
{
(CCR >= CCR_MAX) ? (CCR = 5) : (CCR += Step);
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, CCR);
printf("Sigle = %d", (CCR/5 - 1)*45);
HAL_Delay(200);
}
else if (GPIO_Pin == KEY2_Pin)
{
(CCR <= 5) ? (CCR = CCR_MAX) : (CCR -= Step);
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, CCR);
printf("Sigle = %d", (CCR/5 - 1)*45);
HAL_Delay(200);
}
}
/* USER CODE END 4 */
-
直流電機(jī)
+關(guān)注
關(guān)注
36文章
1733瀏覽量
71368 -
PWM
+關(guān)注
關(guān)注
116文章
5364瀏覽量
217943 -
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362200 -
伺服電機(jī)
+關(guān)注
關(guān)注
87文章
2100瀏覽量
59116 -
舵機(jī)
+關(guān)注
關(guān)注
17文章
292瀏覽量
41677
發(fā)布評論請先 登錄
電機(jī)控制基礎(chǔ)知識1—定時器基礎(chǔ)知識與PWM輸出原理

STM32之 PWM控制舵機(jī)
如何利用PWM信號去控制舵機(jī)呢
定時器基礎(chǔ)知識與PWM輸出原理是什么
STM32 CubeMX學(xué)習(xí):5. 其他PWM設(shè)備

STM32—TIM3輸出PWM信號驅(qū)動MG996R舵機(jī)(按鍵控制)

電機(jī)控制基礎(chǔ)——定時器基礎(chǔ)知識與PWM輸出原理

STM32控制舵機(jī)講解,從入門到放棄。

STM32控制舵機(jī)的方法及實例

【K210+micropython】PWM信號控制舵機(jī)

評論