ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

磁编码器加RDC在机器人关节反馈中的选型、解算与标定实践

磁编码器加RDC在机器人关节反馈中的选型、解算与标定实践

1. 关节反馈到底难在哪:从指标倒推方案

机器人关节反馈这个环节,看起来只是把“当前角度”告诉控制器,实际做起来却远不是选个编码器装上那么简单。磁编码器加RDC这套组合之所以在关节模组里被反复提起,核心原因是它同时覆盖了两件互相拉扯的事:既要足够细的分辨率支撑低速平稳和力矩闭环,又要在油污、振动、温漂、电磁干扰的环境里活下来不掉码。我做过几个协作臂和关节模组的反馈链路,踩过的坑八成不是“精度不够”,而是“精度在实验室够、到现场就不够”,或者“静态很准、一动起来就滞后”。

先说清楚这两个角色的分工。磁编码器负责把磁场变化转成正余弦电信号,它对气隙、偏心、温度天生敏感,但结构简单、体积小、抗污染能力强,装在关节轴端或电机尾端都合适;RDC(旋转变压器-数字转换器)负责把正余弦信号解算成数字角度,它的本质是一套带跟踪环的角度解算器,天生适合处理连续、高速、带噪的模拟正余弦输入。把它们放在一起,等于把“敏感元件”和“解算大脑”拆开,各自做自己最擅长的事。这套思路适合做关节模组、协作臂、四足关节、精密转台的工程师参考,也适合刚接触伺服反馈、想搞清楚“为什么不用现成增量编码器”的同学。

我见过不少项目在选型阶段就把问题简化成“位数越高越好”,最后装上去发现低速爬行、换向抖动、过零点跳变。这些问题基本都能在“传感元件—模拟前端—解算—标定—补偿”这条链上找到根因。下面我按自己实际的推进顺序拆:先讲需求和路线取舍,再讲原理,然后是参数怎么算、硬件怎么布、固件怎么写、出问题怎么查。

2. 三条路线的取舍:光电、磁、旋变加RDC

2.1 一台关节对反馈链的六项硬性指标

不管用什么方案,关节反馈最终都要满足同一组指标,我习惯把它们列成六项去卡方案:单圈分辨率、绝对精度、重复性、反馈延迟与带宽、环境鲁棒性、机械集成度。这六项里最容易互相打架的是“分辨率”和“绝对精度”——分辨率是刻度画得多细,绝对精度是刻度画得准不准,两者差一个量级是常态。

举个具体例子:一个17位单圈输出,计数是131072,机械角LSB约0.00275度,看着很细。但如果磁铁偏心0.1毫米、气隙波动0.05毫米,一次谐波误差可能就到0.1度以上,比LSB大三十多倍。所以我在评审方案时,从来不看“分辨率”这一个数字,而是要求供应商或自己实测给出“未补偿误差曲线”和“补偿后误差曲线”两条。

延迟和带宽是另一组容易被忽略的指标。速度环跑1kHz,反馈链路从采样到角度输出如果延迟200微秒,等于占了五分之一拍;如果延迟到500微秒,速度环相位裕度会被吃掉一大截,表现为增益提不上去、一提高就啸叫。这一项在选RDC带宽和通信接口时就必须算清楚,不能等整机调不通再回头改。

指标典型要求(关节模组量级)容易踩的坑
单圈分辨率16至19位只看位数不看有效位
绝对精度优于0.05度(补偿后)用分辨率冒充精度
重复性优于0.01度未做往返测试
反馈延迟小于200微秒忽略SPI与滤波延迟
抗污染油污、粉尘、冷凝只做干燥台架测试
集成度轴向尺寸受限磁铁与轴承不同轴

2.2 光电、磁、旋变三条路各自的地盘

光电编码器精度高、分辨率容易做高,缺点是怕污染、怕冷凝、码盘怕冲击,轴向尺寸也压不下去;磁编码器结构紧凑、抗污染、成本可控,缺点是精度受磁路和温漂牵制,需要标定;旋转变压器加RDC则是工业伺服里的老牌方案,耐高温、耐振动、抗干扰强,缺点是体积大、需要激励源、解算链路复杂、成本高。

我一般的取舍逻辑是这样:中低负载、体积敏感的关节,走磁编码器加专用解算;大负载、高温、强振、长寿命要求的场合,走旋变加RDC;对精度极端苛刻、环境干净的场合,才考虑光电。真正让“磁编加RDC”这个组合有意思的地方在于,它把磁编的紧凑和RDC的解算鲁棒性拼在了一起——磁敏元件输出正余弦,交给类似RDC架构的解算通道处理,既保留了小体积,又拿到了跟踪环带来的平滑输出和速度信息。

