首页 > 行业资讯 >定制驱动模组
TECHNICAL SUPPORT

MG90S舵机控制程序怎么写?从PWM到角度,手把手教你搞定

发布时间: 2026-05-24

一款微型9克舵机是MG90S,其在航模项目里极其常见,它在小型机器人项目中也极其常见,它在机械臂等项目中同样极其常见。很多初学者把舵机拿到手后,最头痛的问题便是:“控制程序究竟要怎么去写?”,还有:“为何我怎么转动都转动不到相应位置?”。

本文会从硬件接线开始,讲述PWM信号原理,以为例进行代码实现,接着阐述角度计算,再到常见故障排查,一次性将MG90S舵机的控制程序讲解透彻,使得你看过之后就能直接上手操作。

01MG90S舵机核心参数(先确认)

在着手编写程序以前,要知晓MG90S的工作特性,不然的话程序将会彻底无效,失灵。

工作时的电压范围是,从4.8V开始,直至6.0V,其中推荐采用5V来进行供电

有这样一种信号,它被称作控制信号,这种控制信号呈现为PWM,也就是脉冲宽度调制的形式,其具备的频率是50Hz,而50Hz所对应的周期为20ms

控制线路的颜色,是橙色伟创动力,此橙色用于信号线部分,红色部分,它是电源正极所对应的颜色,棕色部分,则是电源负极所对应的颜色。

角度所涵盖的范围是,从0°开始一直到180°,这属于标准版的范畴,而对于部分型号而言,它们能够支持进行360°的连续不断地旋转。

堵塞转动时的电流:大约是700毫安(在5伏特的情况下),若提供的电力不足以达成要求,就会致使出现抖动现象,或者是无法实现转动。

常见事例:好多人径直将的5V引脚连接起来给MG90S供电,结果发觉舵机出现抖动现象,并且转不动。缘由在于,板面上5V输出的电流仅仅大概500mA,然而MG90S处于堵转状态时电流快要接近700mA。正确的做法是,另外连接5V/1A以上的独立电源,把信号线跟主板共同接地。

02MG90S舵机控制程序的本质:PWM脉宽对应角度

舵机控制程序流程图_舵机控制程序stm32_mg90s舵机控制程序

依赖PWM信号的高电平脉宽来进行舵机控制的是MG90S伟创动力舵机,并非频率,也不是占空比。标准对应关系如下:

角度 高电平脉宽 占空比(50Hz下)
0.5ms 2.5%
90° 1.5ms 7.5%
180° 2.5ms 12.5%

核心结论是,脉宽于0.5毫秒至2.5毫秒之间呈线性变化,与之对应的是0度至180度,若超出这个范围,那么就有可能致使舵机发出异常声响或者出现损坏情况。

03MG90S舵机控制程序标准写法( IDE)

这是那种经由大量项目验证而来的稳定控制代码,其重点之处在于运用伺服库,而非直接去写PWM,原因是Servo.h能够自动处理50Hz频率以及脉宽映射。

# 
Servo ;  // 创建舵机对象
void setup() {
  .(9);  // 信号线连接到数字引脚9
  .write(90);  // 初始位置90度
}
void loop() {
  // 从0度缓慢转到180度
  for (int angle = 0; angle <= 180; angle++) {
    .write(angle);
    delay(15);  // 每次增加角度后等待15ms,让舵机到位
  }
  delay(1000);  // 停留1秒
  // 从180度缓慢转回0度
  for (int angle = 180; angle >= 0; angle) {
    .write(angle);
    delay(15);
  }
  delay(1000);
}

关键注意事项

.(pin)相关的引脚,得是那种能支持PWM输出的数字引脚才行,在 Uno上,对应的是3、5、6、9、10、11这些引脚,是这样的情况嘛。

write函数所拥有的参数,属于角度值,其范围是从0到180,并非脉宽值,是这样的情况

延迟为(15)呀 它不是那种绝对的要求呢 就是若数值小于10毫秒的时候哈 在运行中舵机有可能会出现抖动的状况哟 依情况来建议取值范围是12至20毫秒

04如果手边没有Servo库:原生PWM控制方法

舵机控制程序stm32_mg90s舵机控制程序_舵机控制程序流程图

有些单片机,像STM32、ESP32的基础架构,或许不会直接对Servo.h提供支持,在这种情形下,不得不手动去计算PWM参数。拿来说,运用()的时候,要留意:

void setup() {
  (9, );
}
void loop() {
  // 50Hz频率下,0.5ms脉宽对应的占空比约为2.5%
  // 但()默认频率约490Hz,与舵机不匹配
  // 手动改变PWM频率或使用定时器
}

专业给出的建议是,针对MG90S而言,优先去采用Servo库,这属于最为稳定的、最不容易出现错误的控制方式。要是一定得使用原生PWM,那就需要参照具体单片机的定时器配置手册。

05常见故障与

故障现象 可能原因
舵机不转 供电不足或信号线未接 换5V/1A以上独立电源,检查接线
舵机抖动 供电不足或PWM频率不对 确认50Hz频率,外接稳压电源
舵机只能转一个方向 程序只写了单方向 检查循环中是否包含正反转
舵机转到极限位置后卡住 角度超出0~180°范围 限制角度值在0~180之间
舵机异响且发热 信号脉宽超出0.5~2.5ms 检查代码中脉宽是否越界

06:写好MG90S舵机控制程序的三个关键点

1. 供电得独立才行,别依靠主控板供电。MG90S呢,它堵转电流大,要是共用电源,就会致使主控复位,或者让舵机出现抖动情况。

2. 运用专用库,其中,使用Servo。h,ESP32使用。h,且不要手动去写PWM。

3. 角度范围校准,不同品牌的MG90S,有可能会存在着约0.1ms的脉宽偏差,要是0°或者180°转不到位,那就微调.(9, 500, 2500)里的最小以及最大脉宽值(单位为微秒)。

建议行动:此刻便将于上方所呈现的代码复制进 IDE 之中,连接妥当独立 5V 电源以及信号线,率先对 0°、90°、180°这三个位置是否精准予以测试。要是转动状况正常,那么你便能够在此基础之上开展自身的机械臂、小车或者机器人项目了。

为所有产品提供动力单元

联系伟创动力产品专家,为你的产品推荐合适的驱动系统所需部件。

发送邮件
在线留言
WhatsApp
+86 0769 8399 3238
 
kpowerMap