今天来讲一下如何使用STM32来驱动SG90舵机
舵机:舵机是一种位置(角度)伺服的驱动器,适用那些需要角度不断变化并可以保持的控制系统。舵机只是一种通俗的叫法,其实质是一个伺服马达。
驱动SG90舵机的方法也很简单,利用单片机输出一个PWM信号,一个20ms的时基脉冲,控制高电平时间为0.5ms~2.5ms范围内即可控制舵机在0 ~ 180°转动。从t = 0.5ms开始每增加0.5ms舵机转动角度增加45°。
以下是PWM信号高电平时间和舵机转动角度的关系对应:
t = 0.5ms -------------> 0°
t = 1.0ms -------------> 45°
t = 1.5ms -------------> 90°
t = 2.0ms -------------> 135°
t = 2.5ms -------------> 180°
参考代码如下:
timer.c
//designed by HIT TDD
#include "timer.h"
void TIM3_PWM_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //初始化定时器
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5
//设置该引脚为复用输