首页 / 资讯中心 / 文章详情

AS5245磁角度传感器实战:从选型、校准到电机FOC应用

AS5245磁角度传感器实战:从选型、校准到电机FOC应用 ★ FEATURED ARTICLE
1. 从一颗芯片说起为什么偏偏是它搞电机控制、做机器人关节、玩云台稳定器的朋友大概率都绕不开一个东西——角度传感器。你要知道转子现在转到哪个位置了才能决定下一拍给哪相通电、给多大电流。早些年大家用霍尔开关做六步换向简单粗暴但分辨率低、低速抖动明显后来流行光电编码器精度上去了可一到粉尘、油污、震动环境就娇气得很。再往后磁编码器逐渐成了主流而AS5245这颗芯片就是磁角度传感器里一个相当有代表性的型号。它是什么一句话讲清楚一颗基于磁阻原理、能输出14位分辨率绝对角度值的旋转位置传感器通过检测一颗放在芯片正上方的永磁体通常是径向充磁的圆柱磁铁的旋转角度实时算出0到360度的绝对位置。能做什么可以做电机换向、可以做旋钮位置检测、可以做云台姿态反馈、可以做机器人关节角度闭环。解决了什么问题解决了“非接触、耐脏污、高分辨率、上电即知绝对位置”这一组互相打架的需求。适合谁看如果你正在选型角度传感器、正在调电机FOC、或者手上有个项目需要精确知道“转了多少度”那这篇东西就是写给你的。我先说结论AS5245不是那种“接上就能跑”的傻瓜芯片它的坑主要集中在磁铁选型与安装、输出接口配置、以及校准这三块。下面我按自己踩过的路子一块一块拆开讲。2. 核心原理与方案选型它到底怎么“看见”角度2.1 磁阻原理和霍尔到底差在哪很多人第一次接触AS5245会下意识把它当成霍尔传感器。其实它内部用的是各向异性磁阻AMR技术跟霍尔那套“洛伦兹力推载流子”完全不是一回事。霍尔元件输出的是跟磁场强度成正比的电压而AMR元件输出的是跟磁场方向相关的电阻变化。这个区别很关键霍尔对磁铁的距离、温度漂移更敏感而AMR对磁场方向敏感、对强度相对宽容所以AS5245在磁铁稍微偏心或者气隙有波动的时候角度读数依然能稳住。你可以这么理解霍尔像个“测力计”你离得远一点它读数就掉AMR像个“指南针”只要磁场方向对强度在一定范围内变化它不太在乎。这就是为什么AS5245在电机轴端那种气隙不好保证的场合特别吃香。2.2 14位分辨率意味着什么14位就是2的14次方等于16384个刻度。360度除以16384每个刻度大约是0.022度。这个精度对于绝大多数电机控制、云台、旋钮应用都绰绰有余了。作为对比12位是4096刻度、约0.088度10位是1024刻度、约0.35度。你要是做FOC换向12位其实就够但14位能让你在极低速下换向更平滑转矩脉动更小。这里有个容易误解的点分辨率不等于精度。14位是它能“报”出来的最小刻度但实际精度受磁铁安装偏心、气隙、温度、校准质量影响可能只有0.1到0.5度。别看到14位就以为能当光学编码器用那是两码事。2.3 为什么选绝对式而不是增量式增量式编码器上电后不知道自己在哪得先找个Z相信号或者撞一下限位才能定位。AS5245是绝对式的上电瞬间读出来的就是当前真实角度不需要回零动作。这在云台、机械臂关节这种“上电就要知道姿态”的场景里是刚需。你总不能让机械臂每次上电都先转一圈找零点吧那太蠢了。2.4 输出接口的取舍AS5245支持多种输出方式常见的是SPI和ABI增量输出还有PWM。选哪个取决于你的主控和用途输出方式适用场景优点注意点SPI需要读绝对角度、做校准能读原始角度、可配置寄存器需要片选、时序要配对ABI直接喂给电机驱动或MCU正交解码兼容传统编码器接口上电需读一次绝对位置做基准PWM简单模拟量替代接线少分辨率受脉宽测量精度限制我个人建议调试和校准阶段一定用SPI因为你要读寄存器、写配置、做多点校准。量产如果主控资源紧张再考虑切到ABI模式但上电初始化那一下还是得用SPI读一次绝对位置。3. 硬件设计细节磁铁才是真正的“隐形主角”3.1 磁铁选型别随便拿块冰箱贴就上这是我最想强调的一点。AS5245的角度精度七成取决于磁铁三成才是芯片本身。你需要一颗径向充磁的圆柱形或环形磁铁常见规格是直径6mm、厚度2.5mm左右。为什么是径向充磁因为芯片检测的是磁场在芯片平面内的方向磁铁旋转时磁场方向跟着转芯片才能算出角度。如果是轴向充磁磁场方向不随旋转变化芯片读出来就是一条直线完全没用。磁铁材料一般选钕铁硼NdFeB牌号N35到N42都行温度等级要注意普通N系列在80度以上会退磁电机附近温度高的话得选H或SH等级。磁铁表面最好做镀镍或环氧涂层防氧化。3.2 气隙与偏心0.5mm的差距能让你怀疑人生芯片和磁铁之间的气隙典型推荐值是0.5mm到2mm。太近了磁场饱和太远了信号弱。我实测下来1mm左右最稳。但比气隙更致命的是偏心——磁铁的旋转中心必须和芯片的感应中心对齐偏心超过0.25mm角度误差就会明显上升非线性误差可能从0.5度飙到2度以上。怎么保证对中我的做法是芯片PCB上留一个定位孔磁铁固定在电机轴上装配时用一根和轴同径的定位销先穿过去对中再锁紧。听起来麻烦但比事后调软件补偿省事多了。3.3 芯片周围的布局禁忌AS5245对周围磁场干扰很敏感。几条硬规矩芯片正下方和正上方2mm内不要走大电流走线电机相线尤其要远离。去耦电容要贴近VDD引脚0.1uF和1uF并联别省。芯片背面不要放铁磁材料比如铁质螺丝、钢制支架它们会扭曲磁场。如果非要用屏蔽用铜或铝这种非铁磁材料别用铁皮。注意我见过有人把芯片贴在铝制电机端盖上结果铝盖上的涡流让高速时角度滞后。铝虽然不导磁但高速旋转的磁场会在铝里感应涡流反过来干扰磁场。所以芯片和磁铁之间最好别有整块金属。3.4 供电与滤波AS5245工作电压典型3.3V或5V看具体型号后缀。供电纹波要控制在50mV以内否则角度读数会跳。我的做法是LDO单独给它供一路或者至少加一个LC滤波。电机驱动那路的开关噪声千万别串过来否则你会看到角度值在电机PWM频率上叠加抖动。4. 软件配置与校准把误差从2度压到0.3度4.1 SPI通信基础AS5245的SPI是标准四线SCLK、MOSI、MISO、CSN。时钟频率最高能到10MHz左右但建议先用1MHz调通再提速。读角度命令通常是发一个0xFFFF或者特定命令字然后读回16位数据其中高14位是角度低2位是状态标志。// 读取AS5245角度的简化示例伪代码 uint16_t as5245_read_angle(void) { uint16_t cmd 0xFFFF; uint16_t resp; cs_low(); resp spi_transfer16(cmd); cs_high(); // 高14位为角度0~16383 uint16_t angle_raw (resp 2) 0x3FFF; return angle_raw; }实际用的时候要注意CSN拉低到第一个时钟沿之间要有建立时间太快了芯片反应不过来。还有读回来的数据里如果有奇偶校验位或者错误标志要判断一下别闷头就用。4.2 寄存器配置要点AS5245内部有一堆寄存器常用的几个零位寄存器设置机械零点和电气零点的偏移。方向寄存器决定角度是顺时针增还是逆时针增。滤波配置动态滤波能平滑抖动但会引入延迟电机高速时慎用。ABI分辨率如果切ABI输出这里设每转脉冲数。配置顺序建议先设方向再设零位最后调滤波。别反过来否则你会被自己绕晕。4.3 多点校准别指望出厂精度芯片出厂有基础精度但装到你的结构上之后偏心、气隙、磁铁不均匀都会引入误差。必须做多点校准。做法是用一个高精度参考编码器或者分度台带着转一圈每隔比如5度记一个芯片读数和参考值然后拟合出一条补偿曲线。简单点的方法是用最小二乘拟合正弦补偿因为偏心误差主要是一次谐波。复杂点可以做查表补偿把16384个点都标一遍但没必要通常16到64个校准点就够。# 简化的正弦补偿拟合思路 import numpy as np # ref: 参考角度弧度, raw: 芯片原始角度弧度 # 拟合 raw ref A*sin(ref) B*cos(ref) C # 解出A、B、C后补偿公式为 corrected raw - (A*sin(raw)B*cos(raw)C)我实测下来不做校准误差大概1到2度做了正弦补偿能压到0.3度以内做查表能到0.1度左右。看你项目要求。4.4 温度漂移的处理磁铁的磁场强度随温度变化钕铁硼大概每升高1度剩磁下降0.1%左右。好在AMR对强度不敏感所以AS5245的温漂比霍尔小得多。但如果你的应用温度范围很宽比如-40到125度还是建议做温度补偿或者选温度系数更低的磁铁牌号。5. 实操过程从零搭一套角度检测系统5.1 物料准备清单物料规格数量备注AS5245芯片按封装选1注意后缀电压径向磁铁6x2.5mm N421镀镍去耦电容0.1uF, 1uF各10402或0603主控板带SPI的MCU13.3V逻辑电机/旋转台带轴1用于固定磁铁定位工装自制1保证对中5.2 焊接与装配步骤先焊芯片AS5245通常是QFN或TSSOP封装QFN的话底部有散热焊盘要记得上锡。焊接温度别超260度时间别超10秒磁阻元件怕热。焊去耦电容紧贴VDD引脚走线越短越好。固定磁铁把磁铁粘在电机轴端用定位工装保证磁铁中心和轴心重合。胶水用环氧AB胶别用502502脆震动久了会掉。调整气隙装好后测一下芯片表面到磁铁表面的距离调到1mm左右。可以用塞尺或者垫片控制。上电测试先不转读几个角度值看稳不稳。然后慢慢转看角度是否线性变化。5.3 校准实操记录我拿一个带分度盘的手动旋转台做参考每转15度停一下记录芯片读数和分度盘读数。一共25个点0到360度。然后把这25组数据丢进Python做正弦拟合得到补偿系数写回MCU。校准前最大误差出现在90度和270度附近大概1.8度典型的偏心一次谐波。校准后最大误差降到0.25度肉眼已经看不出跳变了。提示校准的时候要单向旋转别来回转因为齿轮间隙或者联轴器回差会引入迟滞误差。如果你必须双向用那正反两个方向都要校准取平均。5.4 动态响应测试静态准了不代表动态行。我让电机以1000rpm转起来用示波器看ABI输出和SPI读数的延迟。发现默认滤波配置下角度滞后大约2ms换算成角度在1000rpm时是12度。这个滞后对FOC换向来说太大了会把效率拉低。后来把滤波档位调低滞后降到0.5ms角度滞后3度可以接受。所以滤波是把双刃剑静态抖动小了动态延迟大了。你得根据转速权衡。6. 常见问题与排查技巧实录6.1 角度读数跳变或卡死这是最常见的问题。排查顺序先看供电用示波器看VDD纹波超过100mV就是电源问题。再看磁铁磁铁是不是松了、偏了、退磁了拿个指南针靠近感受一下磁场是否均匀。再看SPI时序CSN、SCLK的边沿是否干净有没有过冲加个22欧姆串阻试试。最后看干扰电机相线离芯片多远挪开或者加屏蔽。我遇到过一次角度每隔几秒跳一次查了半天是电机驱动的地线和芯片地线共阻抗耦合分开走线就好了。6.2 角度线性度差如果角度和实际位置对不上呈正弦波动那就是偏心。重新对中或者做正弦补偿。如果呈阶梯状那是分辨率不够或者SPI读取出错检查数据位对齐。6.3 高速时角度滞后前面说了滤波配置的锅。降低滤波强度或者用ABI输出直接给硬件解码绕过SPI读取延迟。6.4 温度升高后精度下降磁铁退磁或者芯片温漂。换高温磁铁牌号或者加温度补偿表。6.5 常见问题速查表现象可能原因解决方向读数跳变电源纹波、干扰加滤波、分开地线线性度差偏心、气隙不对重新对中、调气隙高速滞后滤波过强降低滤波、用ABI高温漂移磁铁退磁换高温牌号上电角度错零位未设配置零位寄存器SPI读不出时序错误降速、查CSN建立时间6.6 几个独家避坑心得别用铁质螺丝固定芯片PCB用尼龙或者铜柱。磁铁别用胶水直接粘在芯片上热胀冷缩会把芯片拉裂。校准数据要存Flash别每次上电重校浪费时间。ABI输出的分辨率别设太高超过MCU正交解码能力会丢脉冲。调试时先用手转别一上来就上电机手转能让你直观感受角度变化是否合理。7. 影响范围与延展思考AS5245这类磁角度传感器影响的不只是一颗芯片的选型它实际上改变了整个旋转检测的方案架构。以前做电机控制你得考虑编码器的安装、线缆、防护等级现在一颗芯片加一颗磁铁贴在板子上就完事成本降了、可靠性升了、体积小了。这让很多以前做不了闭环控制的小型设备——比如微型云台、电动工具、智能旋钮——都能用上高精度角度反馈。延展来说这套思路还能用在线性位置检测上把旋转磁铁换成线性磁条芯片沿磁条滑动就能测直线位移。原理一样只是几何关系变了。另外多颗AS5245组合可以做过约束的冗余角度检测用于安全等级要求高的场合。我个人在实际操作中的体会是磁角度传感器这东西硬件决定下限校准决定上限。你磁铁装得歪软件再怎么补也补不回来你磁铁装得正不校准也能凑合用但校准一下能好一个数量级。所以别偷懒该做的工装要做该跑的校准要跑。最后再分享一个小技巧校准的时候如果手头没有高精度参考可以用一个已知齿数的齿轮加一个接近开关做粗略参考虽然精度不高但比没有强至少能把大偏差找出来。
阅读完成 · 觉得有帮助?
咨询建站