news 2026/9/26 1:38:38

舵机与伺服电机对比:原理、控制信号与选型指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
舵机与伺服电机对比:原理、控制信号与选型指南

很多玩 Arduino 和 STM32 的朋友,第一次接触舵机时都会觉得这不就是个小电机嘛;等进工厂看到汇川或者台达的伺服电机带着驱动器成套转起来,又觉得伺服不过是“大号舵机”。这两个名字里都带“机”,也确实都在转动,但它们在原理、控制方式和选型逻辑上几乎就是两个物种。我用舵机做过仿生手、六足机器人,也用伺服做过小型数控滑台和关节模组,踩过的坑不少,这篇就把两者从头到尾捋清楚。

整篇内容适合刚入门机器人控制、或者准备从航模舵机转向工业伺服的朋友。你能搞清楚舵机和伺服各自解决什么问题、信号接口为什么不同、选型时应该看哪些参数,同时也会看到我在实际调试中遇到的各种问题和处理办法。

1. 本质区别:舵机是“集成执行器”,伺服是“系统组合”

1.1 从结构看,舵机把整套驱动塞进了一个壳里

舵机的本质是直流电机加减速箱加控制板加位置反馈元件,全部集成在一个小小的外壳里。比如大家常用的 SG90 和 MG996R,外壳里除了电机和齿轮组,还有一块小控制板和一个电位器。电位器负责检测输出轴的实际角度,控制板读取外部 PWM 信号后和电位器反馈做比较,再驱动电机转动到指定角度。所以你看到舵机只有三根线,电源、地、信号,它就是一个完整的闭环位置执行器。

伺服电机则完全不同。伺服电机本体就是一个电机加编码器,它本身并不知道自己要转到哪里,真正“想事情”的是伺服驱动器。驱动器接收来自 PLC、运动控制卡或者单片机的脉冲和方向信号,再结合编码器反馈完成闭环控制。电机和驱动器之间要用编码器线和动力线连接,整套系统是分体式结构。这一点非常关键,因为所有后续的控制区别和选型逻辑都从这里展开。

1.2 从控制逻辑看,舵机听“角度”,伺服走“坐标”

舵机的输入 PWM 脉宽直接映射输出轴角度。比如常见的 180 度舵机,0.5ms 脉宽对应 0 度,1.5ms 对应 90 度,2.5ms 对应 180 度。舵机内部控制的是“角度差”——给定一个目标角度,它就转过去。这种控制逻辑可以类比坐电梯按楼层,你按了“8”,电梯就知道目标楼层,到了自然停。

伺服电机走的是“位置差”逻辑,甚至更准确说是“坐标”逻辑。驱动器收到脉冲后计算目标位置,再不断比较当前位置和目标位置的差值,通过速度规划和加速度规划把位置差收敛到零。所以伺服电机可以用很低的速度匀速爬行,也可以用极高的加速度瞬间启动停止,全看上位机怎么发指令、驱动器怎么设定参数。对比下来,舵机的“到角度”逻辑更像一个终点明确的搬运工,伺服则是自带导航和车速控制的司机。

2. 控制信号与接口:PWM、脉冲还是总线

2.1 舵机的 PWM 控制:脉宽就是一切

模拟舵机的标准控制信号是周期 20ms、高电平 0.5ms 到 2.5ms 的 PWM。很多人用 Arduino 控制 SG90 时直接调 Servo 库里的角度值,感觉不到 PWM 的存在。实际上 Servo 库就是帮你维护了 50Hz 的频率,并把你填的角度换算成对应脉宽。这里有个常见的误区,新手以为改周期舵机就不转了,其实多数舵机对周期并不敏感,只关心高电平时间,但 50Hz 是标准值,不建议乱改。