还有一层考虑是冗余。高可靠关节里常见的做法是双通道:主通道用磁编做高分辨增量与单圈绝对,辅通道用旋变加RDC做绝对位置与故障比对。两个通道的失效机理不同、供电和走线独立,任何一个挂了另一个还能报出可信角度,让关节安全停机。这套双通道我在一个模拟项目里跑过,成本增加大概三成,但换来的是“单点失效不失控”,值不值取决于应用场景的安全等级要求。

2.3 为什么不直接用现成的增量编码器

有人会问,增量ABZ加零位开关不也能用?能,但关节有几个特殊需求它满足不了。第一是上电即知绝对位置,增量式必须回零,协作臂回零动作在有些场景是不允许的;第二是低速平稳性,增量式在极低速时靠边沿计数,量化噪声直接进速度环,容易出现爬行;第三是抗干扰,ABZ差分在长线和强干扰下错一个边沿就是整圈错位,而正余弦加RDC的解算是连续量,偶发干扰只造成瞬时误差,不会累积成计数错误。

这也是我把“磁编加RDC”看成黄金组合的根本原因:它把“离散计数”换成了“连续解算”。连续解算天然带滤波和跟踪,误差有界、可诊断;离散计数一旦丢步,系统自己都不知道。这个差异在做安全功能设计时特别关键,因为可诊断性本身就是安全设计的前提。

3. 磁编码器和RDC到底怎么配合

3.1 磁敏元件怎么把磁场变成正余弦

常见的磁敏元件走的是磁阻效应或者霍尔效应。磁阻类(AMR、GMR、TMR)做成惠斯通电桥,磁场方向变化时桥臂电阻变化,输出差分电压;霍尔类输出与磁场垂直分量成正比。两类元件在关节里都用得多,差别在于磁阻灵敏度高、信噪比好,但对磁场饱和和温度更敏感;霍尔结构简单、线性范围宽,但原始信号幅度小、需要更好的前端。

关键点是:传感器输出的不是角度,而是一对随角度变化的电压。理想情况下两路是标准的正弦和余弦,实际拿到手的两路一定有幅度失配、直流偏置、正交误差、谐波失真。AMR还有一个特性是输出周期是机械角的两倍,也就是sin2θ、cos2θ,解算时必须做倍角还原,这是新手最容易算错的地方——直接把arctan结果当机械角用,转半圈就跳一次。

所以“解算”这件事本身就是一个独立的技术环节,它要做四件事:去偏置、归一化幅度、修正正交误差、做反正切或跟踪解算。这四件事在专用芯片里由ASIC完成,在分立方案里就得靠RDC或者自己写CORDIC。这就是磁编和RDC能搭上的接口。

3.2 RDC不是旋变专属,它的本质是角度跟踪器

RDC的传统定义是给旋转变压器做解码,输入是带载波的正余弦,输出数字角度和速度。但拆开看内部结构,它的核心是一个Type II跟踪环:把输入的正余弦与内部估算角度的正余弦做乘法相减,得到与角度误差近似成正比的误差信号,再经过误差放大、积分、得到速度估计,速度积分得到角度。这个环路对输入信号的来源其实不挑,只要输入是一对正交的正余弦,它就能跟踪。

这个认识很重要。因为很多磁编芯片输出的是模拟正余弦(差分),这时候用RDC类解算通道去接,比用MCU内部的ADC采样再做软件arctan要好——环路带宽、噪声抑制、速度输出都是硬件保证的,不占CPU,延迟确定。我实测过同一颗磁敏元件分别走“MCU软件解算”和“硬件解算通道”,低速下速度信号的噪声差距很明显,软件解算那条在1rpm以下抖得厉害,硬件通道平滑得多。

注意:把RDC用于磁编信号时,必须确认输入信号的频率范围和RDC的跟踪速率上限匹配。磁编输出的是基带正余弦,没有载波,而部分RDC芯片是按“激励加调制”的架构设计的,输入端有解调环节,这类芯片不能直接接基带信号,选型时一定要看清输入形态。

如果走旋变路线,RDC的输入端还要一路激励信号,通常是几kHz到20kHz的正弦载波,由RDC或外部振荡器产生,经缓冲放大后送到旋变初级。激励的质量直接决定解算精度,这是硬件设计里最容易省出问题的地方。

