谐波减速器原理与测试:从回差到温升的完整指南

发布时间:2026/8/27 1:43:31
谐波减速器原理与测试:从回差到温升的完整指南 做机器人关节或者精密转台的朋友应该都绕不开谐波减速器这个名字。国内提到这个品类很多人会先说绿的谐波再拿它和进口产品逐项对比。真正在产线上摸过这些减速器的人心里想的往往不是品牌而是那一组组让人又爱又恨的数据回差、刚度、温升、寿命。不同产线、不同批次、不同工况下同样一台减速器表现可以差很多。这篇文章不聊产业格局也不做厂商对比只围绕谐波减速器的原理、选型、装调、测试这一条完整链路展开顺便给出一套可以自己搭建的测试平台方案和完整的 Python 数据分析代码帮助你把“感觉还行”变成“数据证实”。1. 谐波减速器在机器人关节里的位置1.1 为什么机器人关节离不开减速器伺服电机本身的转速通常很高额定转速在 2000 r/min 到 3000 r/min 之间但输出扭矩有限。机器人关节需要的是大扭矩、低转速、高定位精度这三者刚好和电机特性相反。减速器的作用就是在电机和负载之间做一次转速与扭矩的转换把电机的高速小扭矩变成关节需要的低速大扭矩。谐波减速器在工业机器人、协作机器人中尤其受欢迎因为它有几个非常突出的优势单级减速比大常见 50:1、80:1、100:1、120:1最大的可以到 160:1 甚至更高。结构紧凑、重量轻非常适合放在机器人关节内部。回差小精度高能满足绝大多数精密定位场景。同轴输入输出电机、减速器、输出法兰可以直线串联结构设计简单。与 RV 减速器相比谐波减速器体积更小、精度更高但承受冲击载荷的能力相对弱一些与行星减速器相比谐波减速器回差更小但刚度、寿命会受柔轮疲劳限制。所以机器人厂家的通用做法是大臂、底座等重载关节用 RV小臂、腕部等轻载高精度关节用谐波。1.2 谐波减速器要关注的“工厂级”指标在选型和验收谐波减速器时只看减速比是不够的。设计人员要关注以下几类指标。指标含义对整机的影响回差输入轴固定时输出轴在正反方向上的空程角度直接影响定位精度和重复定位精度扭转刚度输出轴承受扭矩时抵抗弹性变形的能力影响关节动态响应和抗扰动能力传动误差实际输出角度与理论输出角度的偏差影响轨迹精度尤其是圆弧插补温升连续运转后壳体温度的升高值影响润滑状态、柔轮寿命和整机热漂移寿命额定负载和转速下持续工作的时间决定售后维护周期和设备可用性空载启动扭矩无负载时驱动减速器转动所需的最小扭矩影响低速抖动和电机选型对于真正接触过谐波减速器的工程师来说回差和温升是日常踩坑最多的两项。下面先看懂它的工作原理再讨论怎么测、怎么分析。2. 谐波减速器工作原理拆解2.1 三大核心零件刚轮、柔轮、波发生器谐波减速器内部结构可以用一句话概括一个椭圆形的波发生器塞进一个弹性薄壁齿轮里让它在一个刚性内齿圈里滚动啮合。刚轮是一个内齿圈齿数固定刚性大通常固定在壳体中。柔轮是一个薄壁筒状外齿轮底部有法兰用于输出开口端是齿部。柔轮在波发生器作用下会发生弹性变形从圆形变成椭圆形。波发生器由一个椭圆凸轮和套在凸轮外圈的柔性轴承组成安装在输入轴上。凸轮转动时会迫使柔轮产生周期性的径向变形。谐波减速器的命名就来源于这种“弹性波状变形”。输入轴每转一圈柔轮上的变形波就沿着圆周“跑”完整的一圈柔轮与刚轮在椭圆的长轴两端啮合在短轴两端脱离中间区域处于啮入和啮出的过渡状态。2.2 齿差传动为什么能实现大减速比减速比实现的本质是齿数差。常见的谐波减速器中柔轮齿数比刚轮齿数少 2 个齿。波发生器转动一圈时柔轮相对于刚轮会后退 2 个齿。也就是说输入轴转一圈输出轴只转过 2 个齿距对应的角度。如果刚轮齿数是 200柔轮齿数是 198那么减速比就等于刚轮齿数 ÷ 2 200 ÷ 2 100更严谨地写减速比 i 刚轮齿数 / (刚轮齿数 - 柔轮齿数) 200 / (200 - 198) 100。这种传动方式带来的好处是啮合齿数多。普通齿轮传动通常是几个齿同时接触而谐波减速器在长轴两端有大量齿同时啮合因此承载能力比同体积的普通齿轮减速器强得多同时回差很小。2.3 减速比与输出方向理解谐波减速器时有一个容易绕晕的点输出方向。当波发生器顺时针旋转时柔轮实际是逆时针缓慢旋转的。也就是说输出方向与输入方向相反减速比是正值但转向是反向的。这个特性在电机控制中要特别注意否则 PID 调试时容易出现方向反了导致飞车的问题。如果希望输入输出同向可以采用双波、四波结构或者通过壳体连接方式改变。但在绝大多数机器人关节应用中反向输出并不影响使用因为电机方向的极性可以在驱动器里设置。3. 关键性能指标与测试意义3.1 回差机器人“指哪打哪”的基础回差也叫背隙或者空程。测试方法是把输入轴固定给输出轴一个正方向扭矩再给反方向扭矩记录输出轴在两个极限位置之间转过的角度。这个角度就是回差。谐波减速器的回差主要来自齿轮啮合侧隙。波发生器与柔轮之间的间隙。柔性轴承的游隙。装配时预紧力不足。普通级谐波减速器回差一般在 1 arcmin 以内高精度级可以做到 0.5 arcmin 以下。1 arcmin 等于 1/60 度也就是 360 度的六十分之一。在机器人末端这种微小的角度误差经过臂长放大后会变成显著的定位偏差。比如臂长 1 米1 arcmin 的误差在末端约等于 0.29 mm 的偏差具体计算公式为1 m × tan(1/60°) ≈ 0.00029 m 0.29 mm。如果回差偏大机器人做往返运动时会出现明显的“画线不重合”问题。3.2 扭转刚度动态性能的隐形天花板扭转刚度的单位是 N·m/arcmin意思是输出轴每产生 1 arcmin 的弹性扭转角度需要施加多大的扭矩。谐波减速器因为柔轮是薄壁件扭转刚度天然低于 RV 减速器。柔轮壁厚越薄柔顺性越好但刚度也越低壁厚增加刚度和承载能力上升但柔轮变形难度也增加疲劳寿命和效率可能下降。这组矛盾是谐波减速器设计的核心。在工程测试中我们会在输出轴逐步施加扭矩比如从 0 加到额定扭矩同时记录输出轴的弹性扭转角度通过线性拟合得到刚度值。如果刚度不足机器人在加速和减速过程中会出现末端抖动尤其在高速高负载场景下非常明显。3.3 传动误差轨迹精度的直接反映传动误差是输入轴按理论速比转动时输出轴实际角度与理论角度的偏差。它和回差的区别在于回差是正反向切换时的空程传动误差是单向转动过程中的角度偏差。传动误差的来源包括齿形加工误差。柔轮变形不均匀。波发生器椭圆度误差。装配偏心。传动误差具有周期性通常一个波发生器周期内会出现一次到两次波动。在机器人做圆弧插补或连续轨迹运动时传动误差会让轨迹出现“花瓣状”或者“水滴状”畸变。测试传动误差需要高分辨率的角度编码器并且输入、输出两侧要同步采集数据。3.4 温升与寿命谐波减速器运转时柔轮持续发生弹性变形齿面之间存在滑动摩擦这些都会产生热量。温度升高会改变润滑脂的黏度初期可能让运转变得更顺滑但长时间高温会加速润滑脂老化导致齿面磨损加剧最终引起柔轮疲劳断裂。减速器厂家通常会在样本上标注额定寿命比如 10000 小时但这是基于额定负载、额定转速、规定润滑条件下的数值。实际项目中如果长期运行在超载状态或者散热条件差寿命可能大幅缩水。温升测试的行业常见做法是在额定转速、额定负载下连续运转每隔一段时间记录壳体表面温度和环境温度直到温度稳定。一般要求壳体温升不超过 40 K有的严格场景要求不超过 30 K。4. 搭建一套谐波减速器测试平台判断一台减速器是否满足要求不能只看样本参数。样本值是特定条件下的测试结果而实际安装方式、负载特性、散热条件都不一样。所以有条件的话最好自己搭建一个测试平台。下面这套平台以“能测回差、传动误差、温升”为目标硬件成本可控适合实验室或者小型研发团队。4.1 硬件清单硬件作用说明伺服电机或步进电机提供输入动力建议选带高分辨率编码器的伺服电机谐波减速器被测对象按测试目标选减速比和额定扭矩输出端角度编码器测量输出轴实际角度建议分辨率不低于 17 bit精度不低于 20 arcsec输入端编码器测量输入轴角度也可以直接利用伺服电机的内置编码器扭矩传感器测量输出扭矩用于刚度测试和负载标定磁粉制动器或电动负载模拟负载可调扭矩便于做温升测试温度采集模块测量壳体温升用 PT100 铂电阻或 K 型热电偶数据采集卡或 PLC同步采集多路信号也可以用 Arduino 编码器计数器方案这里需要提醒一点编码器分辨率直接决定回差和传动误差测试的精度。如果输出端编码器分辨率只有 13 bit也就是每圈 8192 线换算成角度约为 2.64 arcmin那么测回差时连 1 arcmin 的指标都无法可靠分辨。建议输出端编码器分辨率至少达到 17 bit也就是每圈 131072 线对应角度约 0.16 arcmin才能看到毫米级的差异。4.2 机械装配要点测试台的机械装配直接影响测试结果的可靠性这里有几个容易忽略的细节电机轴、输入轴、输出轴必须严格对中。同轴度偏差过大时柔轮会承受额外的径向力导致测得回差偏大、温升偏高。输出法兰与编码器连接时尽量采用无背隙联轴器例如膜片联轴器或波纹管联轴器。减速器壳体固定要刚性足够不能用薄铝板直接锁否则负载时壳体变形会被误判为减速器刚度不足。扭矩传感器应串联在输出负载路径中建议位置是减速器输出法兰 → 联轴器 → 扭矩传感器 → 磁粉制动器。4.3 软件环境测试程序使用 Python 编写主要依赖Python 3.9 pyserial numpy pandas matplotlib如果数据采集硬件是 NI DAQ可以用nidaqmx库如果是串口输出数据的采集模块直接用pyserial读取即可。本文示例以“通过串口读取编码器和温度数据”的常见方式为例硬件型号不同时只需替换数据读取函数。5. 完整测试代码与数据分析5.1 回差测试代码回差测试思路如下锁定输入轴或者让电机保持使能但位置闭环。在输出轴施加正向扭矩记录输出角度。再施加反向扭矩记录输出角度。两次角度之差就是回差。多测几组取平均值避免单次偶然误差。下面代码演示的是通过串口控制扭矩加载器同时读取输出编码器角度。# -*- coding: utf-8 -*- # 文件backlash_test.py # 功能谐波减速器回差测试 import serial import time import numpy as np def read_angle(ser): 从串口读取输出端编码器角度单位为度 ser.write(bGET_ANGLE\r\n) line ser.readline().decode(utf-8).strip() return float(line) def set_torque(ser, torque_nm): 设置负载扭矩单位为 N·m cmd fSET_TORQUE {torque_nm:.2f}\r\n.encode(utf-8) ser.write(cmd) time.sleep(0.5) def measure_backlash(ser, torque_nm, repeat5): 在正负扭矩下测量输出轴空程 results [] for i in range(repeat): # 正向加载 set_torque(ser, torque_nm) time.sleep(0.2) angle_positive read_angle(ser) # 反向加载 set_torque(ser, -torque_nm) time.sleep(0.2) angle_negative read_angle(ser) backlash abs(angle_positive - angle_negative) results.append(backlash) print(f第 {i 1} 次回差{backlash:.4f} 度) return np.mean(results), np.std(results) if __name__ __main__: # 串口设备名按实际环境修改 ser serial.Serial(COM3, 115200, timeout1) time.sleep(1) avg, std measure_backlash(ser, torque_nm10.0, repeat5) print(f平均回差{avg:.4f} 度{avg * 60:.2f} arcmin) print(f标准差{std:.4f} 度) ser.close()注意这个示例假设下位机串口协议的指令格式是GET_ANGLE和SET_TORQUE。如果你的采集设备是 NI DAQ 或者其他数据卡只需把read_angle替换为相应库的读取函数即可测试逻辑完全通用。5.2 传动误差测试代码传动误差测试需要输入、输出同步采样。把输入角度除以减速比得到理论输出角度再与实际输出角度相减。# -*- coding: utf-8 -*- # 文件transmission_error.py # 功能谐波减速器传动误差测试 import numpy as np import matplotlib.pyplot as plt def transmission_error(input_angle_deg, output_angle_deg, ratio): 计算传动误差 input_angle_deg : 输入轴角度数组单位度 output_angle_deg : 输出轴实际角度数组单位度 ratio : 减速比 # 理论输出角度 theoretical_output input_angle_deg / ratio # 传动误差单位度 error_deg output_angle_deg - theoretical_output # 转换为角秒 arcsec1 度 3600 角秒 error_arcsec error_deg * 3600 return error_arcsec # 模拟数据输入轴转 10 圈减速比 100 # 理论输出 10 / 100 0.1 度 ratio 100 input_angle np.linspace(0, 10 * 360, 2000) # 模拟输出轴角度叠加 20 arcsec 的周期误差 theoretical_output input_angle / ratio noise 20 * np.sin(np.linspace(0, 2 * np.pi * 3, 2000)) / 3600 output_angle theoretical_output noise error_arcsec transmission_error(input_angle, output_angle, ratio) plt.figure(figsize(10, 4)) plt.plot(input_angle / 360, error_arcsec) plt.xlabel(输入轴圈数) plt.ylabel(传动误差 (arcsec)) plt.title(谐波减速器传动误差曲线) plt.grid(True) plt.show() print(f最大传动误差{np.max(error_arcsec):.2f} arcsec) print(f峰峰值{np.max(error_arcsec) - np.min(error_arcsec):.2f} arcsec)实际测试中要注意输入角度和输出角度必须同步。如果两路数据时间戳不同步可以先用插值把输出角度对齐到输入角度的时间轴上避免因为采样延迟引入额外误差。5.3 温升测试代码温升测试通常需要跑几十分钟到几小时手动记录数据不现实。可以用下面的脚本定时采集温度数据。# -*- coding: utf-8 -*- # 文件temperature_rise_test.py # 功能谐波减速器温升测试数据采集 import serial import time import csv def read_temperature(ser): 从串口读取环境温度和壳体温度 ser.write(bGET_TEMP\r\n) line ser.readline().decode(utf-8).strip() ambient, housing line.split(,) return float(ambient), float(housing) def run_temperature_test(ser, duration_min, interval_s30): 持续采集温度数据 start_time time.time() end_time start_time duration_min * 60 data [] with open(temperature_rise.csv, w, newline, encodingutf-8) as f: writer csv.writer(f) writer.writerow([timestamp_s, ambient_temp, housing_temp]) while time.time() end_time: elapsed time.time() - start_time ambient, housing read_temperature(ser) print(f{elapsed:.0f}s 环境温度{ambient:.2f}℃ 壳体温度{housing:.2f}℃) writer.writerow([f{elapsed:.1f}, ambient, housing]) data.append((elapsed, ambient, housing)) time.sleep(interval_s) return data if __name__ __main__: ser serial.Serial(COM4, 115200, timeout1) time.sleep(1) result run_temperature_test(ser, duration_min60, interval_s30) ser.close() print(温升测试完成数据已保存到 temperature_rise.csv)测试结束后用 DataFrame 打开 CSV计算稳定后的壳体温度减去环境温度就能得到温升值。import pandas as pd df pd.read_csv(temperature_rise.csv) # 取最后 10 个点作为稳定段 steady df.tail(10) housing_avg steady[housing_temp].mean() ambient_avg steady[ambient_temp].mean() temperature_rise housing_avg - ambient_avg print(f稳定壳体温度{housing_avg:.2f}℃) print(f平均环境温度{ambient_avg:.2f}℃) print(f温升{temperature_rise:.2f} K)6. 常见问题与排查思路谐波减速器在装调和使用中遇到的问题很多不是减速器本身质量问题而是装配和使用方式不对。下面整理几个高频问题。问题现象常见原因解决思路运行时有周期性异响波发生器与柔轮装配偏心润滑不足齿面磨损检查输入轴同轴度重新加注指定润滑脂温升过快摸壳烫手负载超额定散热差润滑脂加注过多或过少降低负载改善散热按厂家规定油量加注定位精度差往返偏差大回差超标编码器安装松动测量回差检查输出端联轴器有无背隙电机低速爬行、抖动传动误差大波发生器椭圆度超差PID 参数不合适测试传动误差检查波发生器重新整定 PID刚装好就卡死柔轮变形异常安装时压坏柔轮波发生器方向装反拆开重新检查确认安装顺序和波发生器方向运行几个月后精度下降柔轮疲劳齿面磨损润滑脂变质检测柔轮端面变形量必要时更换减速器在排查过程中要严格遵循安全流程测试前确认输出轴没有连接人员或设备加载扭矩时从小到大逐步增加避免过载导致柔轮断裂或壳体破裂。6.1 一个典型的温升过高排查案例某项目采用 100:1 谐波减速器额定输出扭矩 50 N·m实际负载 45 N·m看起来余量充足。但连续运行 30 分钟后壳体温度达到 85℃环境温度 25℃温升 60 K明显超标。排查过程检查负载扭矩发现虽然有 5 N·m 余量但设备启停频繁峰值扭矩达到 80 N·m远超额定。检查安装对中发现电机轴与减速器输入轴同轴度偏差约 0.05 mm超过了柔轮允许的径向误差。检查润滑脂发现装配时为了“更顺滑”多加了一倍的润滑脂导致搅油损失增大温升进一步上升。解决措施重新对中恢复标准润滑脂量并在控制程序中增加加速度限制避免峰值扭矩过大。调整后温升降到 32 K。这说明谐波减速器温升问题往往是多种因素叠加不能只盯着单一原因。7. 选型与工程落地建议7.1 选型时不要只留扭矩余量很多工程师选型时只对比额定扭矩和减速比忽略了一个关键点谐波减速器的寿命与负载波动关系很大。频繁的冲击载荷、正反转切换、急停都会让柔轮承受额外的交变应力。建议在选型阶段就统计实际工况的载荷谱包括连续运转时间、峰值扭矩、正反转频率、启停次数再基于这些数据选择规格。如果应用场景有大量急停和碰撞可能性比如协作机器人拖动示教建议在减速器后端增加力矩限制或者碰撞检测算法避免硬冲击损坏柔轮。7.2 装配工艺比选型更影响精度同一台减速器在不同人的手里装出来回差可能差 0.5 arcmin 以上。影响最大的工序是输入轴与波发生器的配合公差。柔轮法兰与输出壳体的定位方式。轴承预紧力。联轴器的对中精度。建议在装配工艺文件里明确标注每个环节的扭矩值、跳动公差和检测工具。不要用“凭手感”的方式锁紧螺栓全部使用扭矩扳手螺栓拧紧顺序也要遵循对角预紧原则。7.3 润滑脂是容易踩坑的环节谐波减速器对润滑脂的要求很高。柔轮与刚轮之间处于滑动和滚动混合摩擦状态润滑脂不仅要降低摩擦系数还要在高温下保持稳定的油膜。实际项目中的常见问题加注量不准。过多导致搅油温升过少导致润滑不足。混用不同品牌润滑脂。不同基础油和稠化剂可能发生化学反应导致润滑脂变稀或结块。长期存放的减速器直接上机。出厂时注入的润滑脂在存放中可能沉降建议先手工转动输出轴数十圈让润滑脂分布均匀。7.4 测试数据要建立档案每一台减速器都应该有自己的测试档案记录出厂编号、测试日期、回差、传动误差、刚度、温升曲线。后续设备出现精度问题时可以对比历史数据快速定位是减速器退化还是装配变动。8. 总结与下一步学习建议这篇文章从谐波减速器的基本结构和工作原理开始重点解释了回差、传动误差、温升等关键指标的物理含义和测试方法并给出了一个可以实际运行的测试平台搭建思路和 Python 测试代码。无论是做机器人本体设计、精密转台研发还是设备维护这些内容都能直接拿来用。接下来如果你打算深入可以从这几个方向继续研究柔轮疲劳寿命模型理解柔轮在不同负载下的应力分布以及如何通过载荷谱预测剩余寿命。学习 RV 减速器对比测试把谐波减速器和 RV 减速器放同一个平台测试你会更深刻地理解两种减速器的适用边界。研究控制算法补偿用测试得到的传动误差曲线在伺服驱动器中做前馈补偿可以进一步提升轨迹精度。搭建自动化检测产线把回差测试、刚度测试、传动误差测试集成为一套自动检测设备用于来料检验和出厂检验。谐波减速器虽然看起来是一个“小零件”但它的性能直接决定了整台设备的精度和寿命。把原理吃透把测试做实比听再多“哪家产品好”的结论都有用。希望这篇文章能帮你在选型、装配和测试时少走一些弯路。