用MG996R做机械臂的朋友应该都遇到过这个问题:舵机装好后一直抖,有时候还发出嗡嗡的响声。这个问题不一定是舵机坏了,大部分情况下通过三步排查就能解决。
第一步:检查供电是否充足
舵机抖动最常见的原因就是供电不足。MG996R的瞬间电流可以到2.5A,如果多个舵机同时动作,总电流会很大。电源功率不够的时候,电压会被拉低,舵机的控制芯片就会工作不稳定,表现出来就是抖动。
排查方法很简单:用一个万用表量舵机供电端的电压。静态时应该在5.8-6.2V之间。如果舵机一动作电压就掉到5V以下,说明电源功率不够。解决方案是换一个功率更大的电源,或者给每组舵机单独供电。

第二步:检查信号线是否受干扰
如果供电没问题,第二步检查信号线。舵机的PWM信号线如果和电源线平行走线,或者线缆太长、没有屏蔽,很容易受到电磁干扰。干扰信号叠加在PWM信号上,会让舵机接收到的脉宽值不稳定,从而产生抖动。
解决方法:信号线和电源线分开走,至少间隔2cm以上。信号线长度不要超过30cm,如果必须走长线,用屏蔽线或者加一个74HC245缓冲芯片。另外,在舵机的信号线和地线之间并联一个100nF的电容,也能有效滤除高频干扰。

第三步:检查机械传动是否有卡滞
如果供电和信号都没问题,那就要检查机械部分了。舵机抖动还有一种可能是机械卡滞。当舵机的输出轴被外力卡住或者传动机构阻力太大时,舵机会不断地尝试到达目标位置,产生持续的震荡。
排查方法:断开舵机和负载的连接,让舵机空载运行。如果空载不抖了,说明是机械部分的问题。检查打印件的配合是否太紧、轴承是否顺畅、齿轮是否啮合良好。适当加一些润滑脂也能改善。
补充:舵机本身的问题
如果以上三步都排除了还是抖,那可能是舵机本身的问题。MG996R的品控参差不齐,有些舵机的电位器(位置传感器)精度很差或者已经磨损,这种情况下只能换舵机。建议买的时候多买几颗备用的。
最后一个小技巧:在Arduino代码里给目标角度加一个死区。比如目标角度是90度,但实际位置在88-92度范围内就不调整了,这样可以大幅减少因为精度不足导致的反复调整抖动。


补充一下MG996R的品控确实参差不齐,建议买的时候选金属齿轮版的
信号线干扰这个问题确实很多人不知道,我折腾了好久才发现是走线的问题
死区这个技巧很有用,我加了之后抖动明显少了
我之前那个六轴臂就是供电问题,换了12V5A的电源立刻不抖了