3.3 跟踪环的带宽、滞后和延迟怎么算

这部分是我认为最该算清楚、也最容易被跳过的地方。跟踪环近似为二阶系统,自然频率ωn与环路带宽相关。对匀速输入,稳态角度滞后约等于 v/ωn,其中v是角速度(rad/s);对匀加速输入,稳态滞后约等于 a/ωn²。

拿一组数算一下:关节最高转速100rpm,即10.47rad/s;跟踪环带宽设100Hz,ωn约628rad/s;匀速滞后约10.47/628≈16.7mrad,约0.95度。这个数字说明,如果只追求平滑而把带宽压得很低,高速时角度就明显落后,速度环会把它当成相位滞后,动态性能直接塌掉。反过来把带宽提到500Hz,ωn约3140rad/s,滞后降到0.19度,但噪声通过量上去了,低速抖动会变大。

所以带宽不是越高越好,得按“最高转速下的允许滞后”和“最低转速下的允许噪声”两头卡。我的经验值是:先按最高转速的滞后不超过0.2度定下限,再看静止时角度峰峰值噪声是否可接受定上限,中间取值。加速工况还要验算a/ωn²,四足关节这种高动态场合,这一项经常成为约束。

另外别忘了把通信延迟、滤波延迟、采样延迟一起加进来。SPI读一次三字节在10MHz下大约几微秒,可以忽略;但为了平滑加的二阶低通,如果截止频率设50Hz,带来的群延迟就有几毫秒,这一项比RDC本身的滞后大得多,必须一起算进环路模型里。

4. 选型与关键参数计算

4.1 分辨率、精度、重复性别混着谈

这三个词在选型会上被混用是常态,我习惯用一句大白话区分:分辨率是尺子上有多少格,精度是格子和真实长度的偏差,重复性是同一位置反复量出来一致不一致。关节控制里,分辨率影响低速平稳度,精度影响绝对定位,重复性影响往复运动的跟随一致性。

具体到数字:17位单圈LSB是0.00275度;如果磁路误差补偿后做到0.05度,那有效精度大约相当于12.5位,也就是说后四位半是“看着细、实际不准”的部分。这不是说高位没用,高位在速度估计和低速平滑上仍然有价值,只是不能用它去标称定位精度。我在文档里一般写两个数:“输出分辨率17位,补偿后绝对精度正负0.05度”,避免误导。

重复性单独测,方法是同一目标角往返20次,记录每次读数的极差。磁编方案的重复性通常比绝对精度好一个量级,因为偏心这类系统性误差在往返中会重复出现,而随机噪声小。如果重复性也差,那多半是安装松动、磁铁胶接失效或者前端噪声太大,属于硬件问题不是标定能救的。

4.2 位数、转速、带宽的匹配账

减速比会放大分辨率,这一点常被忽略。电机端17位,减速比100,折算到输出端相当于17+log2(100)≈23.6位,输出端LSB约2.7e-5度。这时候电机端再往上堆位数,对输出端定位帮助有限,瓶颈已经转移到减速机背隙和结构刚度上了。反过来,如果减速比只有10,电机端位数就值得往上做。

转速匹配是另一笔账。RDC的分辨率模式和最大跟踪速率是互相牵制的,一般规律是分辨率降一档,允许跟踪速率提升一档。选型时要按“最高转速乘以安全系数1.5”去卡跟踪速率,不能按额定转速卡。我在一个高速关节上就吃过这个亏:按额定3000rpm选了12位模式,结果加减速瞬态时跟踪环失锁,角度输出出现大跳变,后来降到10位模式才稳。

参数计算方式示例值备注
单圈LSB360/2^nn=17,约0.00275度仅代表刻度
输出端等效位数n+log2(减速比)17+6.6≈23.6位受背隙限制
匀速滞后v/ωn10.47/628≈0.95度需按最高转速算
加速滞后a/ωn²a=100rad/s²,约0.25mrad高动态场合重点
跟踪速率裕量最高转速×1.54500rpm按模式降档验算

4.3 接口怎么选:SPI、并口还是ABZ加模拟

接口选择直接影响延迟和系统复杂度。SPI最省线,成本低,但要注意时钟极性和读取时序,还要考虑多轴共用总线时的仲裁延迟;并口延迟低、时序简单,但引脚多;ABZ加模拟正余弦输出最灵活,控制器可以自己决定用硬件解算还是软件解算,代价是线束变粗。

