快速了解MG90S舵机

一、MG90S的简单了解

MG90S分为360度舵机和180度的两种,本质上都是通过输出pwm波来控制的。

本篇详细论述360度的舵机使用方法

360度的舵机只能控制转动的方向速度,并不能控制转动的角度!!!

                        实物长这个样子

二、工作原理

舵机的工作原理非常简单,就是通过单片机输出的pwm波来控制,舵机会根据信号的占空比来计算需要转动的角度,而mg90s(360度)是不能控制转动的角度,因此它的占空比是用来控制舵机转动的速度和方向。

脉冲周期(20ms)速度
0.5ms
1.0ms
1.5ms停止

2.0ms

2.5ms

1.5ms是一个分界线,方向会在再此发送改变,距离1.5ms这个阈值越近,舵机转动速度越慢,反之越快。但上限2.5ms 下限是0.5ms ,超过阈值舵机将不工作。

三、接线

由上面的实物图可以看到,舵机就三根线 分别是 黄、红、棕

黄线 -->pwm信号线(控制线)

红线-->VCC5v

棕线-->GND

四、初始化配置

我使用的是stm32f4的板子,以此为例

mg90s的基础配置

void MG90s_PWM_Init(u16 arr,u16 psc)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    TIM_OCInitTypeDef TIM_OCInitStruct;
    
    RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE );
    RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE );
    
    GPIO_PinAFConfig( GPIOA, GPIO_PinSource5, GPIO_AF_TIM2 );  //GPIOA5复用为定时器2
    
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_Init( GPIOA, &GPIO_InitStruct );
    
    TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStruct.TIM_Period = arr;
    TIM_TimeBaseInitStruct.TIM_Prescaler = psc;
    TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStruct );
    
    TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
    TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性低
    TIM_OC1Init( TIM2, &TIM_OCInitStruct );
    
    TIM_OC1PreloadConfig( TIM2, TIM_OCPreload_Enable );  //使能TIM2在CCR1上的预装载寄存器
    TIM_ARRPreloadConfig( TIM2,ENABLE );//ARPE使能
    TIM_Cmd( TIM2, ENABLE );  //使能TIM2

}

定时器初始化配置

我使用的是TIM2通用定时器。系统时钟为84MHZ 

MG90s_PWM_Init(200-1,8400-1); 

设置占空比

TIM_SetCompare1(TIM2,speed);

speed 填你需要设置的速度大小,这样你的舵机就能流利工作起来啦

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A.K.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值