ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AS5600磁编码器选型与安装避坑:径向磁铁、间隙与AGC调校实战指南

AS5600磁编码器选型与安装避坑:径向磁铁、间隙与AGC调校实战指南 做旋转角度反馈AS5600这颗磁编码器已经快成开源圈和DIY圈的默认选项了。12位分辨率、I2C/PWM输出、价格便宜拧个旋钮、做云台反馈、给小车电机加个闭环它都能干。但真等你自己画好板子、买来磁铁往上装的时候很容易被一个问题卡住为什么别人随手一贴就是满量程精度我装出来却角度乱跳、线性差、甚至读出的数据像在抽风我踩过一圈之后发现大多数问题都出在选型和安装环节——磁铁形状、磁化方向、间隙距离这三个变量只要有一个不对后面调软件、做校准都是白忙活。这篇就把我实际测试过的磁铁组合和安装距离整理出来包括每个组合下角度噪声、AGC读值、状态寄存器的表现再讲清楚每一类异常背后的原因。无论你是第一次用AS5600做闭环控制还是已经装上但发现精度不对按着这篇里的步骤重新排查一遍基本都能找到问题。1. 先搞清楚AS5600的测量原理选型才不容易翻车1.1 内部霍尔阵列在测什么AS5600内部并不是只在中心点放一个霍尔元件而是一组霍尔传感器阵列配合后端的算法测量的是平行于芯片表面的磁场矢量方向。也就是说它要感知的不是“磁场有多强”而是“磁力线在芯片平面内指向哪个方向”。这解释了为什么安装要求那么苛刻磁铁必须产生一个方向随旋转角变化、且主要在芯片平面内的磁场。径向磁化的圆柱磁铁旋转时在芯片位置产生的磁场方向会跟着一起转AS5600就能把这个方向解算成0~360度的角度值。如果磁铁的磁化方向不对或者安装姿态不对磁场矢量在芯片平面内的分量就会很弱测量角度的信噪比和线性度都会大幅下降。另外一个重要点是AGC全称是自动增益控制。AS5600内部会根据磁场强度自动调整放大倍数把信号调理到合适范围。这个值可以通过寄存器0x1A读出来数值越小表示磁场越强数值越大表示磁场越弱。我一般会先看这个值再决定是否调整安装间隙。1.2 为什么磁铁和间隙比想象中更关键很多人以为磁编码器是“非接触式的随便放个磁铁就能用”这个想法坑了不少人。AS5600的工作范围其实有明确边界磁场太弱时霍尔信号被噪声淹没角度输出会抖动甚至状态寄存器直接报告“磁铁未检测到”磁场太强时信号进入饱和区内部算法解算出来的角度会出现死区和非线性。磁铁形状决定了磁场在空间中的分布方式间隙距离决定了芯片位置上看到的场强。两者配合起来才能让AGC落在理想区间。这也是为什么同样的AS5600换一颗直径小一半的磁铁或者多垫了1mm间隙实测结果能差出好几倍。最好的验证方法就是直接读状态寄存器。AS5600的状态寄存器地址是0x0B其中bit1表示是否检测到磁铁bit2表示磁场过弱bit3表示磁场过强。我每次装完第一件事就是把这三个位打出来看一眼比任何理论计算都直观。1.3 AS5600的输出模式与典型应用场景AS5600有两类主要输出方式。第一种是I2C从0x0C和0x0D两个寄存器读原始角度12位分辨率对应0~4095每个LSB大约0.0879度。第二种是PWM占空比按比例表示角度默认频率大约在1kHz左右适合只想用一根信号线接上位机的场景。PWM脚加个RC低通滤波后还能当模拟电压用但响应速度会慢一些。从应用场景看AS5600最适合的是位置闭环、旋钮、云台反馈、小角度测量这类使用场景。用在电机控制里把它放在电机输出轴末端做位置环反馈是完全可行的因为位置环的更新频率通常就1kHz上下。但如果要做FOC那种需要几十kHz角度更新的方案AS5600就力不从心了那种场合该考虑的是AS5047P这类带SPI和ABI增量输出的编码器。1.4 顺手提一下方向配置AS5600有个方向引脚DIR也有对应的配置寄存器。当DIR接地时顺时针旋转角度增加接高电平时方向反过来。我遇到过装好之后发现角度变化方向和实际旋向相反第一反应是磁铁装反了折腾半天才发现是DIR忘了配置。如果你用I2C方式读取建议在初始化时就明确定下方向后面做闭环时也不用再改符号。2. 磁铁选型形状、尺寸、磁化方向缺一不可2.1 磁铁形状的影响AS5600最常见的搭配是圆柱形磁铁这也是最不容易出错的选择。圆柱磁铁的磁场关于旋转轴对称只要安装时保证旋转轴和磁铁中心轴重合角度输出就比较理想。我强烈建议新手优先用实心圆柱径向磁铁而不是圆环或者方块。圆环磁铁的问题在于中心有孔中心区域的磁场会被削弱。如果必须让一根轴穿过磁铁要选更大的外径和足够的厚度否则AG C会明显偏大角度噪声也跟着变大。方块磁铁理论上也能用但它的磁场谐波成分比较复杂容易让角度输出出现非线性的周期误差而且安装相位很讲究不如圆柱形省心。我实测过的磁铁中Ф6×3mm直径6mm、厚度3mm的圆柱径向磁铁是最省事的。在1~2mm间隙下AGC落在100到170之间原始角度噪声很小360度全程线性度也稳定。更大直径的Ф8×3mm效果更好但体积也更大很多小型电机轴上装不下。2.2 磁化方向是最容易被忽略的坑这是我踩过最深的一个坑。AS5600需要的是径向磁化磁铁也就是磁极在圆柱的侧面上——N极在圆柱侧面的一侧S极在相对的另外一侧。很多人从网上买磁铁时只看了尺寸没注意磁化方向结果收到的是轴向磁化磁铁磁极在上下两个端面装上去之后角度读数完全乱套。区分方法很简单。拿一个小指南针靠近磁铁径向磁化的圆柱磁铁靠近侧面时指南针会有明显偏转靠近上下端面时几乎没有反应。轴向磁化的磁铁正好反过来端面附近磁性最强侧面几乎吸不住铁屑。另一个方法是看商家的参数通常会标注“径向充磁”或“轴向充磁”。AS5600相关项目一定要买“径向充磁”千万不要凭图片里那个红色蓝色的颜色分布猜因为很多商品的渲染图并不能真实反映充磁方式。2.3 不同磁铁尺寸的实测对比下面这组数据是我在同一块AS5600测试板、同一温度环境下测的磁铁都是N35钕铁硼径向充磁。角度噪声指的是固定磁铁不动时连续读取1000次原始角度后换算成的最大偏差。磁铁规格磁化方向安装间隙AGC读值角度噪声说明Ф6×3mm径向1.0mm约110±0.05°推荐组合非常稳Ф6×3mm径向2.0mm约150±0.08°推荐组合兼容性好Ф6×3mm径向3.0mm约200±0.2°可用但噪声开始增加Ф6×3mm径向4.0mm接近上限±0.8°不推荐ML标志间歇触发Ф8×3mm径向1.5mm约95±0.04°大磁铁余量更足Ф5×2mm径向1.0mm约190±0.15°勉强能用装配要求高Ф4×2mm径向1.0mm接近上限±0.5°不推荐磁场太弱Ф6×3mm轴向1.0mm状态异常乱跳不能用方向不对需要说明的是AGC读值会因为磁铁批次、材料等级、PCB布局不同而有波动但这组数据的趋势是稳定的磁铁越小、间隙越大AGC越接近上限角度噪声也越大。我个人的经验是只要条件允许尽量选Ф6×3mm以上尺寸的径向磁铁间隙压在2mm以内。这样即使结构上有轻微松动或温度变化也不至于退到ML标志频繁触发的区域。2.4 材质和温度漂移磁铁材质也会影响长期稳定性。钕铁硼的磁性很强同样体积下能提供很高的磁场强度但它的剩磁温度系数约为-0.12%/°C意味着温度升高时磁场会变弱。如果是户外设备或者温升明显的电机磁铁的磁场变化会直接反映到AGC上进而影响角度精度。铁氧体磁铁的温度特性好一些但同体积下磁场强度弱很多需要更大的磁铁尺寸才能满足AS5600要求。大多数室内场景用钕铁硼N35或N42就够了不需要为了温度问题专门换铁氧体。但如果你做的是温差很大的设备建议在高温和低温工况各做一次标定或者提前留好间隙余量避免高温时磁场弱到ML触发。3. 安装间隙与同心度决定精度的毫米级细节3.1 推荐间隙范围到底是多少AS5600数据手册并没有给出一个强制不变的间隙值因为它取决于你用的磁铁尺寸和磁化强度。但从实测来看Ф6×3mm径向磁铁最舒服的间隙在0.8mm到2.5mm之间。间隙太小小于0.5mm一方面容易在轴向串动时碰撞芯片另一方面磁场过强会让状态寄存器的MH标志置位输出反而会变差间隙太大超过3.5mm磁场衰减明显角度噪声和线性误差都会上升。我一般把“AGC读值”当作间隙是否合适的判断标准AGC在80到180之间属于非常理想180到230还可用但需要注意超过230或者状态寄存器出现ML标志就说明磁场偏弱需要减小间隙或换更大的磁铁。相反如果AGC低到六七十以下且MH标志出现就要适当增大间隙别让芯片工作在饱和区。3.2 间隙过大和过小的具体表现间隙过大最常见的现象是磁铁转动时角度基本趋势对但读数“毛刺”很多尤其在小角度微动时最明显。如果间隙继续增大到ML标志触发角度会偶尔跳到一个固定值或者干脆不再更新看起来像芯片死机了其实只是磁场弱到无法稳定解算。间隙过小则相反角度在大部分区间看起来正常但在某些位置会出现突然的跳变或“台阶”这是因为霍尔阵列在强磁场下部分元件进入了饱和解算出的方向角被扭曲。这种情况比磁场弱更隐蔽很多人会误以为是程序问题反复调滤波参数也没有用最后才发现是磁铁贴太近了。3.3 偏心误差的特征与规避手段间隙解决了还要看同心度。磁铁中心与芯片中心在平面内的偏移就是偏心。偏心误差最典型的特征是角度误差曲线呈现“一个完整周期”的正弦形状也就是说旋转一圈过程中误差先增大再减小。偏得越厉害误差幅度越大。我第一次做云台反馈时没注意电机轴和磁铁座的同心度靠肉眼大概对了个位置就固定了结果实测误差做到接近±2度。后来重新用车床做了一个带定位台阶的磁铁座轴向安装后偏心控制在0.1mm以内误差立刻降到±0.3度以内。这个教训充分说明机械结构上的同心度比任何软件滤波都重要。规避偏心主要有三个手段机械定位在磁铁座上做台阶或凹槽让磁铁只能掉进一个固定位置。用轴心定位工装装配时先把磁铁套在一根导向轴上再胶接。如果偏心无法完全消除做一次360度误差标定把误差表存进MCU里查表补偿。3.4 实测数据间隙与AGC、角度噪声的关系把间隙从0.8mm逐步增大到4mm每隔0.2mm记录一次AGC和角度噪声结果非常直观。下面是Ф6×3mm径向磁铁的一组典型数据间隙(mm)AGC固定角度噪声(±°)状态标志评价0.8约95±0.06正常很稳但注意轴串动1.2约120±0.05正常最佳工作点1.6约140±0.07正常推荐2.0约155±0.08正常推荐2.6约185±0.15正常可用3.2约215±0.3接近ML慎用4.0250±0.8ML间歇触发不可用可以看到2mm以内是一个很舒服的平台期角度噪声基本控制在±0.1度以内。超过2.5mm之后电场衰减的影响开始变大3.2mm以后噪声跳变明显4mm已经不能正常使用了。如果你的结构只能做到3mm的间隙建议换Ф8×3mm或Ф10×4mm磁铁来弥补磁场衰减。4. 从原理图到装机完整的AS5600闭环位置测量安装流程4.1 硬件连接与I2C读取基础先看电路。AS5600的VCC可以接3.3V或5V但I2C电平要跟MCU匹配如果MCU是3.3V就把AS5600的VCC接到3.3V避免电平不一致。SDA和SCL各加一个4.7kΩ上拉电阻引脚悬空时AS5600内部虽然也有较弱的上拉但长线或快速I2C下还是建议外部上拉更稳。I2C地址是固定的0x36同一总线上不能接两个不同地址的AS5600除非用I2C多路复用器。这个坑很多人遇到想用四个AS5600读四路角度结果发现地址冲突只能换别的方案。读取角度的核心代码很简单我以Arduino为例#include Wire.h #define AS5600_ADDR 0x36 void setup() { Wire.begin(); Serial.begin(115200); } uint8_t readReg(uint8_t reg) { Wire.beginTransmission(AS5600_ADDR); Wire.write(reg); Wire.endTransmission(false); Wire.requestFrom((uint8_t)AS5600_ADDR, (uint8_t)1); if (Wire.available()) return Wire.read(); return 0; } uint16_t readAngleRaw() { uint8_t high readReg(0x0C); uint8_t low readReg(0x0D); return (uint16_t)((high 8) | low); } void loop() { uint16_t angle readAngleRaw(); uint8_t status readReg(0x0B); uint8_t agc readReg(0x1A); float degree angle * 360.0f / 4096.0f; Serial.print(angle); Serial.print(angle); Serial.print( degree); Serial.print(degree); Serial.print( agc); Serial.print(agc); Serial.print( status0x); Serial.println(status, HEX); delay(50); }这段代码读到的angle范围是0~4095换算成角度时乘以360除以4096即可。状态寄存器0x0B的bit1是磁铁检测bit2是磁场过弱bit3是磁场过强调试时留意这三个位的状态变化就很直观。4.2 标准安装流程我的标准安装流程分七步每步都很简单但跳步就会踩坑。第一步先确定机械结构。如果磁铁装在电机轴上要确认电机轴端面能容纳磁铁且旋转时端面跳动不过大。轴端最好做一个沉孔或定位台阶保证磁铁中心与旋转轴重合。第二步初步固定磁铁。推荐先用热熔胶或双面胶临时固定磁铁不要直接上结构胶。这样后续测试发现问题还能调整等确认角度读数正常后再永久固定。第三步上电读取状态。运行上面的测试代码看status寄存器的MD、ML、MH标志位。如果MD不是1说明磁铁没被识别到检查距离和磁铁方向如果ML或MH是1先调间隙。第四步调整安装间隙。通过垫片或调整电机安装高度让AGC落在100到200之间。这个区间是我的“黄金区间”温度变化和机械公差都有余量。第五步慢速旋转测试。用手或电机带动磁铁慢速转一整圈观察角度是否线性递增或递减。如果中途出现跳变、回返、台阶先把间隙和同心度查一遍。第六步检查零位。确认机械零点对应的角度值后续软件里可以通过零点校准来修正。第七步永久固定。确认所有参数正常后用结构胶或螺丝锁紧静置固化后再测一次防止固化过程把磁铁位置带偏。4.3 用AGC和状态寄存器验证磁场是否合理这一步非常推荐作为出厂测试程序固定项。以实际装机为例我一般会在代码里加三段判断如果状态寄存器的MD位为0上报“无磁铁”直接停止测试。如果ML位为1上报“磁场过弱”提示用户检查磁铁尺寸和间隙。如果MH位为1上报“磁场过强”提示用户增大间隙或换小磁铁。配套的AGC还可以用于监测磁铁状态随时间的变化。如果过了几个月发现AGC比当初装机时大了很多说明磁铁可能出现退磁、位置偏移或者温度变化剧烈。这个信息对长期运行的设备很有价值。4.4 磁铁固定胶水、机加工件还是3D打印座磁铁固定方式直接影响长期稳定性。最不建议的做法是“铁磁材料做底座然后直接吸上去”因为金属底座本身会干扰芯片附近的磁场分布而且磁铁和铁磁材料之间的吸力在振动环境下可能让磁铁发生位移。如果只是做原型验证用热熔胶临时固定方便反复拆装。正式产品我更推荐机加工的铝制或塑料磁铁座中心做一个直径和磁铁外径一致的沉孔把磁铁嵌进去。铝是非磁性的不会干扰磁场黄铜、ABS、POM也都是不错的选择。3D打印件也能用但要注意两点一是打印材料吸潮后可能膨胀二是打印层纹可能让磁铁座不够光滑安装时磁铁容易歪。建议打印后用砂纸轻轻打磨沉孔内壁确保磁铁能垂直嵌入。5. 避坑实录我见过的典型问题排查5.1 角度跳变和噪声大角度跳变是我被问得最多的问题。表现是磁铁匀速转动但读出的角度偶尔从300度瞬间跳到60度类似“抽风”一样的跳变。优先检查几件事读AGC和状态寄存器如果AGC接近上限或者ML触发基本都是磁场太弱。确认磁铁是径向充磁不是轴向充磁。检查磁铁中心与芯片中心的偏移偏心过大在部分角度上会出现明显突变。检查I2C线路是否受电机干扰电机接线和信号线分开走必要时给电机供电加滤波电容。噪声大则是另一种情况角度不会大范围跳变但固定不动时读数像心跳一样起伏。常见原因是间隙偏大、磁铁尺寸偏小或者电源纹波过大。先调AGC再给AS5600供电脚加一个100nF和10μF的电容组合通常能压下来。5.2 磁铁消磁和位置移动钕铁硼磁铁的居里温度虽然很高但在80℃以上长时间工作会有明显退磁风险。电机发热严重的工况下如果磁铁紧贴在电机轴端温度可能超过预期导致磁场减弱、AGC变化。我见过一个做电动工具反馈的案例磁铁直接装在电机轴端跑一会儿就开始报ML后来改成隔一段距离通过尼龙联轴器传动的方案才解决。位置移动的问题很多来自胶水。热熔胶在高温下会软化AB胶如果没等完全固化就装机也可能让磁铁被离心力甩出去。固定磁铁时一定要等胶水完全固化并做一次高速旋转测试确认磁铁没有松脱。5.3 焊接和引脚问题AS5600是贴片封装引脚间距不大手工焊接时容易连锡。另外有些AS5600模块板上还带其他I2C器件或电平转换芯片如果直接把模块当成一个简单传感器接到MCU注意供电电压和模块上的电平转换方向是否匹配。还有一个细节如果PCB下方有走线而AS5600底部有暴露的焊盘焊接时要注意底部焊盘是否接地、是否影响磁场。虽然磁铁在芯片上方但底部大量金属覆盖还是可能带来一些寄生效应量产前最好实测确认。5.4 和AS5047P怎么选很多人在选型时会纠结AS5600还是AS5047P。两者虽然都是磁旋转编码器但定位有明显差异项目AS5600AS5047P分辨率12位14位输出接口I2C/PWMSPI/ABI/UVW典型非线性度±0.5°级别更高适合场景位置环、旋钮、云台FOC电流环、高速电机成本低高开发难度低更高如果是做一个电机的位置闭环AS5600性价比非常高但如果你要跑FOC需要高频读取转子的绝对角度和增量位置AS5047P的SPIABI组合更合适。AS5600的PWM输出更新率大约1kHz量级在高速运转的FOC系统里会明显跟不上。5.5 闭环控制中采样延时问题这里单独说一下闭环控制系统里的采样延时。很多人以为I2C读一下角度很快但AS5600内部角度数据的刷新能力和I2C总线的繁忙程度都要考虑。在1kHz中断里读取I2C角度虽然能跑但如果同一总线上还有其他传感器或者系统的位置环频率已经到2kHz以上就要重新评估。我的经验是AS5600做舵机或云台的位置环控制在500Hz到1kHz是没有问题的。做循迹小车这类底盘驱动只要不是特别高速也没问题。但如果是机械臂关节电机这种需要响应很快、还带速度前馈的建议改用带ABI输出的AS5047P或者换成SPI方式读取降低延时和抖动。5.6 OTP烧写要注意AS5600里有一块One-Time Programmable存储区ZMAX、ZMIN、MAGN等参数可以烧写进去。这看起来是好事但它是只可编程一次的写错就无法恢复。我见过有人本来只想设置一下零点范围结果误把整个寄存器配置烧进去导致芯片直接变“砖”角度输出完全不对。建议初期用软件在MCU里做零点校准不要急着烧写OTP。等结构方案固定、测试完全稳定后再考虑把必要参数固化到芯片内部。6. 实测数据汇总与最终选型建议6.1 关键参数速查表把上面提到的关键数据整理成一张速查表方便你选型时直接对照。选型维度推荐值说明磁铁形状实心圆柱径向充磁最容易获得稳定磁场磁铁直径≥6mm推荐Ф6~Ф8太小磁场弱噪声大磁铁厚度2~4mm太薄磁场弱太厚体积大安装间隙1~2mm以AGC落在80~200为准轴向偏心尽量小于0.2mm偏差会造成单周期误差AGC读值80~200为理想越接近上限越危险状态寄存器MD1ML0MH0三项同时满足才算正常磁铁固定座铝、黄铜或非磁性塑料避免铁磁材料干扰磁场这个组合是我经过多轮测试后最稳定的通用方案适合绝大多数DIY和中小批量产品。6.2 给不同应用场景的选型建议如果是做旋钮或面板角度显示结构空间相对宽裕直接选Ф6×3mm径向磁铁间隙控制在1.5mm左右开发阶段用热熔胶正式装配用塑料座嵌装。如果是做小型云台或电机位置闭环磁铁装在电机轴端要注意电机轴的跳动和轴向串动。轴向串动量大的电机建议把间隙放到1.5~2mm给轴向运动留出安全余量避免高速旋转时磁铁蹭到芯片。如果轴必须穿过磁铁选圆环径向磁铁外径尽量做到8mm以上内径不要超过外径的一半否则磁场太弱。间隙仍然按AGC调到理想范围。如果是户外或温度变化大的设备优先考虑Ф8×3mm磁铁配合初始间隙2mm左右高温退磁后仍有足够余量。同时建议在固件里定期看AGC作为健康监测指标。6.3 一个小技巧用PWM输出快速验证安装最后分享一个调试技巧。如果你手头没有现成的I2C读取代码或者想快速验证硬件和安装是否有问题可以直接把AS5600的OUT引脚接到示波器或者用单片机读PWM占空比。PWM占空比接近线性对应角度转动磁铁时如果占空比平滑变化说明整个磁路安装基本没问题。这也比在I2C总线上一步一步读寄存器更快。我实际做过的项目里用这个“先看PWM、再细看I2C”的流程能省下很多排查时间。很多装着不正常的情况其实早在PWM波形那一步就能看出来没必要纠结程序。6.4 最后再补充一点AS5600这颗磁编码器本身并不复杂复杂的是它和磁铁、和机械结构之间的匹配关系。只要抓住磁铁径向充磁、尺寸够大、间隙1~2mm、AGC落在理想区间、轴向同心这几条主线成功率和精度都不会差。即使第一次装出来不太理想也别急着怀疑芯片先看看这三样东西磁铁充磁方向对不对、间距是否合适、结构有没有偏心。我做过的几乎所有异常案例最后都能归结到这三类原因上。如果你也在用AS5600做项目希望这篇里的数据和避坑经验能帮你少走一些弯路。磁编码器这种东西选型选对了、装得精准了它就是一颗又便宜又可靠的角度传感器选型和安装出了问题它就会变成一个让人反复怀疑人生的“玄学器件”。
返回列表