PWM控制舵機
1 舵機簡介
伺服電機通常被稱為舵機,它是一種帶有輸出軸的小裝置。當(dāng)我們向伺服器發(fā)送一個控制信號時,輸出軸就可以轉(zhuǎn)到特定的位置。只要控制信號持續(xù)不變,伺服機構(gòu)就會保持軸的角度位置不改變。如果控制信號發(fā)生變化,輸出軸的位置也會相應(yīng)發(fā)生變化。日常生活中,舵機常被用于遙控飛機、遙控汽車、機器人等領(lǐng)域。
舵機在機器人領(lǐng)域非常有用。因為舵機有內(nèi)置的控制電路,它們的尺寸雖然很小,但輸出力夠大。像Futaba S-148這樣的標準舵機能提供 0.3牛/米的扭矩,相對于它的外形大小來說這已經(jīng)足夠強大了。同時,舵機消耗的能量與機械負荷成正比。因此,一個輕載的舵機系統(tǒng)不會消耗太多的能量。
2 舵機結(jié)構(gòu)
舵機主要由以下幾個部分組成:外殼、舵盤、直流電機、減速齒輪組、角度傳感器、控制驅(qū)動電路和接口線纜等。常見的舵機內(nèi)部結(jié)構(gòu)如下圖所示。
舵機的輸入有三根線,一般的中間的紅色線為電源正極,咖啡色線的為電源負極,黃色色線為控制線號線。
3 舵機控制
控制線用于傳輸角度控制信號。這個角度是由控制信號脈沖的持續(xù)時間決定的,這叫做脈沖編碼調(diào)制(PCM)。舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍,總間隔為2ms。脈沖的寬度將決定馬達轉(zhuǎn)動的距離。
例如:1.5毫秒的脈沖,電機將轉(zhuǎn)向90度的位置(通常稱為中立位置,對于180°舵機來說,就是90°位置)。如果脈沖寬度小于1.5毫秒,那么電機軸向朝向0度方向。如果脈沖寬度大于1.5毫秒,軸向就朝向180度方向。以180度舵機為例,對應(yīng)的控制關(guān)系是這樣的:
0.5ms | 0度 |
---|---|
1.0ms | 45度 |
1.5ms | 90度 |
2.0ms | 135度 |
2.5ms | 180度 |
4 任務(wù)實踐
通過按鍵控制舵機角度,當(dāng)KEY1按下后, 減少占空比,當(dāng)KEY2按下后,增加占空比,并在串口輸出此時的角度。
- PWM參數(shù)計算
PWM信號周期Period=20ms,采用STM32內(nèi)部8MHz的時鐘,計算可得(ARR+1)*(PSC+1)=160000,故可取ARR=199,PSC=799。舵機為0度時,高電平持續(xù)時間為0.5ms,即占空比Duty=0.025,則CCR初始值可以設(shè)為5.
PWM參數(shù)計算在STM32基礎(chǔ):定時器的PWM輸出功能中有詳細講解。
- 在CubeMX中配置PWM(采用定時器3通道1)、串口以及按鍵1和按鍵2對應(yīng)GPIO為中斷模式并使能.
在CubeMX中配置串口,在Keil中使用“Use MicroLIB”并在代碼中重定向printf函數(shù)的方法在STM32基礎(chǔ):定時器的定時計數(shù)功能有詳細講解。
在CubeMX中配置GPIO中斷并使能的方法已經(jīng)按鍵的相關(guān)操作在STM32基礎(chǔ):中斷系統(tǒng)中有詳細講解。
- 編寫代碼
/* 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步進值
/* 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 */
-
直流電機
+關(guān)注
關(guān)注
36文章
1710瀏覽量
70427 -
PWM
+關(guān)注
關(guān)注
114文章
5201瀏覽量
214963 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357770 -
伺服電機
+關(guān)注
關(guān)注
85文章
2060瀏覽量
58257 -
舵機
+關(guān)注
關(guān)注
17文章
282瀏覽量
41211
發(fā)布評論請先 登錄
相關(guān)推薦
電機控制基礎(chǔ)知識1—定時器基礎(chǔ)知識與PWM輸出原理
![電機<b class='flag-5'>控制</b><b class='flag-5'>基礎(chǔ)知識</b>1—定時器<b class='flag-5'>基礎(chǔ)知識</b>與<b class='flag-5'>PWM</b>輸出原理](https://file.elecfans.com//web2/M00/01/E5/poYBAGDKIj6Ac7_nAAC0P4eA0lg510.png)
STM32之 PWM控制舵機
定時器基礎(chǔ)知識與PWM輸出原理是什么
淺談定時器基礎(chǔ)知識與PWM輸出原理
![淺談定時器<b class='flag-5'>基礎(chǔ)知識</b>與<b class='flag-5'>PWM</b>輸出原理](https://file.elecfans.com/web1/M00/E7/6E/o4YBAGBikaiABT2BAAALX1FOKzg734.png)
STM32 CubeMX學(xué)習(xí):5. 其他PWM設(shè)備
![<b class='flag-5'>STM32</b> CubeMX學(xué)習(xí):5. 其他<b class='flag-5'>PWM</b>設(shè)備](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32—TIM3輸出PWM信號驅(qū)動MG996R舵機(按鍵控制)
![<b class='flag-5'>STM32</b>—TIM3輸出<b class='flag-5'>PWM</b>信號驅(qū)動MG996R<b class='flag-5'>舵機</b>(按鍵<b class='flag-5'>控制</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
電機控制基礎(chǔ)——定時器基礎(chǔ)知識與PWM輸出原理
![電機<b class='flag-5'>控制</b>基礎(chǔ)——定時器<b class='flag-5'>基礎(chǔ)知識</b>與<b class='flag-5'>PWM</b>輸出原理](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32控制舵機的方法及實例
![<b class='flag-5'>STM32</b><b class='flag-5'>控制</b><b class='flag-5'>舵機</b>的方法及實例](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【K210+micropython】PWM信號控制舵機
![【K210+micropython】<b class='flag-5'>PWM</b>信號<b class='flag-5'>控制</b><b class='flag-5'>舵機</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論