MG996R 力气大,但接上 Arduino 直接怼 5V 焊盘,十个有八个出问题——要么转不动,要么一转就复位重启。本质还是供电。这篇把接线、脉宽、代码一次讲清楚,让你多舵机也能跑得稳。
先搞懂三根线分别接哪
MG996R 和绝大多数舵机都是标准三线,颜色约定也统一:棕色或黑色是地线 GND,红色是电源正极(接 5 到 6V),橙黄色那根是信号线,接 Arduino 的数字脚。这个顺序千万别接错,电源线接反直接烧。
供电是九成故障的根源
MG996R 空载电流约 170 到 210 毫安,起动和堵转瞬间能冲到 1.4 安培以上。Arduino 板载的 5V 稳压器顶多带几百毫安,指望它喂一个大扭矩舵机纯属做梦——一定会掉压复位。正确做法是单独接一个能输出 5 到 6V、至少 3A 的外部电源,把外部电源的 GND 和 Arduino 的 GND 用一根线连起来(共地)。
脉宽决定角度
舵机靠 PWM 脉宽控制位置,工作周期一般是 20ms,即 50Hz。规律很直白:脉宽 1ms 大约对应 0°,1.5ms 对应 90°(中点),2ms 对应 180°。Arduino 的 Servo 库把这些细节都封装好了,你只需要用角度就能控制,不用手动算脉宽。
单舵机控制代码
用 Servo 库,代码非常短。先 `#include ` 声明一个 Servo 对象,在 setup 里 `myservo.attach(9)` 把第 9 脚挂给这个舵机,loop 里用 `myservo.write(角度)` 就能让它转到指定角度,再用 delay 控制每步停留时间,就能写出平滑摆动的效果。
想让多舵机依次或同时动,就多声明几个 Servo 对象,各自 attach 到不同引脚,分别 write 就行。机械臂每个关节一个引脚、一条 write,关节控制就是这么拼起来的。
多舵机时的两个坑
第一个坑还是供电:好几个 MG996R 一起动,瞬间电流能到好几安培,电源不到 3A 一定掉压。第二个坑是别在一个 loop 里让所有舵机一步到位跳着走,关节会"瞬移"很吓人,最好设计成每帧小步增量、平滑逼近目标角度,动作才自然。
再多说一句:如果发现舵机一上负载就抖、就软,而代码没有错,九成是电源顶不住,先把供电做扎实再谈别的。DIY 机械臂,先把电喂饱,舵机才肯干活。
简洁实用,代码几分钟就能跑通。适合刚入手MG996R的萌新。