我的实际做法是:主控用SPI读绝对角度做位置环,同时把正余弦或ABZ接到专用的解算或计数通道做交叉校验,两路数据在固件里比对,偏差超过阈值就报故障。这样既有绝对位置的便利,又有独立通道做 plausibility 检查,成本增加很小。

提示:SPI读取一定要放在PWM周期的固定时刻,比如中点触发,避开功率管开关瞬间。我见过反馈噪声大、查了半天最后发现是采样时刻跟着PWM随机漂,跟编码器本身没关系。

5. 硬件落地:磁路、激励与抗干扰

5.1 磁路设计:气隙、偏心和对磁

磁编方案的精度上限,七成在磁路。磁铁与传感器的同轴度、气隙一致性、磁铁充磁均匀性,这三项决定了原始信号有多“脏”。我一般要求轴向跳动和径向偏心控制在0.05毫米以内,气隙按芯片手册推荐值取中间偏小,因为气隙越大信号幅度越小、信噪比越差。

磁铁选型上,多极对磁铁能提高电气周期数、提升分辨率,但也放大安装偏心带来的一次谐波误差,需要更精细的标定。我倾向的做法是:小关节用一对极,结构简单、标定容易;中大关节用多对极配合多点标定,把偏心误差压下去。磁铁和轴的连接方式也很关键,胶接要用刚性胶,不能用软胶,否则温升后磁铁微动,零点就漂了。

还有一个常被忽略的点:周围铁磁件的影响。关节里到处是钢件、轴承、螺钉,它们会改变磁场分布,而且这种影响随装配状态变化。我的经验是标定必须在“最终装配状态”下做,不能在半装配的台架上标完再装回去,否则标定等于白做。

5.2 激励与前端:缓冲、差分和共模

走旋变加RDC路线时,激励缓冲是硬件里最容易出问题的一块。激励信号要求失真低、幅度稳、驱动能力强,直接拿RDC的激励输出去驱动旋变,长线或高变比时波形会塌,解算精度跟着掉。我的做法是加一级运放缓冲,用低失真、高压摆率的器件,输出串小电阻做阻抗匹配,反馈端单独走一对差分回来。

磁编路线的模拟前端重点是差分走线和共模抑制。正余弦两对差分线要等长、平行、靠近地平面走,远离功率回路和电机相线。我在布线时会把模拟前端放在靠近传感器的位置,先做差分放大和低通,再走长线到主控,避免把微弱信号拉长距离。低通截止频率按最高电气频率的5到10倍设,既能滤掉开关噪声,又不会引入过多相位滞后。

5.3 接地与屏蔽:那些“看起来玄学”的细节

反馈噪声问题里,接地占一大半。我的原则是模拟地和功率地单点连接,连接点选在电源入口附近,模拟部分用完整地平面,不要开槽跨分割。屏蔽层一端接地,不要两端接,两端接容易形成地环路,反而把干扰引进来。

线束选择上,差分信号用双绞加屏蔽,屏蔽层和连接器外壳360度搭接,不要只靠一根“猪尾巴”引线。电机相线和反馈线必须分开走线槽,交叉时尽量垂直。这些听着像老生常谈,但我在现场排查过的“编码器跳变”问题里,至少一半最后落在线束和接地,而不是芯片。

注意:做温漂测试时要把整机跑热,不要只测冷机。磁铁剩磁随温度变化,前端偏置也会随温度漂,很多误差只有到热稳态才暴露出来,冷机标定、热机跑偏是常见现象。

6. 固件与标定:从原始码到可信角度

6.1 上电流程与多圈计数

上电流程要设计得可诊断,我的一般顺序是:先给传感器和前端上电,等稳定时间(按手册,一般几毫秒到几十毫秒),再读一次自检状态,确认信号幅度在合理窗口内,然后才开始输出角度。如果一上电就急着读,模拟前端还没稳,第一帧数据往往是错的,多圈系统会把这个错误锁进去。

多圈计数是另一个坑。单圈绝对加多圈计数,多圈部分靠电池备份或者机械齿轮组。电池方案要注意掉电检测和写入时机,必须在电压跌到阈值前把圈数写进非易失存储;机械方案要注意齿轮组的回差,圈数换算时要做方向一致性检查。我做过一个模拟项目,掉电瞬间正好在圈数翻转边界,恢复后差了一圈,后来加了双备份和校验才彻底解决。

6.2 零点与偏心标定:多点拟合比两点靠谱

