
先把问题说透。MG995 正常转动电流就有几百毫安,堵转瞬间冲到 2A 上下。你并联四只,最坏情况下总电流能到四五安以上,要是还指望单片机板载那点电源,电压瞬间就被拉崩,几只手一起抖、一起没劲、一起复位。所以多舵机场景的第一原则是:供电必须独立、容量必须给足,绝不能从板载 5V 去喂这么多只。

最简单的做法是分立供电。准备一路主电源,5V 就够,电流余量往大了给,接 4 只 MG995 就准备 5A 以上的电源;把所有舵机红线的正极并到一起接电源正,棕黑地线并到一起接电源负,同时把电源负跟单片机的 GND 连在一起共地。多只并联时,建议在汇流点就近并几个 470 到 1000 微法的电解电容,把舵机换向瞬间的电流尖峰吃掉。这样布线虽然有点乱,但四到六只都能稳稳转起来。
不过舵机一多,单片机 IO 也紧张起来,一只占一个信号脚,UNO 14 个数字脚根本不够用。这个时候更推荐 PCA9685 这块 16 路 PWM 驱动板。它本质是一个 I2C 从设备,跟单片机之间只需要两根数据线(SDA 和 SCL)加电源地,就能同时控制最多 16 路舵机,而且每一路的脉宽是芯片自己持续输出的,不占单片机主循环,信号也更稳。
接法不复杂。PCA9685 的供电记得分两路:板子本身的 VCC 接单片机的 5V;板上的 V+(就是那个单独的舵机电源端子)接你的大电流独立电源正极,地线跟系统共地。这样一来,舵机的"大力"从大电源走,控制逻辑的小电流从板载走,两边互不干扰,这也是很多机械臂套件的标准接法。顺带一提,PCA9685 板上有几个跳线,那是用来设置 I2C 地址的,只接一块板不用管它。
代码方面用 Arduino 自带的 Adafruit PWM Servo Driver 库就行。初始化时给板子一个 I2C 地址(默认 0x40),然后设好舵机脉冲范围,一般是 150 到 600 这个区间(对应约 0.5 到 2.5 毫秒的脉宽),之后 setPWM 就能指定某一通道转到任意角度。因为脉冲是驱动板独立发出的,单片机同时去读传感器、跑逻辑都不影响舵机保持角度,体验比裸接好太多。
最后把多舵机供电的要点收个尾:一是总电流一定给足,拿不准就往多算,电源宁大勿小;二是先共地、再讲究,GND 不连一切的抖动都白调;三是汇流点并电容,专治瞬间尖峰;四是舵机多了就上 PCA9685,既省 IO 又稳信号。电喂对了,你的多舵机机器人才能真正手稳心不慌。







我并排四五个舵机的时候,一个电容真不够,至少并两三个才稳。
电容正负极是真容易看反,电解电容身上那个极性标识贴得又不大,焊之前一定用万用表量一下。
PCA9685那个V+我一开始接错过,接到单片机的5V上,舵机死活转不动,后来改成独立电源接V+才正常。楼主这句提醒到关键处了。
哎,我就栽在这上面了。之前脑子一热把六个MG995全怼到Arduino的5V上,一开机板子直接黑屏重启,我还以为板子烧了。后来换成独立5V5A开关电源,又按这个思路在汇流点并了电容,六只舵机总算能一起动了。下一步就打算上PCA9685省点IO脚,这篇讲得在点子上,收藏了。