
很多想做机械臂、仿生手或者自动夹爪的开发者选执行器的时候都会卡在同一个问题上标准舵机输出的是旋转运动但实际动作往往需要直线推拉。过去想实现这种效果第一反应是丝杆滑台或者电动推杆结果要么尺寸太大装不进结构件要么价格直接劝退。而三线直线舵机这种方案在很多项目里是被低估的。三线直线舵机最关键的优点并不是“能直线运动”这件事本身而是它的控制协议没有变。它依然使用普通舵机最常见的三线接口和 PWM 信号也就是说你原来用 Arduino 控制 SG90 的经验几乎可以原封不动迁移过去。对于正准备把样品发布出来、接受网友咨询和持续改进的创客来说这是一个非常有价值的卖点买家不需要学习新的控制框架不需要专门的驱动板接线正确就能跑起来。这篇文章会围绕这次三线直线舵机成品演示展开内容分成几个部分先说明三线直线舵机解决了什么真实问题再拆解它的控制原理和常见误解然后给出用 Arduino、树莓派 Pico、PCA9685 舵机控制板分别驱动的完整代码最后梳理样机测试验证、常见故障排查以及一款样品离“可发布状态”还差哪些工程化工作。1. 三线直线舵机到底解决了什么问题很多人第一次看到“直线舵机”这个名词时会以为它是一种全新的电机类型。实际上它的价值不在电机原理而在“输出形式”和“控制兼容性”的组合。1.1 旋转舵机在实际项目中遇到的场景瓶颈普通旋转舵机的输出轴只做角度转动例如 0 到 180 度。但项目里很多动作是需要“推”或“拉”的仿生机械手的指关节需要把手指往回拉完成握拳动作夹爪的开合如果不用连杆机构很多情况下实际需要一根伸缩推杆太阳能追光装置的仰角调节有时需要支撑杆伸缩而不是直接旋转模型车的转向结构、机械臂的底盘升降也存在直线行程需求。处理这类需求传统方案是“旋转舵机 齿轮齿条/丝杆”或“旋转舵机 连杆机构”。这样也能实现但结构设计成本很高需要考虑齿轮间隙、舵机安装角度、机构限位和回程误差。对只想快速验证功能的开发者来说调试一套连杆远不如直接换一个直线输出的舵机方便。1.2 三线直线舵机解决的是“最后一厘米”的问题三线直线舵机把直线传动的机械结构做进了舵机外壳里用户不用再操心齿轮齿条设计。它对外暴露的接口仍然是标准舵机接口和 PWM 信号因此可以直接挂在普通舵机控制器上。这次样品包含的对象是“三线直线舵机成品”和“圆柱小舵机”。从演示需求看有两件事是值得关注的第一是验证控制兼容性。三线直线舵机能不能用普通舵机的代码直接驱动这决定了用户拿到手后是否容易上手。第二是验证机械可靠度。直线舵机内部有螺纹丝杆或齿轮齿条结构相比旋转舵机更容易出现空程、卡顿和限位失效的问题也更容易在走到行程尽头时堵转。样品演示阶段一定要把这几项测出来。换句话说三线直线舵机真正降低的是结构设计和系统集成的成本但它并没有消除舵机本身在负载、行程、供电方面的约束。只看表面很容易以为它只是“把齿轮箱竖起来”而已真正容易踩坑的地方在后面接线、标定和功耗测试时才会暴露。2. 三线直线舵机的原理与常见误区2.1 舵机是什么带位置闭环的小型驱动模块先回顾一下舵机的基本概念。舵机本质上是一个“电机 减速齿轮 位置反馈 控制电路”的组合体。普通旋转舵机通过内部电位器感知输出轴角度。控制电路接收外部 PWM 信号的目标角度然后不断对比当前位置和目标位置调整电机转动方向和速度直到到达目标位置。把这个逻辑里的“角度反馈”换成“直线位移反馈”在结构上用丝杆或齿轮齿条把旋转运动转换为直线运动就得到了直线舵机。从用户视角看它和普通旋转舵机一样是一个“你告诉它目标位置它自己完成闭环”的模块。2.2 “三线”和“五线”的区别机械臂、机器人项目里还经常提到“总线舵机”和“模拟/数字舵机”。总线舵机用串口协议通信常见的是两根线通过协议读写位置、速度、温度等参数。传统模拟舵机则是三根线电源、地、信号。五线舵机的一种情况是引出“电位计两端”也就是把位置反馈电位器的两端和滑片都引出来了。这种设计方便外部读取舵机当前角度但它要求你单独处理位置反馈信号。还有一类直线推杆模组带有霍尔反馈或电位器反馈采用五线制是为了闭环精度和状态读取。三线直线舵机的意思是位置闭环被密封在舵机内部外部只暴露电源、地、信号三个引脚。使用时不需要读回位置反馈系统只负责送 PWM 目标值即可。从样品项目角度讲三线设计如果做得好对用户是最友好的。用户不需要关心舵机内部是电位器还是磁编码器也不需要写反馈读取代码。只要 PWM 脉宽在有效范围内舵机就会把推杆推到对应位置。2.3 直线舵机内部如何把旋转变成直线直线舵机内部通常由电机驱动丝杆或齿轮齿条推杆沿轴向伸出和收回。圆柱小舵机往往采用类似布局电机和减速齿轮占据圆柱形外壳的一部分推杆从一端伸出。这种设计决定了几个重要特性第一直线舵机的行程有限。不同型号的行程可能只有几毫米到几十毫米不像旋转舵机那样能连续多圈旋转也不像无刷电机那样可以持续转动。第二直线舵机的输出力与速度存在权衡。丝杆结构通常能产生较大的推拉力但推杆移动速度不会太快。若要速度快可能要用低减速比齿轮推力相应下降。第三堵转风险高。旋转舵机在机械限位处打齿或堵转也是不良状态但直线舵机更容易在行程两端撞到硬限位。一旦限位开关或控制逻辑没有生效电机持续堵转会导致电流升高、发热增大甚至损坏电路。在演示时需要注意一个常见误区直线舵机并不是“推杆伸出以后就万事大吉”。如果是刚性机构推杆到达目标后如果外部负载继续推动它内部丝杆或齿轮可能受到反向冲击。很多位置闭环舵机并不具备真正的“反向自锁能力”这一点在带负载运动中需要重点观察。3. 圆柱小舵机在样品中的角色这一次演示中三线直线舵机旁边还出现了一个“圆柱小舵机”。圆柱小舵机通常指外壳呈圆柱形、输出方式为直线推杆的微型舵机。它和普通标准舵机相比最大的特点是轴向尺寸灵活适合嵌入手指关节、机械手掌、小型云台等空间受限的场景。3.1 圆柱小舵机不等于普通旋转舵机如果只看接口圆柱小舵机也是三根线信号协议也是 PWM容易让人觉得它只是“换了个外壳的 SG90”。但从机械输出方式看两者有明显的不同。普通旋转舵机的输出是弯曲的舵盘旋转而圆柱小舵机在很多仿生项目里被用作“手指直线拉动单元”。它不一定输出大扭矩但要求体积小、行程短、响应快。因为仿生手指的关节空间很窄传统舵机无法直接安装圆柱形结构却可以像骨骼一样埋进手指内部。3.2 为什么很多仿生臂选用直线式圆柱舵机“仿生手臂舵机”是目前舵机相关搜索里很热的关键词。实际做仿生手的人会发现五指握持动作的难点不是控制算法而是每个手指需要一个独立的驱动源。如果用标准舵机每个手指都需要一个很大的舵机舱会导致手掌体积严重超标。直线式圆柱舵机在这种场景下更合适它占用的截面可以做得更窄行程对应手指弯曲的长度推杆直接连接指节末端用“拉”的方式实现握拳。三线信号也允许它接到普通舵机控制板上配合 PWM 控制算法完成多指协调。这次样品的三线直线舵机本质上也可以为这类仿生结构提供低门槛驱动方案。演示时如果能配合一个简单的机械手指结构展示推拉动作会比单独展示舵机空转更有说服力。4. 测试平台与物料准备数控、代码、接线都很具体所以先列清楚测试平台。4.1 硬件物料清单准备一个可复现的测试环境至少需要物料用途备注三线直线舵机样品被测对象确认接线和 PWM 范围圆柱小舵机样品对比或联合演示确认接口兼容性Arduino UNO 或 Nano生成 PWM 信号也可以使用 STM32、ESP32树莓派 PicoMicroPython PWM 测试适合验证不同开发环境PCA9685 舵机控制板多路或联合控制演示验证负载能力和单独供电5V/6V 舵机电源给舵机供电需要按舵机电流要求选择万用表测线序、电压、电流判断三根线的定义直尺或游标卡尺测量推杆行程记录脉宽和位移的对应关系杜邦线若干接线注意公母头匹配4.2 供电要求与安全提醒这里要特别提醒舵机启动瞬间和堵转瞬间的电流远高于平均工作电流。直线舵机因为内部有丝杆传动启动时需要克服的静摩擦通常比同名旋转舵机更高。常见的错误是直接用开发板的 5V 引脚给舵机供电。Arduino 的稳压芯片输出能力有限驱动标准舵机就有可能导致电压跌落带动多个舵机或直线舵机时更容易出现复位。演示项目一旦出现“舵机一动开发板就重启”首先要怀疑的不是代码而是供电。更合理的接法是信号线连接开发板 GPIO电源正负极单独接到舵机电源开发板电源和舵机电源共地。如果手头使用的是 USB 供电的舵机测试器或小型稳压模块也需要先确认它能持续输出多大电流不能只看电压数值合适就接。在样品发布阶段这个供电问题必须写进演示说明。否则买家买到以后直接用电脑 USB 给舵机供电大概率会遇到卡顿、抖动很多差评其实是供电方式导致的。5. 样品接线与信号标定编写代码之前先做两个基础工作确认线序确认 PWM 脉宽范围与推杆行程的映射关系。这两步如果做错后面代码再正确也没有意义。5.1 三线线序判断绝大多数三线舵机的接口定义如下导线颜色典型定义说明红色电源正极 VCC通常接 5V 或 6V棕色或黑色电源负极 GND接电源负极同时接开发板 GND橙色、黄色或白色信号线 Signal接开发板 PWM 引脚但不同厂家的线序并不完全统一圆柱小舵机等非标壳体更不一定遵守常规颜色。拿到样品后不要凭颜色硬接建议用万用表判断先找电源负极黑色或棕色通常是 GND但最好测量确认用万用表二极管档或电阻档测量电源正负极之间是否有内部电路信号线一般不会直接和电源或地短接。更稳妥的判断流程是先接电源和地不给信号线发任何 PWM观察舵机是否在通电瞬间出现抖动。如果通上电就乱动说明信号线可能被误接成了电源或地应立即断电检查。5.2 PWM 脉宽与行程标定三线舵机一般使用 50Hz 的 PWM 信号即周期为 20 毫秒。目标位置由高电平持续时间决定常用的脉宽范围是 500 到 2500 微秒也有不少舵机使用 1000 到 2000 微秒的窄范围。SG90 这类标准舵机通常 1000 微秒对应一个方向极限2000 微秒对应另一个方向极限1500 微秒对应中位。直线舵机同样遵循这个原理只不过角度换成了行程。例如假设某个直线舵机的脉宽范围是 1000 到 2000 微秒那么1000 微秒对应推杆完全收回1500 微秒对应推杆行程中位2000 微秒对应推杆完全伸出。但不同直线舵机的行程可能不同脉宽上下限也可能不同绝对不能照搬。正确做法是通过实测标定让舵机在每个脉宽停下后用直尺测量推杆露出长度绘制一张“脉宽-位移”对应表。标定时的原则是从安全位置开始不要一上来就发出极限脉宽。先用 1500 微秒让舵机到达中位确认运动方向再逐步增加脉宽每次只增加很小幅度例如 10 到 20 微秒避免直接冲撞机械限位。5.3 机械阻力测试在通电标定之外最好断电手动推拉推杆感受内部机械结构的顺滑程度。如果断电时推杆能轻松移动说明内部传动可能没有自锁带载后位置容易受外力影响。如果推杆几乎无法移动说明丝杆或齿轮自锁性较好但也能猜测舵机需要更多力量来驱动推杆。这项测试样品演示里尤其重要。买家咨询时常问这个舵机能推多大负载断电后会不会被反推回去这些问题如果厂家自己没测过只能含糊回答后续就容易出现争议。更好的做法是在标定阶段记录下来用砝码或弹簧秤做一次简单推力试验。6. Arduino 驱动三线直线舵机的完整示例跑通一个最小示例是验证三线舵机控制兼容性的第一步。这里选择 Arduino 环境因为它是大多数舵机 DIY 入门者的首选控制器。6.1 接线关系假设使用 Arduino UNO接线如下舵机红线接外部 5V 电源正极舵机黑线/棕线接外部电源负极并连接到 Arduino GND舵机信号线接 Arduino 数字引脚 9。信号线不要从外部电源取电。Arduino 引脚只输出信号电平舵机的工作电流走外部电源回路。6.2 Arduino 示例代码示例代码使用 Arduino 自带的 Servo 库。先用writeMicroseconds()精确控制脉宽这样我们能清楚地看到脉宽与推杆位移的关系而不需要依赖write(angle)的角度概念。// 文件路径arduino/linear_servo_sweep/linear_servo_sweep.ino #include Servo.h Servo linearServo; const int servoPin 9; // 使用保守的脉宽范围避免一开始就撞到机械限位 const int pulseCenter 1500; // 中位脉宽 const int pulseMin 1000; // 最小脉宽需按实测调整 const int pulseMax 2000; // 最大脉宽需按实测调整 const int stepValue 20; // 每次变化 20 微秒 const int delayMs 300; // 每一步停留时间 void setup() { Serial.begin(115200); Serial.println(Linear Servo Test Start); // 不指定脉宽范围由 writeMicroseconds 精确控制 linearServo.attach(servoPin); linearServo.writeMicroseconds(pulseCenter); delay(1000); } void loop() { // 从中位向伸出方向移动 Serial.println(Moving to extend); for (int pulse pulseCenter; pulse pulseMax; pulse stepValue) { linearServo.writeMicroseconds(pulse); printPulse(pulse); delay(delayMs); } delay(1000); // 从伸出位置收回 Serial.println(Moving to retract); for (int pulse pulseMax; pulse pulseCenter; pulse - stepValue) { linearServo.writeMicroseconds(pulse); printPulse(pulse); delay(delayMs); } delay(1000); } void printPulse(int pulse) { Serial.print(Pulse: ); Serial.print(pulse); Serial.println( us); }代码逻辑并不复杂程序启动后先把舵机推到中位脉宽 1500 微秒然后在 1500 到 2000 微秒之间逐步增加脉宽再逐步减少回到中位。在运行这段测试程序时应该能看到推杆缓慢伸出然后缓慢收回。这段代码没有让推杆从极限到极限来回扫动而是只在中位到一侧之间往复这是刻意的。直线舵机的行程终点往往没有强限位结构直接写极限脉宽有堵转风险。先保留安全区间后续再根据实测脉宽范围把pulseMin和pulseMax调整到合适值。6.3 如何判断运行成功判断标准是推杆运动平稳没有明显卡顿串口打印的脉宽值与推杆位置一一对应推杆没有出现高频抖动或异响舵机外壳温度正常没有快速发烫。如果脉宽在 1500 到 2000 微秒之间变化但推杆完全没有动作先不要修改代码。优先检查接线线序是否接反、外部电源是否供上电、Arduino 引脚是否真的输出了 PWM。可以用示波器观察信号引脚没有示波器时也可以先单独测试一下普通 SG90确认控制板工作正常。7. 用树莓派 Pico 和舵机控制板扩展控制Arduino 能控制不代表所有开发环境都容易控制。样品发布时面对的用户群可能使用树莓派 Pico、STM32、ESP32。这里给出两个常见扩展路径。7.1 用树莓派 Pico 的 MicroPython 控制树莓派 Pico 使用 MicroPython 时普通 GPIO 的toggle()是不能稳定输出 50Hz 波形的所以应使用machine.PWM。Pico 的 PWM 频率和占空比是分开配置的先设置freq(50)再通过duty_ns设置高电平时间。# 文件路径pico/linear_servo_pwm.py from machine import Pin, PWM import time servo_pin PWM(Pin(15)) servo_pin.freq(50) def set_pulse_us(pulse_us): # 周期 20ms 20000us # duty_ns 参数单位是纳秒所以 pulse_us 乘以 1000 servo_pin.duty_ns(pulse_us * 1000) # 先回到中位 set_pulse_us(1500) time.sleep(1) # 缓慢伸出 for pulse in range(1500, 2001, 20): set_pulse_us(pulse) time.sleep(0.2) time.sleep(1) # 缓慢收回 for pulse in range(2000, 1499, -20): set_pulse_us(pulse) time.sleep(0.2) set_pulse_us(1500)需要注意不是所有 MicroPython 固件版本都支持duty_ns。如果固件版本较旧可以用duty_u16代替。PWM 周期是 20000 微秒占空比等于脉宽除以周期再映射到 16 位数值def set_pulse_u16(pulse_us): duty_u16_value int(pulse_us / 20000 * 65535) servo_pin.duty_u16(duty_u16_value)使用时根据实际固件选择一个函数即可。若推杆运动方向与预期相反只需要把两个方向的脉宽互换或者调整安装方向。7.2 用 PCA9685 舵机控制板控制多路直线舵机手上有多个直线舵机时如果全部占用主控 IO接线会非常混乱。PCA9685 舵机控制板通过 I2C 接口扩展出 16 路 PWM非常适合多路舵机场景。它也允许给舵机单独供电而主控只通过 I2C 发送指令。接线时注意PCA9685 的 VCC 接主控 5V 或 3.3V用于逻辑电平PCA9685 的 V 接舵机电源正极用于舵机供电GND 必须与主控共地。示列代码使用 Adafruit PWM Servo Driver 库。先通过计数器换算脉宽SERVOMIN和SERVOMAX的值是按 50Hz、4096 分辨率估算的// 文件路径arduino/pca9685_linear_servo/pca9685_linear_servo.ino #include Wire.h #include Adafruit_PWMServoDriver.h Adafruit_PWMServoDriver pwm Adafruit_PWMServoDriver(); // 50Hz 下20ms 对应 4096 个单位 // 500us ~ 2500us 约等于 102 ~ 512 const int SERVOMIN 102; const int SERVOMAX 512; void setServoPulse(uint8_t channel, double pulseWidthUs) { double cycleUs 20000.0; // 周期 20ms uint16_t count pulseWidthUs / cycleUs * 4096.0; pwm.setPWM(channel, 0, count); } void setup() { pwm.begin(); pwm.setPWMFreq(50); delay(10); // 所有通道先到中位 setServoPulse(0, 1500); setServoPulse(1, 1500); } void loop() { // 通道 0 伸出通道 1 收回 for (int pulse 1500; pulse 2000; pulse 10) { setServoPulse(0, pulse); setServoPulse(1, 3000 - pulse); delay(20); } delay(500); for (int pulse 2000; pulse 1500; pulse - 10) { setServoPulse(0, pulse); setServoPulse(1, 3000 - pulse); delay(20); } delay(500); }这个示例展示了两个直线舵机反向运动适合演示夹爪开合或手指左右对称动作。3000 - pulse是一个简单的镜像映射当通道 0 的脉宽从 1500 增加到 2000 时通道 1 的脉宽从 1500 减小到 1000两个舵机正好朝相反方向移动。7.3 从“能转”到“控制平滑”的算法升级如果只是演示用固定延时逐步改变脉宽就够了。但在机械臂或仿生手场景里直接跳变脉宽会让推杆快速冲击启动和停止瞬间会有明显抖动。这种时候可以引入舵机控制算法里的“斜坡规划”即不让脉宽直接跳到目标值而是设定一个每步允许变化的最大值。参考代码如下int currentPulse 1500; int targetPulse 2000; int maxStep 5; void smoothMoveTo(int target) { while (currentPulse ! target) { if (currentPulse target) { currentPulse maxStep; if (currentPulse target) currentPulse target; } else { currentPulse - maxStep; if (currentPulse target) currentPulse target; } linearServo.writeMicroseconds(currentPulse); delay(20); } }在舵机控制算法中这类斜坡限制的主要目的不是让动作更漂亮而是减小电流冲击、降低齿轮磨损、避免推杆带负载时突然换向。直线舵机对机械冲击更敏感建议在正式项目里都加上类似的限幅控制。8. 样机演示中的常见问题与排查实际测试直线舵机时比旋转舵机更容易出现几个典型故障。下面是按“问题现象、可能原因、排查方式、解决方案”整理的排查表。问题现象可能原因排查方式解决方案通上电后舵机完全没反应电源没供上或线序接反用万用表测量 VCC 与 GND 之间电压重新对照三线定义接线舵机只是颤抖推杆不动控制信号频率不对检查代码是否设置 50Hz将 PWM 周期调到 20ms推杆能动但方向相反信号线与电机极性理解相反观察舵机在脉宽变化时的方向交换脉宽增减方向或调整安装方向推杆走到一半卡住并异响负载过大或行程干涉断电后手动推拉感受阻力减小负载、调整结构或加大减速比舵机快速发烫持续堵转或长时间极限位置测温升、听电流声设置软限位不要长时间发送极限脉宽推杆停止后位置缓慢漂移供电电压不足或 PWM 占空比不准测电源电压是否跌落更换大电流电源检查共地程序上传后开发板复位舵机启动电流过大拉低主控电压测量开发板供电电压舵机单独供电不能从开发板取电这些问题的共同特点是表面看起来像代码问题实际上很大比例是供电、线序和机械干涉。排查时不要先反复改代码而是先回到最底层供电电压是否稳定、三根线是否正确、信号脉宽是否在舵机有效范围内。按照这个顺序走通常比盲目调参更快。还有一个样品演示常忽略的点直线舵机的“中位”不代表机械中点。旋转舵机通常 1500 微秒对应 90 度中位但直线舵机由于出厂装配差异中位可能并不在推杆行程的物理正中间。因此代码里的 1500 微秒只是一个起始参考位置不代表结构件设计时的中间位置。在搭建演示机构时建议先用实测确定 1500 微秒对应的实际位移再做机械限位避免推杆把结构件顶坏。9. 从样品到成品的工程化建议样品不是终点。题目里提到“样品准备发布闲鱼如果有咨询和需要再继续改进”这本身就是一条很典型的硬件产品化路径。从样品到可发布状态中间差的不是“再焊几根线”而是数据和资料组织。9.1 发布前需要补齐的验证项在没有真实负载参数的情况下样品页面最忌“不明不白”。建议至少补齐以下验证数据第一供电范围。舵机可以接受的电压是多少推荐电压是多少最高电压会不会损坏这决定买家是用 5V 还是 6V 电源。第二PWM 参数。信号周期、有效脉宽范围是多少是否可以兼容标准舵机库把这段信息写进商品描述或使用说明里能大幅减少售后咨询。第三行程和速度。推杆从完全收回到完全伸出需要多少时间最大行程是多少可以录制一条带直尺刻度的视频效果比文字描述直观很多。第四推力或堵转电流。这个参数需要实际测量或查找电机规格不能凭空写。如果暂时没有测推力至少测一下堵转电流和工作电流可以让买家判断自己的电源能不能带起来。9.2 面向用户需要交付的技术资料样品挂出去之后咨询你的人可能分两类一类是纯玩家另一类是做机械臂、仿生手项目的开发者。前者问“怎么接线”后者问“能不能用舵机控制板驱动”“能不能与 Arduino/Pico 配合”。因此发布时最好附带一份简明的技术说明内容包括三线颜色定义、控制代码示例、电源接法。即使是三线直线舵机用户在得到代码之前也未必敢下单。如果每次咨询都要临时发一张接线图沟通成本很高不如把这些信息预先整理好。从搜索热度来看“Arduino 控制舵机”“树莓派 Pico 控制舵机”“舵机 PWM 控制”都是刚需关键词。这意味着很多买家不是不想做而是不知道如何使用。在产品说明里放入 GitHub 仓库地址或博客链接从长期看比单纯写“舵机一个”更有价值。9.3 根据咨询结果继续改进的方向样品发布的真正价值在于收集问题。买家问得最多的问题往往就是下一代产品需要补强的点。例如如果很多人问“能不能多只舵机连在一起控制”可以考虑增加舵机控制板套件版本如果很多人问“推杆能不能承受侧向力”就需要在结构设计里增加导向杆或加强安装孔位如果很多人问“断电后会不会缩回去”就需要考虑是否改用带自锁的丝杆结构或增加刹车装置如果很多人问“能不能用总线舵机协议”则需要评估从三线 PWM 改成串口总线的成本和市场空间。对一个人开发和发布硬件的场景来说不建议一开始就把所有升级功能都做进去。先以标准三线 PWM 控制为基础把最基本的使用体验做好等咨询集中指向某个方向时再迭代。这样做既节省时间也不会让样品功能文件越来越臃肿。下一批样机如果做改进我最建议优先补一个参数推杆在不同负载下的实际行程误差。三线舵机内部闭环通常只能保证位置反馈值和目标一致但在丝杆受压变形或齿轮间隙比较大时外部推杆的实际位置和内部检测位置可能并不一致。这个误差对空载演示没影响但放到机械臂或夹爪上会导致定位不准也是后续“商品化”和“项目应用”之间最重要的一道门槛。