前言
本文将带大家学习如何驱动舵机转向以及控制转向的角度值。
一、舵机简单介绍及接线方式
信号线(黄线)红线(电源线)棕色(地线)
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
二、cubeMX配置
前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。
电机的驱动引角接到了PA8所以将cuebMX配置如下:
三、代码解析
SG90.c
#include "SG90.h" extern TIM_HandleTypeDef htim1; /* 函数功能:舵机初始化 */ void SG90_Iint(void) { HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,50); } SG90.h /* 函数功能:舵机角度设置 angle:角度值 范围(0°~180°) */ void SG90_Set(int angle) { int PWM=10*angle/9+50; __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,PWM); }
#ifndef _SG90_H_ #define _SG90_H_ #include "main.h" #define u8 unsigned char #define u16 unsigned short #define u32 unsigned int void SG90_Iint(void); void SG90_Set(int angle); #endif
总结
本文简单介绍了舵机的使用方法,希望大家下去好好理解消化。