ARTICLE DETAIL

资讯详情

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

低成本电流检测方案:用LMV321运放搭出高精度采样电路

低成本电流检测方案:用LMV321运放搭出高精度采样电路 前阵子给一个锂电池供电的小设备做电流监测客户需求很直白测出0到1A的放电电流MCU负责ADC采集成本还要压到最低。我当时先想到的是专用电流检测放大器比如INA180这类的确实好用外围也省但单价摆在那里小批量采购加上运费就有点肉疼。翻了一圈库存最终方案落在一颗LMV321上——一颗几毛钱的低压运算放大器。LMV321本身没有“电流检测”这个专用功能但用运放搭电流检测电路本来就是非常成熟的玩法一颗采样电阻把电流转成毫伏级电压再用运放放大到ADC量程。这套方案的优势在于灵活增益靠外部两个电阻就能随便调换一个使用场景也不用重新画板子。这篇文章我就把整个过程讲透从LMV321这颗料为什么合适到低端检测和高端检测两种接法怎么选再到采样电阻和放大倍数的计算公式、误差分析、实际焊接和校准步骤以及新手最容易踩的坑。适合正在做电池放电监控、充电电流采集、电机堵转检测或者DCDC改造项目的朋友参考也适合刚接触运放、想搞明白“电流检测到底是怎么回事”的入门开发者。1. 为什么选LMV321做电流检测1.1 这颗低压运放到底什么来头LMV321是比较常见的低压低功耗CMOS运放单路集成工作电压2.7V到5.5V和3.3V、5V的单片机系统放一起非常搭。输出是轨到轨也就是说输出端最高能很接近供电电压这对ADC采样特别友好满量程利用率高。内部是CMOS结构输入偏置电流小到nA级别基本不会给外部高阻分压网络带来额外负担。封装上常见的是SOT23-5尺寸很小适合做在空间受限的板子上。更重要的是这料价格非常友好。我做这个项目的时候单颗采购价在几毛钱人民币级别比专门的电流检测芯片便宜一个数量级。如果你做的是大批量产品哪怕每颗省三毛钱十万片就是三万块这数字非常可观。但需要注意LMV321的输入共模范围并不是全轨到轨这一点和输出轨到轨是两码事。也就是说输入端能正常“工作”的电压范围并不会完全覆盖0V到电源电压的全部区间。尤其当供电电压偏低、信号电压又接近电源电压的时候很可能超出输入共模范围导致放大倍数异常。这个问题后面我会专门展开因为很多人在这里翻车。1.2 运放搭电流检测的基本原理电流检测的本质是欧姆定律电流通过已知阻值的电阻电阻两端会产生压降测出这个压降反推电流。一个1A的电流流过0.1Ω电阻产生的压降只有0.1V也就是100mV。如果直接拿万用表或者MCU的ADC去量这100mV虽然也能量但分辨率很有限。假设ADC参考电压3.3V、12位分辨率一个LSB大约是0.8mV100mV输入最多对应不到130个码值整段电流范围只能分出头尾精度根本不够看。所以需要运放把这100mV放大成接近3.3V的信号让ADC用满整个量程这就是电流检测电路的核心逻辑。做个生活化类比采样电阻像一把秤但是一把需要用强光手电筒才能看清刻度的秤运放就是那个手电筒。没有手电筒你得趴在地上瞪着眼睛看那一点点刻度有了手电筒读数就清清楚楚。2. 两种经典拓扑用之前先搞清楚2.1 低端电流检测电路简单但有地线代价低端检测的接法是电源正极先经过负载再经过采样电阻回到系统地采样电阻放在负载和地之间。示意图如下VCC ── LOAD ── R_sense ── GND │ └── R1 ─ LMV321同相输入运放同相输入端接采样电阻的高电位端也就是靠近负载那一端反向输入端通过反馈电阻网络接输出。因为采样电阻上的压降很小运放输入电压基本都在0V附近远在LMV321的输入共模范围之内所以LMV321用在这种拓扑下非常稳。低端检测最大的优点是简单一个同相放大电路搞定外围元件少不需要考虑共模电压问题。但代价也很明显采样电阻串在地回路里导致负载的“地”并不是真正的系统地。当负载电流比较大的时候采样电阻上的压降会给负载地带来零点几伏的抬升这在多模块系统中可能引起地弹、串扰甚至逻辑误触发。如果只有一块板子、一个负载、一个ADC没什么问题但如果系统里有多个地节点比如继电器、电机、传感器混在一起低端检测的地线干扰就可能让你欲哭无泪。2.2 高端电流检测地线干净但共模难搞高端检测的接法是电源正极先经过采样电阻再进入负载也就是采样电阻放在电源和负载之间。示意图如下VCC ── R_sense ── LOAD ── GND │ ├── R1 ── LMV321反相输入 └── 分压/差分网络高端检测不破坏负载的地回路负载的地和系统地之间没有额外压降地弹问题自然就消失了。电池包、充电器这类对地线质量敏感的场景通常更愿意用高端检测。但代价是电路复杂度上去了而且有一个非常致命的问题采样电阻两端都是高电位。比如3.3V系统里测1A电流采样电阻两端电压大概在3.3V和3.2V附近也就是说运放两个输入引脚的电压都在3V以上。这时候就要仔细查LMV321的输入共模范围了如果输入共模范围到不了VCC或者到了VCC附近特性已经恶化那这个电路就是废的。所以我一贯的实践原则是**如果不是非高端检测不可优先选低端检测让LMV321工作在它最舒服的低电压区域。**如果因为地线隔离、共地干扰等原因必须做高端检测那就要么换一颗真正的轨到轨输入运放比如MCP6001这类要么给运放输入端做电阻分压把共模电压先拖到安全范围再做差分放大。后一种做法会引入额外误差电阻匹配要求也更高一般不建议新手直接玩。2.3 两种方案怎么选列个表就清楚了对比项低端检测高端检测电路复杂度低同相放大即可高需要差分放大或分压网络LMV321输入共模压力小信号接近地非常安全大输入接近电源轨容易超范围地线干扰有采样电阻串在负载地回路无负载地回路完整典型应用单板负反馈、电池放电监控、简单采集对地线质量要求高的系统、电池包高边采样成本最低略高电阻数量和精度要求增加我的建议很明确个人DIY、学习验证、单片机小项目直接低端检测便宜又省心。产品研发、要过EMC、电路板上有多个地节点的再认真评估高端检测不要一开始就给自己上难度。3. 关键参数怎么算公式一步一步推导3.1 采样电阻选型阻值、功率、温漂采样电阻是整套检测电路的核心它的选择围绕一个公式展开V_sense I_load × R_senseV_sense是满量程电流在采样电阻上的压降。这个压降不能太小太小了运放要放大几千倍LMV321的带宽和失调电压扛不住也不能太大太大了电阻功耗和发热急剧上升温漂带来的误差也变大。我做一个完整示例需求是检测0到1A的电流MCU ADC参考电压3.3V留出10%的余量目标满量程输出约3.0V。第一步选采样电阻。我取R_sense 0.1Ω也就是100mΩ。那么在1A满量程下V_sense 1A × 0.1Ω 0.1V电阻功耗P I² × R 1² × 0.1 0.1W0.1W的安全功耗选0.25W封装足够了如果后续打算调到2A量程就需要0.5W甚至1W的电阻否则贴片电阻会热到烫手阻值也会漂移。如果你要检测的电流更大比如5A那0.1Ω功耗就是2.5W非常恐怖。这时候要么把采样电阻降到0.01Ω让压损降到0.05V要么换毫欧级锰铜电阻、合金电阻。总之原则是让满量程压降控制在0.05V到0.2V之间功率余量至少留2倍。温漂方面普通贴片电阻温漂在100ppm/℃到200ppm/℃左右从25℃升到65℃阻值变化就是0.4%到0.8%对应测量误差非常可观。所以我一般直接选1%精度、50ppm或者更低的低温度系数电阻价格高不了几毛钱精度回报却很大。3.2 放大倍数和反馈电阻计算继续用上面的参数。采样电阻最大压降0.1VADC满量程目标3.0V那运放需要提供的增益是G 3.0V / 0.1V 30如果使用低端检测的同相放大电路LMV321输出电压和输入电压的关系是V_out V_sense × (1 Rf / R1)增益公式是G 1 Rf / R1代入G30得到Rf / R1 29我先定R1 1kΩ那么Rf 29kΩ。E24系列标准电阻里没有29k这个值最接近的是30k于是增益变成31倍满量程输出变成3.1V还是在ADC参考电压3.3V以内完全没问题。实际项目里用不到那么严格放大31倍和30倍差别不大。所以最终参数R1 1kΩRf 30kΩ实际增益G 1 30k / 1k 31倍如果你必须刚好30倍也可以把R1取2kΩ、Rf取58kΩ但58k更不常见不值当。工程上不是做数学题性能达标前提下用什么电阻取决于库里有什么。3.3 差分放大电路计算公式如果你的项目必须用高端检测那就不能再用同相放大得改成差分放大或者叫减法电路。典型结构是采样电阻两端分别接两个电阻到运放两个输入端反馈电阻和接地电阻构成对称网络。输出电压和输入差模电压的关系是V_out (V_sense - V_sense-) × (Rf / Rin)这里Rin是输入端电阻Rf是反馈电阻同时要求两个输入支路的电阻比例严格一致也就是R1 R3 R2 R4这样才能保证共模电压被抵消只放大两端的差模信号。如果你用1%精度的电阻去搭共模抑制能力会明显下降因为电阻不匹配直接转换成误差。高端检测里共模电压可能高达几伏哪怕只是千分之一的失配也会引入几毫伏的误差在小电流检测时这些误差就会被放大得很难看。所以真要做高端差分建议电阻至少选0.1%精度薄膜电阻或者直接换专用电流检测放大器省心很多。3.4 增益带宽积和频率响应LMV321的增益带宽积GBW大约是1MHz。这个数字意味着什么增益和信号带宽的乘积是常数我用31倍增益那么理论上能处理的信号带宽大约是BW 1MHz / 31 ≈ 32kHz对于电池放电监控、充电电流慢变信号来说32kHz完全够用。但如果你要用在电机相电流检测、开关电源输出电流反馈这些信号变化很快的场合增益31倍下的32kHz带宽可能就不够了。要么降低增益、牺牲分辨率换取带宽要么换一颗增益带宽积更高的运放。另外运放反馈回路在增益较高时容易产生自激振荡解决办法是在反馈电阻Rf上并联一个小电容几pF到几十pF都可以形成低通滤波把高频毛刺压下去。这个电容不是必须的但只要你看到输出波形有几十兆赫兹级别的振荡纹波第一反应就应该是在Rf上并一个10pF到22pF的电容。3.5 误差预算失调电压和偏置电流运放不是理想放大器LMV321存在输入失调电压Vos。这个参数对电流检测非常致命因为失调电压会被当成有效信号直接放大。假设LMV321最大失调电压7mV增益31倍输出端就会产生V_out_error 7mV × 31 217mV折算到电流输入端等效误差电流为I_error 7mV / 0.1Ω 70mA也就是说实际电流明明是0输出却可能已经有0.217V的电压ADC读出来像是有70mA在流动。满量程1A的系统里这就是7%的误差绝对不可忽略。从计算上就能看出采样电阻越小运放失调电压折算到电流的误差越大。这就是为什么0.01Ω采样电阻配普通运放做小电流检测根本做不好。解决思路有这么几个一是加大采样电阻让信号变强但这受功耗和发热限制二是选低失调电压的专用运放三是做硬件调零或软件校准上电时先测零电流输出后面所有读数都减去这个底数。实际项目里最实用的是软件校准零成本且效果立竿见影。输入偏置电流方面LMV321是CMOS输入偏置电流只有nA级别在1kΩ到几十kΩ的电阻网络上产生的误差微乎其微基本不用专门为它做补偿。但要注意如果你把增益电阻取到1MΩ这种量级那偏置电流和热噪声都会明显恶化正常控制在100kΩ以内就好。4. 手把手实操从面包板到通电校准4.1 元器件清单下面是我做这个项目时实际用到的物料清单全部是常见料电子市场很容易凑齐元器件型号/参数数量说明运放LMV3211单运放SOT23-5封装采样电阻0.1Ω1%0.25W1关键精度元件不要随便拿色环电阻顶替增益电阻Rf30kΩ1%1决定放大倍数输入电阻R11kΩ1%1同上电源去耦电容100nF 10uF各1必须靠近运放电源脚反馈并联电容22pF可选抑制自激振荡输出滤波电阻100Ω可选配合电容做低通滤波输出滤波电容10nF可选配合电阻做低通滤波万能板或面包板-1建议先从面包板验证原理万用表-1测电压、测电流都靠它直流稳压电源-1模拟负载回路供电电子负载或功率电阻-1用来通恒定电流测试4.2 低端检测接线步骤我以低端检测为例走一遍完整接线流程。第一步把LMV321放到面包板上确认电源脚和输出脚的位置SOT23-5封装引脚顺序务必对照datasheet不同厂家的引脚排列可能有差异千万别只看丝印猜。第二步接电源。LMV321的VCC引脚接3.3VGND引脚接系统地在VCC和GND之间就近接100nF陶瓷电容和10uF电解电容。这一步不做后面很容易出现自激振荡。第三步搭反相端反馈网络。R1一端接LMV321的反相输入端另一端接系统GNDRf一端接反相输入端另一端接LMV321的输出脚。这样反相输入端和输出之间就构成了负反馈。第四步接采样电阻。把0.1Ω电阻一端接负载的负极输出端另一端接系统地。采样电阻高电位端接一个1kΩ左右的电阻到运放的同相输入端如果直接用线连过去也行但要防止这个点被其他噪声干扰。第五步接输出。运放输出脚直接接一个100Ω电阻串联后到ADC输入后面可以再接一个10nF电容到地组成简单的RC低通滤波滤掉几千赫兹以上的高频干扰。接线完成后上电先不接负载测运放输出电压。理想情况是0V附近但因为有失调电压实际可能输出几十毫伏到几百毫伏这是正常的记录下来备用。然后接一个已知阻值的功率电阻做负载比如用10Ω大功率电阻3.3V电源下流过约0.33A电流此时理论输出应该是V_out 0.33A × 0.1Ω × 31 ≈ 1.02V用万用表实测输出如果和计算值接近电路就通了。4.3 高端检测接线的几个关键点高端检测的接线关键在四个电阻的匹配。我的做法是先把四个电阻用万用表挑选配队确保两条支路电阻误差尽可能小。接线时将采样电阻两端分别通过两个输入电阻接到运放的两个输入端反相输入端通过反馈电阻接输出同相输入端通过匹配电阻接到地这相当于把检测信号做了差分放大。高端检测的调零更麻烦因为即使没有负载电流采样电阻两端的电压是相同的但受共模电压影响运放输出仍然可能偏离零点。更稳妥的方法是在软件里做两点校准第一步空载记录零点第二步通过已知电流记录满量程点后面用线性插值还原电流值。4.4 校准和验证流程校准时尽量用电子负载没有的话用大功率电阻也能凑合。我的校准步骤是这样的空载记录输出电压V0。通0.2A恒定电流记录输出电压V1。通0.5A恒定电流记录输出电压V2。通1.0A恒定电流记录输出电压V3。把四组数据列成表格计算增益斜率斜率 (V3 - V0) / (1.0A - 0A)后续任意一次测量的实际电流就是I (V_out_actual - V0) / 斜率这套公式利用了实际测量到的增益而不是理论计算值把电阻精度带来的增益误差一起校准掉了比单纯套理论公式准得多。实测下来用0.1Ω采样电阻加31倍增益经过两点校准后在0.1A到1A区间的误差能做到量程的1%到2%以内对这个成本级别的电路来说非常理想。5. 常见问题与排查技巧实录5.1 输出空载就是几百毫伏怎么回事这是新手最容易懵的问题。其实原理很简单运放失调电压被放大后就在输出端体现出来了。比如7mV失调放大31倍就是217mV加上分压电阻微调差异出现几百毫伏底数非常正常。处理方法硬件上可以在同相输入端加一个调零电位器把零点强行拉到0V附近更推荐的做法是软件采集零电流底数后扣除。只要底数是稳定的不影响后续测量的线性度软件扣底数是最省事、最可靠的方案。5.2 输出波形有高频毛刺甚至振荡LMV321在增益30倍附近如果反馈线路过长或电源去耦不足非常容易自激振荡。现象就是输出波形上叠了一层密密麻麻的高频纹波万用表读数乱跳。排查顺序先看电源去耦电容是否靠近VCC引脚如果离得太远先改成就近焊接然后在Rf上并联一个10pF到22pF的电容把高频环路增益压下去再检查面包板的飞线是不是太长尤其输出线不要和输入线并行贴在一起。很多情况下仅并联一个反馈电容就能让噪声消失。5.3 电流测量值整体偏大或偏小问题大概率出在增益电阻或者采样电阻精度上。比如采样电阻标称0.1Ω实际是0.095Ω那整体测量就会偏小。用万用表实测采样电阻阻值不要相信印字。还有就是ADС参考电压不一定是准确的3.3V如果参考电压偏高ADC读值就会偏低。先把采样电阻和供电电压都实测一遍再核对增益电阻最后再做一次两点校准。5.4 加了负载后输出突然跳到接近电源电压这是电路自激振荡或者运放进入饱和的典型表现。先说饱和如果采样电阻压降加上失调电压经过增益放大后超出电源范围运放输出就会被钳位在接近VCC的位置此时的电路就失去了线性测量能力。需要减小增益或者降低采样电阻压降。再看振荡输出接近电源电压还伴随严重发热和纹波多半就是负反馈回路失去稳定先加反馈电容再检查同相输入端是否误接到了电源上。5.5 常见问题速查表现象可能原因处理方式空载输出几百毫伏运放失调电压被放大软件扣底数或硬件调零输出高频抖动电源去耦不足、反馈电容缺失就近加去耦电容Rf并联22pF读数整体偏小采样电阻或增益电阻实际值偏小万用表实测选1%精度电阻读数整体偏大采样电阻实际值偏大、ADC参考偏低实测电阻校准参考电压接大电流后输出饱和增益过高、采样电阻压降过大降低增益或减小采样电阻阻值高端检测时输出异常输入共模电压超出LMV321范围改用低端检测或换轨到轨输入运放我个人在实际操作中的体会是电流检测这套电路90%的问题都不是运放本身而是采样电阻选型不严谨、地线布局乱、以及忽略失调电压这三个原因。LMV321这颗料虽然不是精密运放但只要摸清它的脾气把输入共模范围、失调电压这两个参数放在心里它就能在低成本项目里干得很漂亮。最后再分享一个小技巧如果你手头没有0.1Ω采样电阻可以把几个电阻并联凑出目标阻值但一定要保证功率余量足够并且并联之后务必实测阻值再写进校准程序这比什么理论估算都靠谱。
返回列表