
1. 从一颗小芯片说起INA199到底解决了什么问题搞硬件的人都有一个共识电流采样看起来简单做起来处处是坑。尤其是当你用一颗分流电阻shunt resistor去测量电流时示波器上那个波形总是跳得让你怀疑人生。INA199这颗芯片就是专门来收拾这个局面的。它是一个电压输出型电流分流监视器内部集成了一个差分放大器和一个增益网络封装里就两个电阻加一个运放的事但它把最难搞的共模电压处理做到了极致——共模电压范围从-0.2V到26V独立于供电电压。什么意思就是说你的采样电阻可能浮在20V的母线电压上而INA199的供电只有3.3V它照样能把电阻两端那几十毫伏的差分信号干净地放大出来。这个特性在FOC电流采样、电机驱动、电池管理、电源模块里简直是救命稻草。你想想三相逆变器的下桥臂采样电阻在MOS管开关的瞬间那共模电压在0V和母线电压之间疯狂跳变压摆率动辄几十V每纳秒。普通运放组成的差分放大电路共模抑制比再高也扛不住这种折腾输出直接饱和或者振荡。INA199靠的是内部精心匹配的电阻网络和特殊的输入级结构把共模误差压到了极低。这篇文章适合谁看如果你正在做电机控制板的电流采样电路或者你刚学完模电的差分放大章节想知道课本上的长尾差分对和实际芯片之间差了哪些工程细节那这篇内容就是写给你的。我会从模电基础出发把INA199的共模电压处理技巧拆开揉碎配上我实际调试中踩过的坑和验证过的参数让你看完就能动手改电路。2. 差放芯片的模电底子为什么共模电压是核心矛盾2.1 从长尾差分对到集成差放一个被忽略的细节模电教材里讲差分放大电路经典结构是长尾电流源加一对匹配的BJT或者MOS管。理想情况下差分增益是gm乘以集电极电阻共模增益接近零。但教材没告诉你的是实际电路的共模抑制比受限于两个东西电阻匹配精度和尾电流源的输出阻抗。我当年做分立差分放大电路的时候用1%精度的金属膜电阻四个电阻两两匹配算下来共模抑制比也就60dB左右。而且温度一变电阻的温漂不一致共模抑制比还会往下掉。INA199内部用的是激光修调过的电阻网络匹配精度能做到0.01%以内再加上特殊的电路布局共模抑制比轻松超过100dB。这就是集成差放和分立差放的本质差距——不是拓扑有多神秘而是匹配和温漂控制做到了极致。2.2 共模电压和差模电压用两个水管的类比讲清楚很多人分不清共模电压和差模电压。我打个比方你有两根水管一根流热水一根流冷水。差模电压就是两根水管的水温差共模电压就是两根水管共同承受的那个基础水压。在电流采样里采样电阻两端的电压差就是差模信号通常只有几十毫伏。而采样电阻所在的节点对地的电压就是共模电压可能是0V也可能是几十伏。INA199要做的就是在这个巨大的共模电压上面把那个微小的差模信号精确地提取出来。问题在于共模电压不是静止的。在FOC电流采样中下桥臂MOS管开通时采样电阻的共模电压接近0VMOS管关断时续流二极管导通共模电压瞬间跳到母线电压。这个跳变的压摆率可以达到50V/ns以上。INA199的输入级如果响应不够快输出就会产生尖峰或者振铃。2.3 INA199的输入级结构为什么它能扛住高压摆率INA199的输入级用了两个匹配的PNP管作为输入缓冲后面接一个差分放大器。PNP输入的好处是共模电压可以低于供电电压甚至能到-0.2V。这对于下桥臂采样特别友好因为地弹或者负压尖峰不会导致输入级截止。更关键的是INA199内部有一个共模电压抑制网络它会在共模电压快速变化时通过内部电容反馈路径维持差分信号的完整性。这个机制的具体电路细节官方数据手册没有完全公开但从实测波形来看在共模电压跳变100V/μs的情况下输出尖峰被控制在几十毫伏以内。注意INA199有三个增益版本A1增益50V/VA2增益100V/VA3增益200V/V。选型的时候要根据采样电阻上的最大差分电压和ADC的输入范围来算不要盲目选高增益。3. 电流采样电路设计从参数计算到布局落地3.1 采样电阻怎么选功率、精度和温漂的三角博弈采样电阻的选型是电流采样电路的第一步也是最容易翻车的地方。我见过太多人随便拿一个0805的1Ω电阻就往上焊结果一上电电阻就冒烟。选采样电阻要算三个参数阻值、功率、温漂。阻值的计算公式很简单Rshunt Vout_max / (Gain × I_max)。假设你用INA199A2增益100ADC满量程3.3V最大电流10A那么Rshunt 3.3 / (100 × 10) 3.3mΩ。这个阻值下10A电流产生的压降是33mV功耗是0.33W。功率要留至少2倍余量所以选1W以上的电阻。温漂方面普通厚膜电阻的温漂是100ppm/°C温度变化50°C时阻值变化0.5%对于精度要求高的场合不够用。建议选合金电阻或者四端子电阻温漂能压到50ppm/°C以内。参数计算公式示例值阻值Vout_max / (Gain × I_max)3.3V / (100 × 10A) 3.3mΩ功率I_max² × Rshunt × 210² × 0.0033 × 2 0.66W温漂ΔT × TCR × Rshunt50°C × 50ppm × 3.3mΩ 8.25μΩ3.2 输入滤波电路截止频率算错了等于没滤电流采样电路输入滤波是很多人忽略的环节。INA199的输入端直接接采样电阻如果采样电阻离芯片比较远走线上会引入寄生电感在MOS管开关时产生高频振铃。这个振铃会被芯片放大导致ADC采样值跳动。标准的做法是在INA199的两个输入端各串一个电阻再并联一个差分电容。电阻选10Ω到100Ω电容选100pF到1nF。截止频率的计算公式是fc 1 / (2π × (R1 R2) × C_diff)假设R1 R2 47ΩC_diff 470pF那么fc 1 / (2π × 94 × 470e-12) ≈ 3.6MHz。这个截止频率足够滤掉开关振铃又不会影响电流环的带宽。但这里有个坑输入滤波电阻会引入额外的共模误差。因为INA199的输入偏置电流在电阻上会产生压降两个电阻的匹配度直接影响共模抑制比。所以这两个电阻必须用0.1%精度的匹配电阻对或者用排阻。提示如果你用的是INA199的SOT-23封装输入引脚和采样电阻之间的走线要尽量短最好控制在5mm以内。走线长了寄生电感会跟输入电容形成谐振在特定频率上产生增益尖峰。3.3 布局和接地差放芯片最怕不对称INA199的布局核心原则就一条对称。两个输入走线要等长、等宽、平行走最好用地线包起来。如果一边走线长一边走线短寄生参数不一致共模抑制比会急剧下降。接地方面INA199的GND引脚要单独走线到采样电阻的地端不要跟功率地混在一起。功率地上的开关噪声会通过地线耦合到芯片内部导致输出异常。我通常的做法是在采样电阻的地端和INA199的GND之间放一个0Ω电阻或者磁珠把模拟地和功率地在物理上分开只在一点连接。去耦电容也不能省。INA199的供电引脚旁边要放一个0.1μF的陶瓷电容距离引脚不超过2mm。如果供电电源本身噪声比较大再并一个10μF的钽电容或者陶瓷电容。4. 共模电压处理实战从波形异常到稳定采样4.1 共模电压跳变导致输出尖峰一个真实案例去年我调试一个无刷电机驱动器用的是三相下桥臂采样每相一颗INA199A2。电机低速运转时电流波形很干净但一旦转速超过3000rpm电流采样值就开始周期性跳动FOC电流环直接震荡。用示波器同时抓共模电压和INA199输出发现每次下桥臂MOS管关断的瞬间输出都会有一个200mV左右的尖峰持续时间大概50ns。这个尖峰被ADC采到之后电流环就疯了。排查过程是这样的先确认不是ADC的问题用信号发生器直接给ADC输入一个干净的方波采样正常。然后确认不是采样电阻的问题换了一颗合金电阻尖峰还在。最后把注意力放到INA199的输入滤波上发现当时用的滤波电容是100pF截止频率算下来大概7MHz对50ns的尖峰抑制不够。把滤波电容换成470pF电阻从22Ω换成47Ω截止频率降到3.6MHz。再测尖峰从200mV降到了30mV左右。但电流环还是有点抖后来在INA199输出端加了一个RC低通截止频率1MHz问题彻底解决。4.2 共模电压超出范围-0.2V到26V不是随便写的INA199的共模电压范围是-0.2V到26V但这个范围是有条件的。数据手册里有一张图横轴是共模电压纵轴是输出电压摆幅。当共模电压接近26V时输出电压的摆幅会受限不能达到满量程。我遇到过一种情况母线电压是24V下桥臂采样电阻在MOS管关断时共模电压理论上等于母线电压加上续流二极管的压降大概24.7V。这个电压在INA199的范围内但已经接近上限了。实测发现当共模电压超过24V时输出开始非线性增益下降了大概5%。解决办法有两个一是换用共模电压范围更宽的芯片比如INA240-4V到80V二是在采样电阻和INA199输入之间加一个共模电压钳位电路把共模电压限制在20V以内。我选了第二个方案用两个BAV99二极管做钳位成本低效果也不错。4.3 交流电流采样共模电压是变化的交流电流采样电路比直流采样麻烦得多因为共模电压本身就在变化。比如在逆变器中输出电流是交流的采样电阻上的共模电压会跟着正弦规律变化频率跟输出频率一致。这种情况下INA199的共模抑制比在整个共模电压范围内的一致性就很重要了。数据手册里给的共模抑制比是典型值实际芯片在不同共模电压下的表现会有差异。我实测过几颗INA199A2在共模电压从0V扫到20V的过程中输出偏移的变化大概在0.5%以内对于大多数电机控制应用足够了。但如果你的应用对精度要求极高比如伺服驱动器的电流环建议在软件里做共模电压补偿。具体做法是在MOS管关断期间读取INA199的输出作为共模误差的参考值然后在MOS管开通期间从采样值里减掉这个误差。5. 常见问题与排查技巧实录5.1 输出一直饱和或者为零先查供电和焊接INA199输出异常第一步永远是查供电。用万用表量V引脚确认电压在2.7V到5.5V之间。如果供电正常再查REF引脚。INA199的REF引脚决定了零电流时的输出电压单电源供电时通常接V/2或者GND。我遇到过一批板子INA199的输出一直是0V查了半天发现是REF引脚虚焊。因为REF引脚在SOT-23封装的中间回流焊的时候如果焊膏量不够很容易虚焊。后来在PCB上把REF引脚的焊盘加大了一点问题就没了。5.2 输出噪声大去耦和滤波双管齐下INA199的输出噪声主要来自三个方面供电噪声、输入噪声和内部噪声。供电噪声靠去耦电容解决输入噪声靠输入滤波解决内部噪声只能靠输出滤波或者软件平均。我一般会在INA199的输出端加一个RC低通电阻100Ω电容1nF截止频率1.6MHz。如果ADC的采样率不高还可以在软件里做滑动平均比如每4次采样取平均噪声能降一半。5.3 温漂导致精度下降电阻和芯片的匹配很重要INA199的增益误差温漂是10ppm/°C失调电压温漂是0.5μV/°C。这些参数看起来很小但在宽温度范围的应用里累积起来就很可观了。比如一个电机驱动器环境温度从-20°C到80°C温差100°C。失调电压漂移0.5μV/°C × 100°C 50μV折算到输入端是50μV对于3.3mΩ的采样电阻来说相当于15mA的电流误差。如果电机的最低控制电流是100mA这个误差就是15%不能忽略。解决办法是在软件里做温度补偿。用一颗NTC热敏电阻测量板温根据温度查表修正采样值。补偿系数可以通过高低温箱标定得到。问题现象可能原因排查方法解决方案输出饱和供电异常、REF虚焊万用表量V和REF补焊或换芯片输出为零输入短路、芯片损坏量输入引脚电压检查采样电阻和走线噪声大去耦不足、滤波不够示波器看输出纹波加去耦电容和RC滤波温漂大电阻温漂、芯片温漂高低温箱测试软件温度补偿共模误差大输入电阻不匹配量两个输入电阻换匹配电阻对5.4 独家避坑技巧三个我踩过的坑第一个坑输入滤波电容用错类型。我一开始用X7R的陶瓷电容做差分滤波结果发现电容的直流偏压特性导致实际容值比标称值低了30%截止频率算出来是3.6MHz实际是5MHz。后来换成C0G的电容容值稳定问题解决。第二个坑采样电阻的布局不对称。有一次我把采样电阻放在PCB的顶层INA199放在底层过孔不对称导致两个输入走线的寄生电感差了2nH。在100kHz的开关频率下2nH的电感产生的共模误差大概有几十毫伏。后来把采样电阻和INA199放在同一层问题消失。第三个坑REF引脚接错。INA199的REF引脚可以接GND、V/2或者外部基准。我一开始接GND零电流时输出是0V但ADC的输入范围是0到3.3V负电流的时候输出就负了ADC采不到。后来改成接V/2零电流时输出1.65V正负电流都能采。6. 从INA199延伸出去差放芯片选型和电路演进6.1 什么时候该换芯片INA199的边界在哪里INA199不是万能的。它的共模电压范围是-0.2V到26V带宽是14kHz增益100时对于大多数电机控制够用。但如果你的母线电压超过26V或者你的电流环带宽要求超过10kHz就得考虑其他芯片。比如INA240共模电压范围-4V到80V带宽400kHz适合高压高频的应用。再比如INA241共模电压范围-5V到110V带宽1MHz适合碳化硅或者氮化镓器件的驱动。选型的时候先确定共模电压范围和带宽需求再根据增益和精度要求筛选。6.2 分立差放还有没有生存空间有人问既然INA199这么方便分立差放还有必要学吗我的答案是必须学。因为集成差放的内部结构就是分立差放的优化版你理解了分立差放的原理才能理解INA199数据手册里那些参数的来龙去脉。比如共模抑制比这个参数分立差放里取决于电阻匹配集成差放里取决于内部电阻网络的修调精度。你知道了这个就能明白为什么INA199的共模抑制比能到100dB而你自己搭的电路只有60dB。再比如温漂分立差放里电阻的温漂直接决定增益温漂集成差放里内部电阻和芯片在同一个硅片上温度一致温漂自然小。6.3 未来趋势集成化与数字化的融合电流采样电路的趋势很明显集成化和数字化。集成化就是把差放、滤波、ADC甚至隔离都做到一颗芯片里比如TI的AMC1300系列隔离放大器加ΔΣ调制器直接输出数字信号。数字化就是把采样和补偿都放到MCU里做用软件算法替代硬件电路。但不管怎么变共模电压处理这个核心问题不会消失。只要你的采样电阻浮在功率回路上共模电压就永远存在。INA199的价值在于它把这个问题解决得足够好、足够便宜、足够简单。你学会了INA199的用法再去看那些更复杂的芯片会发现底层逻辑是一样的。我在实际项目中的体会是先把INA199用透再考虑升级。很多问题不是芯片不够好而是电路没设计对。输入滤波、布局对称、去耦到位这三件事做好了INA199在大多数应用里都能稳定工作。等你把这些基础打牢了再去玩INA240或者隔离采样心里就有底了。