☰
低成本电流检测方案:用LMV321运放搭出高精度采样电路
2026/10/7 12:52:59 网站建设 项目流程

前阵子给一个锂电池供电的小设备做电流监测,客户需求很直白:测出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.8mV,100mV输入最多对应不到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_sense

V_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.1W

0.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.1V,ADC满量程目标3.0V,那运放需要提供的增益是:

G = 3.0V / 0.1V = 30

如果使用低端检测的同相放大电路,LMV321输出电压和输入电压的关系是:

V_out = V_sense × (1 + Rf / R1)

增益公式是:

G = 1 + Rf / R1

代入G=30,得到:

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.3V,GND引脚接系统地,在VCC和GND之间就近接100nF陶瓷电容和10uF电解电容。这一步不做,后面很容易出现自激振荡。

第三步,搭反相端反馈网络。R1一端接LMV321的反相输入端,另一端接系统GND;Rf一端接反相输入端,另一端接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 校准和验证流程

校准时尽量用电子负载,没有的话用大功率电阻也能凑合。我的校准步骤是这样的:

  1. 空载,记录输出电压V0。
  2. 通0.2A恒定电流,记录输出电压V1。
  3. 通0.5A恒定电流,记录输出电压V2。
  4. 通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Ω采样电阻,可以把几个电阻并联凑出目标阻值,但一定要保证功率余量足够,并且并联之后务必实测阻值再写进校准程序,这比什么理论估算都靠谱。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询