零点标定最简单的是找个机械限位对一次,但这种方法只能对零点,对不了偏心。偏心误差是一次谐波,表现为整圈误差曲线像一个正弦波,用两点标定根本消不掉。我的做法是整圈采32到64个点,做一次谐波拟合,把幅度和相位算出来,然后在固件里做反向补偿;如果磁铁是多对极,还要对电气周期做逐周期补偿。

椭圆度校正也不能省。幅度失配和正交误差会让正余弦轨迹变成椭圆,直接arctan会带来二次谐波误差。校正方法是分别求两路的幅值和偏置,归一化后再算角度。这一步在专用解算芯片里通常自动做,但如果你走的是原始模拟采样,就得自己实现。

标定的验收标准我一般这么定:补偿前误差峰峰值记录在案,补偿后要求降到原来的三分之一以下,且残余误差曲线不能有明显的一次谐波残留。如果补完还有明显一次谐波,说明补偿相位算错了,或者标定时的装配状态和实际不一致。

6.3 滤波、温补与故障检测

滤波要分层做:解算通道内部有跟踪环自带平滑,固件里再加一级轻量低通处理速度估计,位置通道尽量少滤以免引入延迟。我习惯给位置和速度分别设不同截止频率,速度可以滤得狠一点,位置必须保相位。

温补的对象主要是零点漂移和幅值漂移。做法是在温箱里跑几个温度点,记录零点和幅值随温度的变化,拟合成线性或二次曲线写进固件。注意温补用的温度传感器要贴在磁铁或传感器附近,贴在主控板上测的是板温,不是磁路温度,补了也没用。

故障检测至少要覆盖四类:信号幅度超窗(磁铁脱落、气隙异常)、正余弦平方和偏离常数(前端故障)、双通道偏差超限(冗余比对)、跟踪环失锁标志。这四类我都要求能在固件里独立报出,而不是笼统报一个“编码器故障”,否则现场排查根本没法定位。

7. 常见问题与排查速查表

下面这张表是我这些年攒下来的,基本覆盖了磁编加RDC链路里八成以上的现场问题。用法是先看现象对号,再按“排查顺序”从便宜到贵逐项排除,别一上来就怀疑芯片。

现象可能原因排查顺序处理办法
整圈误差呈正弦磁铁偏心、轴承不同轴先测偏心再查磁铁多点标定做一次谐波补偿
转半圈跳变一次倍角未还原(AMR特性)查解算公式角度除以2再折算机械角
低速爬行、速度抖动分辨率不足或速度噪声大看原始码跳动提高解算带宽、优化速度滤波
高速时角度滞后明显跟踪环带宽不足算v/ωn提高带宽或降分辨率模式
加减速瞬态角度跳变跟踪速率超限失锁查失锁标志降档或提高跟踪速率裕量
上电首帧数据错误前端未稳定就读取查上电时序加稳定延时与自检门限
温升后零点漂移磁铁剩磁与前端偏置漂移冷热机对比加温度补偿、刚性胶接
偶发跳码、无规律接地、线束、开关噪声耦合查采样时刻与走线中点采样、分离走线、单点接地
双通道数据偏差大标定状态不一致、装配变化比对两通道原始值最终装配态重新标定
多圈计数错一圈掉电写入时机或回差查掉电检测阈值双备份加校验、方向一致性检查

再补两个表格里放不下的经验。第一个是“换向抖动”:很多关节在过零附近抖,查来查去是速度估计在低转速时被量化噪声主导,解决办法不是加密滤波,而是把速度估计改成基于位置差分加跟踪环速度输出的融合,低速用跟踪环速度,高速用差分速度,切换点按噪声水平定。第二个是“标定后反而变差”:多半是标定点数和拟合阶数不匹配,32点做二次拟合会过拟合,把噪声也拟合进去了,正确做法是阶数不超过点数的一半,且残差要检查。

最后分享一个我在实际装配里总结的小技巧:标定前先做一次“装配一致性检查”,把关节正转一圈、反转一圈,比较两条误差曲线的重合度。如果重合度好,说明机械装配稳定,标定结果可复用;如果两条曲线分离明显,说明有回差或者松动,这时候标定再多点也没意义,得先把机械问题解决。这一步花不了几分钟,但能省掉大量返工。后续如果要把这套方案往更高安全等级推,我的建议是把双通道比对和失锁诊断做成硬件独立路径,而不是全压在同一个MCU的固件里,这样单点失效的覆盖面会小很多。

返回列表