一、舵機的控制原理
舵機通過接收PWM信號,使其進入內部電路產生一個偏置電壓,觸發電機通過減速齒輪帶動電位器移動,使電壓差為零時,電機停轉,從而達到伺服的效果,即給舵機一個特定的PWM信號,舵機旋轉到特定角度,
舵機的控制,需要一個20ms的時基脈沖,控制高電平時間為0.5ms~2.5ms范圍內即可控制舵機在0 ~ 180°轉動,
t=0.5ms---------------舵機轉動到0°
t=1.0ms---------------舵機轉動到45°
t=1.5ms---------------舵機轉動到90°
t=2.0ms---------------舵機轉動到135°
t=2.5ms---------------舵機轉動到180
二、舵機的連線
舵機上有三根線,分別是GND(棕色線)、VCC(紅色線)和SIG(黃色線),也就是地線、電源線和信號線
三、stm32CubeMx界面配置
1.定時器配置

2.代碼實作
/* USER CODE BEGIN 0 */
// angle:角度值,0~180
void Servo_Control(uint16_t angle)
{
float temp;
temp =(1.0 / 9.0) * angle + 5.0; //占空比值 = 1/9 * 角度 + 5
__HAL_TIM_SET_COMPARE(&htim5, TIM_CHANNEL_2, (uint16_t )temp);
}
/* USER CODE END 0 */
3.在main中打開對應定時器通道(特別重要)
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
/* USER CODE END 2 */
4.利用函式實作任意角度控制
while (1)
{
Servo_Control(200);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
四、總結
所有舵機的控制原理都一樣,能控制一個,其他的無論模擬,數字都可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293816.html
標籤:其他
下一篇:MQTT訊息介紹