数字舵机和模拟舵机的差别也值得提一下。模拟舵机靠 PWM 高电平期间给电机通电,高电平之外电机靠惯性滑行,响应相对迟钝;数字舵机内部有更高频率的驱动电路,比如 300Hz 甚至更高,电机通电时间更长,响应更快,定位也更稳。MG996R 这类舵机标称数字舵机,用普通 PWM 控制也能工作,但想要更好性能可以结合更高频率的更新率。另外 MG996R 有 180 度和 360 度两种版本,360 度版本本质上是连续旋转舵机,PWM 控制的不是角度而是转速和方向,特别多人买错,买回来发现转不到指定角度还以为坏了。

2.2 总线舵机:舵机的“现代化改造”

总线舵机是近年机器人项目里特别火的方案,飞特、LX 这些品牌都有大量产品。它把传统的 PWM 控制改成了串口指令控制,所有舵机挂在同一条总线上,每个舵机有独立 ID,主机通过串口发送包含 ID、目标位置、速度、加速度的指令,舵机执行完毕还可以回传当前角度、电压、温度这些状态。这个能力对多自由度机械臂和仿生手臂太重要了,传统 PWM 舵机你要把十几路信号线分开走,总线舵机只需要一条线串过去。

STM32 控制总线舵机很方便,因为本质上就是串口通信,只需一个 UART 引脚接在总线转换板上,通过半双工模式发送数据帧。树莓派 Pico 也可以这样玩,串口资源够、定时精度好,比直接用 Arduino 控制舵机还要轻松。总线舵机的调试有一个专属工具叫飞特舵机调试板,可以直接查看舵机 ID、修改 ID、读取角度和温度,我在调试六足机器人时,多舵机 ID 冲突的问题全靠这个调试板解决。

2.3 伺服电机的控制信号:脉冲、方向与总线

伺服驱动器的控制方式多得多。最常用的是脉冲加方向模式,PLC 或运动控制卡输出脉冲串,方向信号决定正反转。还有双脉冲模式,两个引脚分别代表正转脉冲和反转脉冲;模拟量模式用 0 到 10V 或正负 10V 电压控制转速;总线模式则支持 Modbus RTU、CANopen、EtherCAT、PROFINET 这些工业协议。

STM32 控制伺服电机 485 是很多自动化项目起步时的经典玩法。具体做法是通过 STM32 的 UART 转 RS485 芯片连接伺服驱动器,按 Modbus RTU 协议读写寄存器。控制过程一般分几步:先把驱动器设为 Modbus 通信模式,设置好从站 ID 和波特率;然后通过寄存器切换运行模式,比如位置模式或速度模式;接着写入目标位置或转速;最后给使能信号,电机才会真正通电转动。

脉冲控制模式下,电子齿轮比的设置是绕不开的坎。比如电机编码器是 2500 线,驱动器 4 倍频后一圈就是 10000 个脉冲。如果上位机想发 5000 个脉冲让电机转一圈,电子齿轮比分子设置为 1、分母设置为 2 就行,本质是上位机脉冲数到电机位置增量的换算系数。算不对就会遇到“发 10000 个脉冲电机只转半圈”或者“没发几个脉冲电机就飞转”的问题。

3. 性能参数对比:扭矩、精度、响应速度

3.1 扭矩的标注方式完全不同

舵机标称扭矩常用 kg·cm,比如 MG996R 在 6V 下给出约 11kg·cm,意思是在 1cm 力臂末端能吊起 11kg 的重物。这个数值包含了减速箱的增益效果,是输出轴上的扭矩。伺服电机标称扭矩一般用 N·m,比如 400W 伺服电机额定扭矩大约 1.27N·m,峰值扭矩 3.82N·m。还要注意,伺服电机的额定转速往往是 3000rpm 左右,在这个转速下输出额定扭矩;如果加了减速机,输出扭矩按减速比放大,转速则按比例降低。

