今天学习了有关SG90舵机的相关内容,基于STM32F103ZET6芯片写了该舵机的驱动程序。供大家参考。
1. SG90的相关知识:
SG90舵机旋转的角度是180°。 舵机的控制一般需要一个20ms的脉宽调制(PWM)信号,该脉冲的高电平部分一般为0.5ms-2.5ms范围相对应舵盘位置的0-180°
0.5ms--------------0度
1.0ms--------------45度
1.5ms--------------90度
2.0ms--------------135度
2.5ms--------------180度
2. SG90接线
SG90分别有三根线。棕色,红色,橙色
棕色接地(GND)
红色接电源(+5V)。(我试过接3.3v,舵机并没有转动,但是会发生嗡嗡的声响)
橙色接输出PWM信号的引脚
3. GPIO初始代码
我使用的是TIM1的通道1来控制舵机的。TIM1通道1对应的GPIO是PA8
//GPIO初始化
static void advanceTime_GPIO_Config(void)
{
//开启时钟
RCC_TIMEGPIO_CMD(RCC_TIMEGPIO,ENABLE);
//配置GPIO结构体
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = TIME1_GPIO_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TIME1_GPIO, &GPIO_InitStruct);
}
//GPIO相关宏定义
#define RCC_TIMEGPIO_CMD RCC_APB2PeriphClockCmd
#define RCC_TIMEGPIO RCC_APB2Periph_GPIOA