今天来讲一下如何使用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
//设置该引脚为复用输

本文介绍了如何使用STM32通过PWM信号驱动SG90舵机。在20ms的时基脉冲中,通过调整高电平时间在0.5ms至2.5ms之间,实现舵机0~180°的角度控制。每个0.5ms增量对应45°转动。提供了一段包含timer.c、timer.h和main.c的参考代码,实现TIM3的重映射到PB5引脚,便于实际操作。

96

被折叠的 条评论
为什么被折叠?