很多新手会拿舵机的 kg·cm 和伺服的 N·m 直接比较,这是不对的。一来单位不同,需要换算;二来舵机的 11kg·cm 是短时间内能输出的扭矩,齿轮组持续输出能力和散热能力都比不上工业伺服。换算关系也很简单,1N·m 约等于 10.2kg·cm。所以一个 400W 伺服额定的 1.27N·m 输出扭矩,大致相当于 12.95kg·cm 的舵机扭矩。但这个对比毫无意义,因为伺服可以持续高速运行,舵机在这种工况下早就烧了。

3.2 位置精度和闭环方式的差距

舵机的位置反馈元件通常是电位器,精度受电阻线性度和 ADC 分辨率限制。SG90 这种级别的稳态精度大概在正负 1 到 3 度,扭矩稍大就会出现齿隙带来的回差。MG996R 因为用了金属齿轮,齿隙控制比塑料齿好一些,但本质还是电位器反馈,绝对精度有限。少数高端舵机开始用磁编码器,比如低成本的 AS5600 磁编码器方案,精度比电位器高不少,但也很少超过 0.1 度。

伺服电机用的是增量编码器或绝对值编码器,常见的有 2500 线、17 位、23 位等规格。2500 线 4 倍频后是 10000 脉冲每转,每个脉冲对应 0.036 度;17 位绝对值编码器分辨率达到 131072 每转,对应约 0.0027 度。再加上伺服驱动器内部的位置环、速度环、电流环三环 PID 控制,位置响应速度和稳态精度远不是舵机能比的。配合滚珠丝杆等机构,整套系统做到正负 0.02mm 的定位精度在工业里都是常规水平。

3.3 响应带宽与动态性能

动态性能是两者差距最大的地方。舵机的响应带宽很低,从指令到完成角度定位往往需要几十到几百毫秒,而且转角越大耗时越长。同时舵机的速度是内部减速箱决定的,基本固定,想快也快不了。仿生手臂用舵机没问题,因为人手臂动作本身频率不高,不需要特别极端的动态响应。

伺服电机因为没有减速箱(或只有小减速比)且编码器分辨率高,响应带宽可以达到几十甚至上百赫兹,启动加速度可达几千 rpm/s 甚至更高。这意味着伺服可以完成每秒多次启停、快速换向这类动作,适合贴片机、绕线机、印刷设备这类高频高精度的场景。这个差异也决定了舵机几乎不会用在高速运动场合,伺服则很少用在航模舵面这种轻负载、低成本的场景。

4. 应用场景与选型实操

4.1 哪些场景直接用舵机就对了

如果项目是一个桌面机械臂、六足机器人、仿生手,又或者航模的舵面控制,直接用舵机就对了。原因很简单,成本低、驱动简单、即插即用。SG90 几块钱一个,MG996R 也就二三十块,配上 Arduino、树莓派 Pico 或 STM32 就能跑,不需要额外驱动器。特别是做多自由度机器人时,一个关节一个舵机,控制板只管发 PWM 就行。

需要多自由度且布线紧张的场景,优先考虑总线舵机。比如仿生手臂一只手掌可能有十几个自由度,如果都用 PWM 舵机,线束会非常恐怖。总线舵机一条线串联就解决了,还能回传关节角度,方便做闭环控制和状态监控。飞特舵机的调试板在这个场景下几乎是必需品,ID 分配、波特率修改、角度校准都离不开它。还要注意总线舵机的电源问题,串联状态下每个舵机都从总线上取电,电流叠加后很容易让上一级舵机过流,所以供电要考虑总线供电能力。

4.2 哪些场景必须上伺服

一旦设备需要高速、高精度、连续长时间运行,而且需要和 PLC、运动控制卡、工业总线联动,就必须用伺服。数控机床、激光切割机、包装机械、光伏和锂电设备、工业机器人关节都在这个范畴。伺服的优势是可以精确控制位置、速度和扭矩,信号接口标准化,和自动化系统无缝对接。

