INA226电流检测恒定偏移排查:地电位差是元凶 📅 发布时间:2026/9/19 8:05:58 👁 浏览次数: 上周在机械臂关节电流检测的台架上同事拿着一块INA226模块过来说这板子“有毒”电机完全没转电流读数却稳定停在0.6A左右。一开始我以为是负载静态电流但拿高精度万用表串进母线一测真实电流明明只有0.01A不到。而且更诡异的是只要接上机械臂驱动器不管实际电流怎么变显示值都像被人硬生生加上了一个固定数。查了一下午最后发现根因和芯片本身关系不大问题出在参考地线上。这篇文章就把这次排查链路完整写出来从现象确认到寄存器核对再到模拟输入端的电压测量最后落到地电位差这个真凶上顺便给出一套以后能直接照抄的排障顺序。1. 现象确认一块“多报0.6A”的INA226模块到底发生了什么1.1 实测数据偏差不是错觉是稳定可复现的遇到这种问题我第一件事永远是先把现象量化。不能让“大概偏了0.6A”这种模糊说法带着排查走必须用数据把趋势钉死。于是我把机械臂停在空载状态用一套可调电子负载分别制造几个不同的母线电流同时记录INA226读出值和万用表实测值工况万用表实测电流INA226显示电流偏差电机静止驱动器待机0.01A0.61A0.60A低负载匀速1.00A1.60A0.60A中等负载5.02A5.62A0.60A较大负载10.01A10.61A0.60A点动加速瞬间18.50A19.10A0.60A表格一出来结论就清晰了偏差严格稳定在0.6A和负载电流大小无关。这个现象是所有后续判断的基石也决定了排查方向。1.2 为什么“恒定”这两个字最值钱做测量系统排障时我习惯先判断误差的性质是“加法性”还是“乘法性”。加法性偏差真实值增加时偏差不变化。比如真实1A显示1.6A真实10A显示10.6A。问题多半出在“零点”环节也就是系统在没有输入时本身就有一个偏置。乘法性偏差真实值增加时偏差按比例放大。比如真实1A显示1.1A真实10A显示11A。问题多半出在“增益”环节比如采样电阻阻值不对、校准参数比例错误、放大器增益配置错误。0.6A的恒定偏差就是典型的加法性偏差。它告诉我不必先去怀疑校准寄存器写错、采样电阻焊错这类会导致“乘性偏差”的问题而是应该顺着“零输入时为什么有非零输出”这条线走。顺便说一句测试基准本身也要保证可信。我的万用表刚做过校准钳形表反而可能因为地磁或残留磁化有零点漂移所以母线电流统一用串联的标准采样电阻来读不去依赖钳表。1.3 对采样电阻阻值的快速确认排查之前还有一个基本功要补搞清楚实际使用的采样电阻到底是多少。这块机械臂平台用的是2mΩ0.002Ω的分流器额定母线电流做到40A左右最大压降约80mV正好落在INA226的±81.92mV差分输入范围内。0.6A×2mΩ1.2mV。这个换算后面反复用到先记在这里。也就是说只要INA226的差分输入端有一丁点非预期的1.2mV电压就会直接表现为0.6A的恒定电流偏差。2. 从00h到04h寄存器走一遍先排除软件和配置层面的假偏差2.1 电流寄存器不是拿来就能用的很多人拿到INA226第一反应是读04h Current寄存器读回来多少就是多少安培。实际上这个寄存器必须依赖05h Calibration寄存器的配置才有意义。INA226上电后校准寄存器默认是0。在这种状态下04h寄存器输出的其实不是电流而是分流电压的原始ADC码。只有往校准寄存器写入正确的值之后内部硬件才会把分流电压原始码按比例换算成真正的电流值。如果软件里漏写了校准寄存器或者用了网上某个例程的默认校准值但没和自己板子上的采样电阻对应上电流寄存器读出来的数值会非常离谱。这种错误通常表现为乘法性偏差或完全不可信的读数但也不排除在某些特定原始码条件下看起来像“恒定偏置”。所以排查的第一步就是确认校准寄存器是否配置正确。2.2 校准寄存器配置的完整计算校准寄存器的配置公式要自己算一遍不能直接抄。以我的平台为例最大预期电流 MaxExpectedCurrent 取 40A电流分辨率 Current_LSB MaxExpectedCurrent / 2^15 40 / 32768 0.00122A/bit ≈ 1.22mA/bit采样电阻 RSHUNT 0.002Ω校准寄存器 Calibration 0.00512 / (Current_LSB × RSHUNT) 0.00512 / (0.00122 × 0.002) 0.00512 / 0.00000244 ≈ 2098写入05h寄存器时就要填2098或取整后接近的值然后04h电流寄存器每个LSB才代表1.22mA。如果这里把采样电阻误填成10mΩ电流读数会直接放大5倍表现出来就是10A真实电流显示50A属于典型的乘性偏差。2.3 符号位处理机械臂电流是双向的机械臂关节电机在减速、反转、再生制动时母线电流方向会改变。INA226的电流寄存器是16位有符号补码如果程序里按无符号数去解析正电流的时候看不出问题一旦出现负电流读数会突然跳到65535附近的奇怪值很容易被误判成“偏移”。但这次DEBUG程序里已经把符号扩展写对了正负方向读数都符合预期所以排除这个因素。不过这个点我建议所有做电机电流采样的人都自查一遍伺服系统的负电流经常被忽略。2.4 空载时读分流电压寄存器整个排查的分岔口寄存器层的最后一步也是最关键的一步空载状态下读01h Shunt Voltage寄存器。注意这个寄存器不受校准寄存器影响它直接反映ADC测量到的分流电阻两端差分电压。如果空载时01h读出来是0那说明模拟输入硬件没有问题0.6A偏差完全是软件换算层累加出来的如果01h读出来明显不为0说明物理层面真的有一个电压灌进了差分输入端。实测结果让我把方向锁定到了硬件侧空载时01h寄存器的读数约为480个LSB。INA226的分流电压寄存器LSB是2.5µV/bit480×2.5µV1.2mV。这1.2mV除以采样电阻2mΩ正好等于0.6A。也就是说INA226并没有“算错”它是真的量到了1.2mV的差分电压然后忠实上报。问题变成了这1.2mV从哪里来3. 空载时1.2mV是从哪来的聚焦差分输入端的真实电压3.1 不接系统时模块是干净的为了确认这1.2mV是模块自身问题还是外部灌入我把INA226模块从系统里拆下来单独供电然后用一根短导线把SHUNT和SHUNT-短接。短接状态下01h寄存器读数立刻归零只有几个µV的残留噪声属于正常水平。这说明模块本身、芯片的输入失调、内部ADC偏置都没有问题INA226在“纯净”输入下是干净的。这个动作虽然简单但它把嫌疑范围一下子分成了两块模块硬件本身没问题问题出在外围连接或系统级布局上。3.2 输入RC滤波电阻不对称一个容易被忽略的干扰源很多INA226模块或者自制电路会在SHUNT和SHUNT-输入引脚前各串一个电阻再并一个电容构成RC低通滤波器。这在PWM电机驱动场景里很常见用来滤掉高频开关噪声。但这里藏着一个坑INA226的输入引脚会有µA级别的偏置电流流过这些串联电阻。如果两个串联电阻阻值不对称或者某个电阻虚焊、焊盘氧化导致接触电阻变大偏置电流就会在两个输入端产生不等的电压降最终表现为一个差分失调电压。我当时专门用万用表量了模块输入端两个串联电阻一致性没有问题又把SHUNT与SHUNT-短接重新读01h结果依然接近0说明偏置电流这条路径没有贡献明显误差。不过如果你的板子恰好有这个症状建议优先检查两个RC电阻阻值是否一致以及它们是否都是低温度系数的精密电阻。3.3 把系统接回去偏移出现的位置原来是驱动器侧模块单独测试干净之后我把它重新接回系统但做了两步细分第一步只接采样电阻和INA226模块不接驱动器、不接电机。01h读数恢复正常约0到2µV。第二步接上驱动器并给控制板上电但电机不使能。01h读数立刻跳到约1.2mV。这个结果把问题范围精确缩小到“驱动器/控制板一旦上电就给INA226的差分输入端注入了一个额外的直流电位差”而且与电机是否转动无关只与系统上电状态有关。到了这一步我开始怀疑地线参考点的问题。4. 真凶落网INA226的地参考点与采样电阻低端之间的地电位差4.1 一次毫伏表的实测我把万用表拨到直流毫伏档红表笔接INA226模块的GND引脚黑表笔接采样电阻的SHUNT-端也就是功率地。读数稳定在1.2mV左右。这个1.2mV和刚才01h寄存器读到的差分电压完全一致。答案已经摆在眼前了INA226的GND引脚和采样电阻的低端之间存在1.2mV的直流电位差这块INA226模块的模拟参考地不是采样电阻的低端而是被另一个“地”拉偏了。篇幅有限不展开太多但从原理上解释一下为什么会有这个电位差。机械臂系统里通常有多个地驱动板的功率地PGND、控制板的数字地DGND、还有INA226模块自己的GND。它们往往在电源入口处单点相连但在实际走线上控制板的返回电流会流过公共地线地线本身有电阻于是DGND和PGND之间就产生了微小的电位差。这个电位差平时不影响逻辑电路但对INA226这种测量差分电压的芯片来说就是灾难。4.2 为什么差分输入会把地参考点当成信号端INA226的差分测量从芯片内部来看是以GND引脚为参考来量化SHUNT与SHUNT-之间的电压。如果系统设计上让SHUNT-和GND严格等电位那么一切正常。但一旦GND引脚与SHUNT-之间存在电位差ΔV这个ΔV会被ADC直接当作有效差分输入的一部分。哪怕采样电阻两端真实压差为0INA226依然会“看到”ΔV。换算公式就是前面写的等效电流偏置 ΔV / RSHUNT。在这里1.2mV ÷ 2mΩ 0.6A。所有链条都对上了。4.3 采样电阻越小地电位差问题越致命这次能很快定位还有一个客观因素采样电阻太小时同样大小的地电位差会被放大成很大的电流偏置。举几个直观的例子地电位差采样电阻等效电流偏差1.2mV5mΩ0.24A1.2mV2mΩ0.60A1.2mV1mΩ1.20A很多大电流采样场景都要用毫欧级甚至更小的分流器这时候地线上只要有几毫伏的电位差电流读数就会出现可观偏移。这也是为什么小电流测试一切正常、接到大电流系统就出问题的常见原因——小电流测试时负载小地线上压降微乎其微大电流系统里功率地和控制地之间的回流路径稍微一长问题全暴露出来了。4.4 为什么模块单独测试时完全正常你可能觉得奇怪这模块在桌面上单独测试时明明一点问题都没有。原因也很简单桌面上测试时INA226模块、采样电阻、电源、负载全部共用一个面包板或一根短线所有GND电位几乎一致测不出偏差。一旦把模块接回机械臂的分布式供电系统里INA226模块的供电回路、控制板的地回路、驱动器功率地回路各自走不同的线GND参考点的电位就被彻底拉开了。这种“单独测试正常、接入系统就偏”的情况我建议下次直接先怀疑地线链路别在芯片本身和软件上浪费太多时间。5. 修复与验证把参考地拨回正确位置后的实测数据5.1 临时修复飞线直连定位到地电位差之后现场临时修复非常简单找一根尽量短、尽量粗的导线把INA226模块的GND引脚直接飞到采样电阻的SHUNT-端不经过控制板数字地也不经过驱动板功率地主干线让模块的参考地强制和SHUNT-钉在一起。接通后重新读01h寄存器空载分流电压从1.2mV降到了0.001mV级别04h电流寄存器读数为0.00A偏差消失。这虽然是飞线但原理上是对的相当于给INA226单独做了参考地采样。如果你的应用是临时台架验证用这个方法可以立刻确认问题。5.2 修复后的完整数据对比飞线之后我把之前那组测试重新跑了一遍工况万用表实测电流INA226显示电流偏差电机静止驱动器待机0.01A0.00A-0.01A低负载匀速1.00A1.01A0.01A中等负载5.02A5.01A-0.01A较大负载10.01A10.00A-0.01A点动加速瞬间18.50A18.52A0.02A偏差从0.6A级别降到0.02A以内已经满足电流环控制的需求。5.3 治本方案PCB布线和模块接线规则飞线只是临时手段真正要做的是在系统设计时遵守几条规则采样电阻必须做开尔文Kelvin连接SHUNT、SHUNT-两路信号各自独立走线到INA226输入端不在采样电阻焊盘上串接其他走线负载。INA226模块的GND引脚不能就近接到控制板数字地上而是要从SHUNT-端单独引一条参考线。功率地、数字地、模拟地单点相连避免大电流回流路径穿过测量参考地。如果是从零画PCB我一般把INA226放在采样电阻旁边GND引脚和IN-引脚分别走出两条短走线到采样电阻低端形成星形连接。这样即使系统其他地方地噪再大也不会影响测量参考点。5.4 双方向电流验证修复后我还专门测了电机反转和急停时的负电流方向。INA226的电流寄存器按补码输出负值程序里做了符号扩展之后反向电流读数也能正确显示为负值没有出现跳变或偏移。这说明整个链路在双向电流场景下都是可靠的。6. 复盘与决策表下次再遇“恒定电流偏差”按这条线查6.1 一套可以直接套用的排查顺序这次排查虽然花了一下午但回头看步骤非常清晰完全可以固化成决策表以后再遇到任何INA226或类似电流传感器出现恒定偏移直接按这个表定位观察现象优先检查修复方向空载显示恒定偏置且01h分流电压寄存器≈0软件换算层、校准寄存器、符号位处理修正Current_LSB与补码解析空载01h分流电压寄存器明显不为0短路输入后归零输入端RC滤波电阻不对称、输入偏置电流匹配RC电阻阻值、减小串联电阻短路输入端时01h依然不为0芯片损坏、模块基准异常更换模块单独测试正常接系统后出现偏移INA226 GND与SHUNT-之间的地电位差飞线直连/开尔文接线偏差随负载增大而成比例放大采样电阻阻值不准确、校准寄存器中RSHUNT参数错误实测采样电阻阻值并重新配置校准寄存器这张表的核心逻辑是先分软件/硬件再分加法/乘法最后分模块内部/外部接线很少会遇到表里覆盖不到的情况。6.2 两类容易和“恒定偏差”混淆的情况排查过程中还有两个常见的“伪偏移”顺手说一下。一类是采样电阻旁边并联了其他真实负载。比如某些驱动器在母线电容前后会接辅助电源、LED灯板、预放电电阻空载时本来就消耗几百毫安。这种不是偏差是测量正确只是你的“预期”错了。确认方法就是把INA226模块断电换万用表串进母线直接测同一个空载工况。另一类是采样电阻温度漂移。分流器在工作一段时间后发热阻值改变电流读数会缓慢变化。这种通常是乘法性偏差且随时间漂移很容易和恒定偏置区分开。6.3 给所有用INA226做伺服电流环的同学一个实操建议这个排查给我的最大启发不是“地线很重要”这种废话而是一个具体动作任何INA226模块接入系统之前先花五分钟量一下模块GND引脚和采样电阻低端之间的直流电位差。如果超过零点几毫伏直接先处理走线再谈校准和滤波。这个方法看起来土但效率极高几十次项目下来几乎没有失手过。尤其是机械臂、伺服、无人机这类功率地和数字地并存的系统地环路造成的传感器偏移往往比芯片数据手册里的精度指标影响大一个数量级。把参考地钉住剩下的问题通常都不会太折腾人。