尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

宽动态电流采集怎么做?从INA333出发详解量程切换与校准

宽动态电流采集怎么做?从INA333出发详解量程切换与校准 最近在看一些硬件方案讨论的时候总能看到类似的问题手头有一片INA333想做一个电流采集范围要覆盖1μA到30mA问该换哪颗运放。我每次都忍不住多说几句——在这个跨度下只纠结“换一颗更好的运放”基本解决不了问题真正要面对的是如何把量程拆开、如何选采样电阻、如何做校准这套信号链的问题不搞定换十颗运放也一样会翻车。这篇内容就从INA333出发把这个“1μA~30mA”的需求彻底拆一遍给出我实际调试过程中验证过的三套路线和一组可以直接抄的参考电路。适合正在做低功耗设备监测、电池充放电电流记录、光电二极管宽范围测量、或者传感器小信号采集的硬件工程师。看完你会发现真正值钱的设计不是选型列表而是整个量程管理策略。1. 先把需求拆明白90dB动态范围不是单一运放能扛住的1.1 1μA和30mA之间的差距大到你没法“一块电阻走天下”1μA到30mA表面上看只是30mA/1μA30000倍但对数坐标下是约90dB的动态范围相当于要让同一套前端线性识别将近五位半的电流变化。问题往往就出在这个“线性”上。假设你用一个最常规的低边采样方案采样电阻R_sense固定为1Ω。那么1μA电流在电阻上产生1μV压降30mA产生30mV压降。如果你想让INA333后级ADC能稳定测到1μV一来放大器自身失调、温漂、噪声早就把这个信号淹没了二来30mV满量程对大部分16位ADC来说有效位数也浪费得厉害。如果把采样电阻加大到1kΩ小电流确实好测了1μA对应1mV但30mA在这颗电阻上的压降是30V——不用想了运放烧穿、ADC击穿、电源轨根本供不起。这就是典型的“单一固定电阻无法同时满足两端需求”。所以第一反应一定要是这个项目必须分档或者用对数压缩。1.2 INA333的参数放在这个任务里到底够不够用先给INA333一个客观评价。它是一颗微功耗、零漂移的仪表放大器静态电流约50μA电源范围1.8~5.5V单电源低边测量很合适。关键参数里输入失调电压典型值在25μV级别输入偏置电流典型值50pA、最大值在200pA级别这两项对于微电流信号链特别重要。如果我们把1μA通过10kΩ的采样电阻在INA333输入端产生的信号是10mV那25μV的失调大概占0.25%零点校准之后可以做得更好。偏置电流200pA流过10kΩ造成的误差只有2μV基本可以忽略。所以结论是INA333这颗放大器在前端性能上是够用的它不是这个项目的短板。但要注意一点INA333的高频能力一般增益越高带宽越低。在G10附近带宽还能到百kHz级别G100以上就只剩下几十k到百kHz以内的空间了。如果是纯直流或缓慢变化的电流信号完全没问题如果要做高频动态电流波形那就得换思路。这个项目定位在监测、采集、记录场景INA333是站得住脚的。2. 三条路线单量程硬扛、分段换挡、对数压缩2.1 路线一固定采样电阻高分辨率ADC直觉上很美但坑很多有人会问能不能用一个1Ω采样电阻配合24位Σ-Δ ADC和内部可编程增益直接把1μV级别的信号读出来理论上24位ADC的动态范围有130dB以上好像够用。但实际工程中24位ADC的有效分辨率折损很严重。以满量程3V计算24位LSB理论值是0.18μV但在1kSPS采样率下有效位数能做到17~18位已经不错了对应有效LSB约11~22μV。也就是说1μV级别的真实信号和噪声、失调几乎是同一数量级你根本分不清哪个是信号。再加上运放Vos、电阻热噪声、电源干扰、地环路固定1Ω采样电阻想从1μA测到30mA基本是自找麻烦。这个路线唯一成立的条件是你对1μA以下电流不要求精度只看趋势或者后续做长期平均滤波。通常我不推荐作为首选。2.2 路线二分段采样电阻自动换挡宽动态电流采集的实用解这才是正经能落地的方案。核心思想很简单小电流用大采样电阻让信号尽量大大电流用小采样电阻让压降和功耗都受控。每档信号都放大到接近ADC满量程动态范围问题就变成了量程管理问题。我自己常用的三档设计是这样档位采样电阻INA333增益满量程电流最小建议测量电流输出灵敏度小电流档10kΩG1030μA1μA0.1V/μA中电流档100ΩG100300μA10μA10mV/μA大电流档1ΩG10030mA100μA0.1V/mA这里每个档位都把最大输出压到3V左右配合3.3V ADC、16位分辨率小电流档理论最小分辨能做到0.5nA级别大电流档也能到0.5μA级别。档位之间有重叠区间比如中档在15μA时输出150mV小档在15μA时输出1.5V两边都能测这就给换挡切换和校准留出了余量。2.3 路线三对数放大器一个看起来“偷懒”但很老练的选择如果应用场景是看电流量级变化趋势比如电池自放电曲线、设备待机功耗一整天的情况分段换挡会显得繁琐。这时候可以考虑对数放大器。TI的LOG114是比较经典的一颗动态范围大概在100pA到10mA虽然不完全覆盖到30mA但配合一点外围1μA~30mA的主体范围基本都能吃下。对数放大器的输出是输入电流的对数电压大概每十倍程输出几百毫伏。好处是一颗芯片干完所有事不需要换挡、不需要开关网络、不需要复杂的量程判断。代价是精度相对有限小信号端整体误差可能到1%~3%带宽也偏低。如果只是记录趋势、观察数量级这个方案性价比极高。如果你要我做决定系统需要精确测量选路线二系统只需要看趋势选路线三。3. 分段换挡方案的具体设计以及那个很多人会踩的开关坑3.1 模拟开关不能想当然地串进采样电阻路径我记得第一次做三档自动切换图省事直接用模拟开关去切换三个采样电阻结果大电流档完全没法用。原因很简单普通模拟开关的导通电阻RON有5Ω左右和1Ω的采样电阻串联直接分掉了83%的压降这已经不是误差问题是电路功能失效问题。所以这里有个硬规矩不要用普通模拟开关切低阻值采样电阻。如果一定要全自动换挡我建议用微型信号继电器、干簧管或者只在10kΩ/100Ω这些相对高阻的支路上用低漏电流模拟开关1Ω那条支路保持直通或者留给继电器。如果你不想用继电器另一个思路是让模拟开关切换INA333的增益电阻而不是采样电阻。增益电阻路径上的RON相对Rg来说占比很小可以通过校准修正但前面提到的1μA小信号问题依然存在所以我还是那句话分档的关键在采样电阻不在增益。3.2 一个可以参考的完整信号链电路结构上我最常用的是低边采样I_out从负载低端流过采样电阻网络INA333差分测量采样电阻两端输出接RC低通到ADCMCU根据ADC读数自动切换量程。INA333的增益电阻Rg按档位固定不用切换小电流档R_sense10kΩRg11.1kΩG≈10中电流档R_sense100ΩRg1.01kΩG≈100大电流档R_sense1ΩRg1.01kΩG≈100。一定要在INA333的REF引脚接一个低阻抗的基准点单向电流就接地双向电流就接VCC/2。REF引脚不能悬空否则输出参考点漂移后期校准会很痛苦。输出端加一阶RC低通比如1kΩ串联电阻加100nF电容截止频率约1.6kHz能有效滤掉换挡瞬间的毛刺和开关电荷注入同时不影响直流采集。然后在ADC采集软件里做滑动平均效果比单纯堆硬件滤波器好得多。3.3 换挡逻辑滞回是必须的不然会在临界点来回跳自动换挡的软件逻辑不复杂但有一个细节一定要处理好——滞回。如果上行和下行用同一个阈值比如30μA切换那电流在30μA附近轻微波动时系统会反复切换量程继电器或模拟开关来回动作不仅增加时间开销还会引入持续的毛刺。我通常这样设计上行阈值取满量程的90%下行阈值取满量程的5%~10%。例如小电流档输出到2.8V对应28μA时切到中档中档输出低于150mV对应15μA时再切回小档。这样档位之间形成一段重叠区切换不会太频繁数据连续性也更好。上电初始化时我建议从大电流档开始也就是先使用1Ω采样电阻确认电流安全后再逐级升档。如果一上来就默认小档在未知负载的情况下可能瞬间给10kΩ电阻灌入几十mA电阻功耗会到几瓦级别直接过热损坏。3.4 软件校准每档都要单独标定不能只标一次分段换挡后每一档的增益误差、失调电压都不一样必须分别校准。我的做法是给每个量程都存两组数据零点校准值和增益校准值。EEPROM里放一个结构体三个量程各一份。校准时先在电流为零的状态下读ADC记下offset再接入标准恒流源比如小档用10μA中档用100μA大档用10mA读ADC后算gain。真正运行时电流值就是(ADC读数-offset)/gain。采样电阻的温漂如果要求高还要配合温度传感器做线性补偿。实际项目里我用这套方法做到整机跨档一致性误差在0.5%以内是没有问题的。如果不做校准模拟开关RON、电阻误差、放大器失调加起来误差可能轻松超过2%~3%而且不同温度下还会漂。4. 调试中遇到的典型问题与排查思路4.1 小电流档读数跳得厉害底噪明显偏大这种情况十有八九不是运放的问题而是低通带宽太宽或者采样电阻值太大导致Johnso噪声叠加。10kΩ电阻在室温下的热噪声密度约12.9nV/√Hz乘以小档G10后等效输出噪声密度约0.13μV/√Hz。如果不限制带宽比如测量带宽10kHz输出噪声就有13μV量级换算成电流误差约0.13nA在小电流档已经很可观。解决思路分两级硬件上在INA333输出端加强低通把带宽压到几十Hz以内软件上做多周期平均。如果还要求实时性可以考虑限制采样率用Σ-Δ ADC内置数字滤波器。4.2 大电流档读数偏低但不规律大电流档读数偏低先查采样电阻的温漂和开关导通电阻。1Ω采样电阻如果用的是普通厚膜贴片温度系数可能到几百ppm/°C大电流下电阻自身轻微温升就足以产生明显偏差。建议换成合金电阻或金属箔电阻温漂控制在25ppm/°C以内。如果大电流档是通过继电器切换的还要怀疑继电器触点电阻的稳定性。信号继电器触点电阻通常在几十mΩ级别看似很小但和1Ω采样电阻串联时误差可能到几个百分点。解决办法是在软件校准里把继电器触点电阻折算进去或者做大电流档校准时直接标定整条回路。4.3 换挡瞬间ADC采到尖峰这是换挡方案最常见的现象。模拟开关电荷注入或继电器触点抖动都会在INA333输入端产生瞬态电压毛刺经过100倍放大后非常夸张。我用三招解决一是换挡后延时10~50ms等信号稳定二是ADC采样丢弃前几次读数只取稳定后的值三是在INA333输出端加二阶滤波。组合下来毛刺基本不会再影响数据。4.4 高边采样时共模电压把放大器压死如果你不是低边采样而是把采样电阻放在电源高边那共模电压可能远高于运放供电轨。INA333的输入共模范围有限单电源3.3V供电时输入共模通常只能在V-附近到V-0.1之间。高边共模超过这个范围输出就会失真。这个场景下建议改用宽共模电流检测放大器比如INA240、INA281这类高边专用芯片或者用电阻分压加电平移位把共模压到INA333允许范围内但分压会牺牲精度。优先还是建议做低边采样如果负载不能浮地再加专门的高边方案。我把调试过程中遇到的问题整理成了速查表方便后面直接对号入座。现象可能原因排查方向小电流档噪声大带宽太宽、电阻热噪声加强低通、软件平均大电流档读数偏低开关RON、电阻温漂、触点电阻换合金电阻、做整档校准换挡瞬间毛刺电荷注入/继电器抖动延时采样、滤除前几次数据输出饱和且不可控采样档位切换不及时检查滞回阈值和上电初始档高边测量输出不对共模超限改低边或换高边专用芯片5. 如果一定让我直接推荐“一颗运放”5.1 先说明白单颗运放解决不了整个量程你如果非要一个芯片型号作为答复那我的答复是一颗运放无法替你解决90dB动态范围的分档问题但如果你只是在固定的某一档中做前端放大替换INA333的芯片选择还是有的。如果追求更低失调、更低偏置电流OPA388、AD8638都是零漂移运放前级小信号性能很强。如果做跨阻放大器LMP7721的输入偏置电流低到fA级别适合测极小的电流源。但这些芯片换上去不能替代采样电阻和量程切换设计只是优化了信号链的噪声和失调下限。5.2 想要跨档简单也可以直接选用带增益切换的专用电流检测放大器如果你不想自己搭量程切换网络市场上也有自带增益选择的电流检测放大器例如INA190系列、INA191系列它们内部集成了可选的固定增益档位配合外部采样电阻能在一定范围内扩展动态。这类方案的优势是电路简单、共模范围宽但微安级别的低端性能依然依赖于采样电阻和噪声处理。如果应用环境允许我自己更倾向用INA333做前端差分放大一路固定增益100倍再拿普通模拟开关切换采样电阻网络。这样做的好处是放大器只负责把模拟小信号提到安全水平量程逻辑完全由采样电阻和软件控制出现问题也容易定位好调试、好维护。最后说点个人体会这类宽动态电流采集我做过的项目不算少每次踩坑几乎都踩在同一类地方不是运放选得不够高端而是没有把采样电阻、开关网络、软件校准当成一个整体来设计。看到有人只纠结“INA333要不要换”我就忍不住想说先把量程切分和校准想清楚很多问题根本轮不到换芯片来解决。1μA到30mA确实是个挑战但只要接受“分段处理”这个事实做起来并没有想象中那么难。
返回列表