选型时不能只看功率,要按汇川伺服电机选型手册的思路一步步来。第一步算负载的转动惯量,折合到电机轴上的惯量与电机自身转子惯量要匹配,一般负载惯量比电机惯量控制在 3 到 10 倍以内,超出后动态响应会变差。第二步算扭矩需求,包括匀速运行扭矩、加速扭矩、重力扭矩等,把峰值扭矩和额定扭矩都算出来,再乘 1.2 到 1.5 的安全系数。第三步选编码器分辨率,普通定位用增量式 2500 线够用,需要原点复归或怕断电丢位置的选绝对值。第四步根据上位机通信方式确定脉冲接口还是总线接口,EtherCAT 和 CANopen 在复杂系统里接线更少但调试门槛更高。

4.3 驱动器和调试软件是伺服系统的半个灵魂

伺服电机本体只是执行者,驱动器才是大脑,而调试软件是连接大脑和项目需求的桥梁。汇川伺服驱动器调试软件可以用来设置电子齿轮比、控制模式、刚性等级、惯量比、加减速时间等参数。很多新手装好硬件后发现电机抖动、异响、定位不准,问题往往就出在参数没调好而不是硬件坏了。

我调试 400W 伺服带同步带滑台的经验是:先做驱动器惯量辨识,让它把负载惯量测出来;然后从默认刚性等级开始逐步提高,每次提高后运行一下看有没有震动;出现轻微震动就回调一级,直到稳定为止。位置环增益一般不用动,除非动态响应不够。速度和加速度可以先设保守一些,跑顺了再往上加。整个过程听着不复杂,但新手至少需要半天到一天来熟悉,所以买伺服时一定要把调试软件和手册提前拿到手,别等接线完了再临时找。

5. 实操中的坑与排查笔记

5.1 舵机供电不足的典型故障

舵机最容易出的问题就是供电不足导致抖动。SG90 空载电流大约 100 到 200mA,堵转时可能到 700mA 到 1A;MG996R 的堵转电流能达到 2A 以上。Arduino 板载的 5V 稳压器输出能力通常只有 500mA 左右,带一个舵机可能勉强行,带两三个就经常出现舵机疯狂抖动、角度乱跑的情况。

解决方法是外置一个大电流的 5V 或 6V 稳压模块,比如 UBEC 降压模块或大功率线性稳压,同时要把电源的负极和 Arduino 的 GND 连在一起,也就是共地。PWM 信号是相对于 GND 的电压,如果不共地,信号电压参考点不一致,舵机会收不到有效信号。另外多路舵机同时动作时峰值电流很大,电源模块和线径都要留够余量,降压模块前段的输入电压也不能太低。

在供电方案上,我习惯给舵机单独供电,控制板的电源和舵机电源互不干扰,只在 GND 处一点连接。这样舵机的大电流波动不会拖垮控制板电压,控制芯片不容易复位。调试多路舵机机械臂时,如果出现某个舵机偶尔卡顿或复位,优先怀疑供电而不是程序逻辑。

5.2 舵机角度控制与运动平滑的细节

舵机 PWM 控制的细节很容易被忽略。SG90 和 MG996R 的控制脉宽一般是 0.5ms 到 2.5ms 对应 0 到 180 度,但不同品牌和型号的脉宽范围略有差别,有些舵机是 1ms 到 2ms 对应 0 到 180 度。开始时可以用调试代码或舵机测试仪把两个极限脉宽先测出来,再映射到实际角度范围,避免舵机在极限位置憋死。

控制平滑性方面,不能直接把目标角度一步到位发给舵机,尤其是动作幅度大时,舵机内部会以最大速度猛转,造成机械冲击。我一般做一个简单的运动规划,比如每 10ms 让角度增量不超过 2 到 3 度,这样机械臂的动作就很柔和。Arduino 的 Servo 库没有自带规划能力,STM32 上可以用定时器中断配合目标位置和当前位置计算中间值,效果会好很多。

总线舵机则不需要自己做这么多规划,直接使用指令里的速度参数和加速度参数就能实现平滑运动。这也是总线舵机在机器人项目上的另一个优势,角度、速度、加速度在一条指令里全部下发,主机代码简单很多。

