快速了解MG90S舵机

一、MG90S的简单了解

MG90S是一个360度舵机,本质上都是通过输出pwm波来控制的。不过与SG90舵机不同,此舵机只能控制转动的方向速度,并不能控制转动的角度!!!(本人因为看了错误的博客导致研究的半天如何控制角度。。。)

                        实物长这个样子

二、工作原理

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

脉冲周砌(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 填你需要设置的速度大小,这样你的舵机就能流利工作起来啦

### MG90S舵机工作原理详解 #### 1. 舵机概述 舵机是一种特殊的伺服电机,具有位置反馈机制,能够实现精确的角度控制[^3]。MG90S属于小型舵机,在模型制作、机器人等领域广泛应用。 #### 2. 结构组成 MG90S主要由以下几个部分构成: - **直流电动机**:提供动力源。 - **减速齿轮组**:降低转速并增大扭矩。 - **电位器**:用于检测当前角度位置。 - **控制系统电路板**:接收外部指令并通过调节电压来改变马达转动方向和速度。 #### 3. 控制方式 该型号舵机通常采用PWM(脉宽调制)信号来进行控制。输入端接受来自控制器发出的标准5V TTL逻辑电平的周期性方波脉冲宽度变化范围一般为0.5ms~2.5ms之间对应着不同的旋转角度区间(约0°至180°)[^4]。 当接收到特定占空比的PWM信号时, 内置微处理器会比较目标设定值与当前位置传感器所返回的数据差异大小从而决定下一步应该怎样调整输出给定子绕组上的电流强度以使最终能精准到达指定方位停止下来完成一次完整的闭环过程循环往复直至断开供电为止。 ```cpp // Arduino代码示例 - 控制MG90S舵机90度角 #include <Servo.h> Servo myservo; // 创建servo对象实例化myservo变量用来管理我们的舵机设备 void setup() { myservo.attach(9); // 将数字引脚9分配给舵机使用 } void loop() { myservo.write(90); // 告诉舵机去到90度的位置 } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A.K.M

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

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

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

打赏作者

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

抵扣说明:

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

余额充值