5.3 伺服电机不转动、抖动和丢步排查

伺服电机接好线但不转动,是新手最容易卡住的地方。排查顺序是:先看驱动器是否有报警代码,报警代码是驱动器告诉你的第一手信息;再看使能信号是否正常,没有使能的话电机处于自由状态;然后用示波器或逻辑分析仪查看脉冲信号是否真的到达驱动器的 PULSE 和 DIR 引脚,同时检查接法是共阳极还是共阴极,用错了会收不到有效信号。

伺服抖动和啸叫的问题非常常见,九成原因是增益过高或惯量比设置和实际不符。驱动器默认参数是按电机空载或标准负载设置的,你的机械设备如果惯量比大,就需要先做惯量辨识,再适当降低速度环增益。有些抖动其实是机械问题,比如联轴器松动、丝杆间隙过大、安装底座刚性不足,这种抖动通过电气参数很难完全消除,需要回头检查机械结构。

丢步或位置不对的问题,多半出在电子齿轮比上。举个例子,如果电机一圈 10000 脉冲,丝杆导程是 5mm,那每个脉冲对应的移动距离就是 0.0005mm。上位机如果发送的脉冲频率过高,超过驱动器最大输入频率,也会造成位置偏差,尤其是用 PLC 高速脉冲口驱动时,要确认脉冲频率上限够用。

5.4 STM32 控制伺服 485 的通信要点

STM32 控制伺服电机 485 通信时,最容易踩的坑是接线和参数不统一。RS485 是差分信号,A、B 两根线不能接反,接反了基本收不到任何数据。总线上如果只有 STM32 和一个驱动器,一般要把 120 欧终端电阻加上,还要设置好驱动器的从站 ID、波特率、数据位、校验位,四个参数和 STM32 端完全一致才行。屏蔽层的处理也要注意,我在现场的习惯是屏蔽层单端接地,避免形成地环路。

通信不上时,先用串口调试助手或逻辑分析仪看 STM32 是否真正发出了数据帧,计算一下 Modbus RTU 的 CRC 校验是否正确。再把驱动器面板或上位机软件里的通信诊断打开,看是否有接收计数在增加。通信联调通过后再进入真正控制逻辑的编写,比如速度模式下发目标转速、位置模式下发目标位置、然后给使能信号。注意很多驱动器在使能状态下不允许随意切换运行模式,需要先解除使能再改模式,这类细节翻一遍说明书就能少浪费半天时间。

6. 最后想说的个人体会

舵机和伺服电机的选择问题,本质上是需求定位问题。你在做的是一个不需要太高精度的动作模拟器,还是一个需要精确坐标和稳定速度的自动化部件?舵机是“角度到位的执行器”,伺服是“位置精准的控制系统”。前者从几块钱到几百块钱都有,接线即用;后者从几百块到上万块不等,需要调试参数和配套外围。很多设备其实是混用的,比如机器人的腕部关节用总线舵机,大臂或腰部用低压伺服,各取所长。

最后分享一个我踩了几次坑之后才明白的小技巧:不管是 PWM 舵机还是脉冲伺服,把电源供电、信号共地、线缆屏蔽这三件事做到位,能帮你省掉至少一半的排查时间。很多看似程序逻辑的问题,最后查出来都是电源纹波太大、地线没接好、信号线被干扰。先把基础打好,再谈运动控制,这条经验放在哪个平台都管用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 1:37:42

Web 3D复刻不是扒代码:Three.js逆向工程方法论

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:35:42

电流保护器选型要点:量程、安装与输出触点全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:35:41

互联网+大赛项目计划书模板:从格式规范到写作全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:35:09

WorkBuddy Claw中文不生效?三重本地化机制深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:34:25

CorelDRAW各版本安装包选择与安装避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:34:25

Visual Studio 2026环境搭建全指南:编译器配置与界面优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华