资讯动态

INA333便携式传感器信号调理实战:低功耗仪表放大器选型、电路设计与STM32/ESP32对接

发布时间:2026/10/6 10:39:03 来源:尧图企业网站定制
1. 便携式传感器信号调理的痛点与INA333的破局思路搞过便携式传感器项目的人都有一个共同体会传感器本身往往不是最难的难的是它输出的信号太弱、太脏直接送给单片机ADC读出来的数据基本没法用。尤其是应变片、热电偶、压力桥式传感器这类输出差分电压只有几毫伏甚至几十微伏的场景信号里混着工频干扰、共模噪声、电源纹波ADC采到的数值跳得跟心电图一样。我在做一款便携式压力采集模块的时候就踩过这个坑一开始图省事直接把桥式传感器的差分输出接到STM32的ADC引脚上结果数据抖动超过200个LSB根本没法做后续的滤波和标定。后来换成仪表放大器方案试过几款经典器件最终锁定在INA333上。这颗芯片在圈子里被叫做“小钢炮”不是没道理的静态电流只有50微安典型值单电源2.7V到5.5V就能工作失调电压低到25微伏最大值增益误差0.1%共模抑制比在增益100时能达到100dB以上。这些参数放在一颗MSOP-8封装、价格十几块钱的芯片上对于便携式设备来说几乎是量身定做的。你要知道很多同类仪表放大器的静态电流动辄几百微安甚至上毫安用在电池供电的便携设备上光是放大器就把续航吃掉了。这篇文章我打算把INA333在便携式传感器信号调理中的完整用法讲透从芯片选型逻辑、电路设计、增益电阻计算、单电源偏置技巧到和Arduino、STM32、ESP32这些常见主控的对接方式再到实际调试中遇到的噪声问题和排查方法。不管你是刚接触仪表放大器的新手还是已经用过几款仪表放大器想换更低功耗方案的老手应该都能从里面找到可以直接抄作业的东西。2. INA333核心特性拆解与选型逻辑2.1 为什么是INA333而不是普通运放搭差分电路很多人第一反应是差分放大电路用普通运放搭三个电阻不就行了为什么要花十几块钱买一颗专用仪表放大器这个问题我在早期项目里也纠结过。用普通运放搭差分电路最大的问题是电阻匹配精度。差分放大器的共模抑制比直接取决于电阻匹配度四个电阻只要有0.1%的失配共模抑制比就会掉到60dB以下。而传感器信号调理场景里共模干扰往往比差模信号大几个数量级比如工频共模干扰可能有几伏而你要测的差分信号只有几毫伏。这种情况下共模抑制比不够干扰直接淹没信号。INA333内部集成了经过激光修调的电阻网络三个运放构成的经典仪表放大器拓扑共模抑制比在增益100时保证100dB以上。而且它的输入阻抗极高差分输入阻抗100吉欧共模输入阻抗也是100吉欧级别对桥式传感器这种输出阻抗可能几千欧的源来说不会造成信号衰减。另外它内部的三运放结构让增益设置只需要一颗外部电阻增益公式是G 1 (100kΩ / Rg)这个100kΩ是内部修调过的精度很高你只需要选一颗合适的外部电阻就能得到精确的增益。还有一点容易被忽略INA333的输入偏置电流只有200皮安典型值输入失调电流50皮安。这意味着即使传感器源阻抗比较高比如热电偶或者某些高阻抗压力传感器偏置电流在源阻抗上产生的误差电压也极小。普通运放的输入偏置电流可能是纳安甚至微安级别在兆欧级源阻抗上就会产生毫伏级误差直接吃掉信号。2.2 关键参数与便携场景的匹配分析选芯片不能只看一个参数得把关键指标和你的应用场景对齐。我把INA333的核心参数和便携式传感器信号调理的典型需求列了个对照表参数INA333典型值便携场景需求匹配度分析静态电流50μA电池供电要求低功耗极优一颗CR2032能撑很久工作电压2.7V-5.5V单节锂电或3.3V系统完美匹配3.3V和5V系统失调电压25μV max微伏级信号需要低失调优秀25μV在同类中很低失调漂移0.1μV/°C户外温度变化场景很好温漂带来的误差可控共模抑制比100dB (G100)工频干扰环境优秀能压住大部分共模噪声增益带宽积350kHz (G100)低频传感器信号足够传感器信号通常1kHz输入偏置电流200pA高源阻抗传感器极优高阻抗源也不怕封装MSOP-8便携设备空间受限很小适合紧凑设计从表里可以看出来INA333在便携场景下的核心优势就是低功耗、低失调、高共模抑制比这三条。350kHz的增益带宽积看起来不高但传感器信号调理场景里你要测的压力、温度、应变这些物理量信号带宽通常都在几百赫兹以内完全够用。如果你要测振动或者声音这种高频信号那INA333可能不是最优选择得看更高带宽的型号。2.3 单电源供电的偏置问题与解决方案INA333可以单电源供电但单电源供电有个绕不开的问题输出不能低于负电源轨也不能高于正电源轨。当输入差分信号为负的时候输出想往负方向走但负电源是0V输出就卡在0V附近波形被削掉一半。这个问题在双电源供电时不存在因为负电源是-2.5V输出可以正常往负方向摆动。解决办法是给输出加一个直流偏置让静态输出坐在电源电压的一半左右。具体做法是在REF引脚上加一个等于电源电压一半的参考电压。比如3.3V供电时REF引脚加1.65V这样输出就以1.65V为中心摆动正负方向的信号都能正常放大。这个1.65V可以用两颗等值电阻分压得到也可以用一颗低压差基准源。用电阻分压的话记得在分压点加一个电容滤波否则电源噪声会直接串到REF引脚上被放大到输出。注意REF引脚的输入阻抗是100kΩ分压电阻的并联值要远小于这个值否则分压比会被REF引脚拉偏。建议分压电阻用10kΩ级别并联值5kΩ对100kΩ的影响在5%以内可以接受。如果要求更高可以用运放缓冲一下。3. 增益电阻计算与电路参数设计实操3.1 增益公式推导与电阻选型INA333的增益公式是G 1 (100kΩ / Rg)这个公式里的100kΩ是内部两个25kΩ电阻串联得到的激光修调后精度很高。Rg是外部增益电阻接在RG引脚之间。你要得到某个增益就把公式反过来算Rg 100kΩ / (G - 1)举个例子你要把桥式传感器输出的10mV差分信号放大到1.65V附近以1.65V为偏置需要放大165倍。那Rg 100kΩ / (165 - 1) 100kΩ / 164 ≈ 609.8Ω。标准电阻里没有609.8Ω最接近的是610ΩE96系列或者604ΩE24系列。用610Ω的话实际增益是1 100k/610 164.9和165倍差0.06%完全够用。这里有个细节要注意增益电阻的精度直接影响增益精度。如果你用1%精度的电阻增益误差就是1%左右。对于大多数传感器应用1%的增益误差可以通过软件标定消除问题不大。但如果你不想做标定那就得用0.1%精度的电阻成本会高一些。另外增益电阻的温度系数也要考虑普通厚膜电阻的温度系数是100ppm/°C温度变化20°C时增益漂移0.2%对于高精度应用可能需要选低温漂电阻。3.2 输入滤波与射频干扰抑制传感器信号线往往比较长容易拾取射频干扰。INA333的输入端虽然有内部保护但射频信号可能会在输入级被整流产生直流误差。解决办法是在输入端加一个差分低通滤波器截止频率根据你的信号带宽来定。比如你的传感器信号最高频率是100Hz那截止频率可以设在1kHz左右留10倍余量。差分滤波器的结构是在两个输入端之间跨接一颗电容Cdiff然后在每个输入端和地之间各接一颗电容Ccm。Cdiff和Ccm的关系是Cdiff ≥ 10 × Ccm这样差分信号和共模信号的截止频率才能匹配。电阻R可以串在输入端但要注意INA333的输入偏置电流在电阻上产生的噪声。200pA的偏置电流在10kΩ电阻上产生2μV的噪声相对于25μV的失调来说可以忽略。但如果电阻用到100kΩ噪声就变成20μV和失调一个量级了这时候就得权衡。截止频率的计算公式是f_diff 1 / (2π × R × Cdiff)f_cm 1 / (2π × R × Ccm)假设R 10kΩ想要差分截止频率1kHz那Cdiff 1 / (2π × 10k × 1k) ≈ 15.9nF取标准值15nF。Ccm取1.5nF共模截止频率约10.6kHz。这样配置下来差分信号在1kHz以上被衰减共模信号在10kHz以上被衰减射频干扰基本进不来。3.3 电源去耦与布局要点INA333的电源引脚去耦做不好输出噪声会明显变大。我的经验是在V引脚附近放一颗0.1μF的陶瓷电容再并一颗10μF的钽电容或陶瓷电容。0.1μF负责高频去耦10μF负责低频储能。两颗电容的接地端要尽量靠近芯片的GND引脚走线越短越好。PCB布局上增益电阻Rg的走线要尽量短且对称因为RG两个引脚之间的任何寄生电阻都会影响增益。输入端的走线要远离电源线和数字信号线最好用地线包围起来做屏蔽。REF引脚的走线也要注意如果REF电压是从远处引过来的中间要加滤波电容否则REF上的噪声会直接加到输出上。实操心得我习惯在REF引脚和地之间放一颗1μF的电容同时在REF分压电阻的中点也放一颗0.1μF的电容。这样REF电压的噪声能压到很低输出波形干净很多。另外如果PCB空间允许把INA333放在传感器接口附近缩短输入走线长度比什么滤波措施都管用。4. 与Arduino、STM32、ESP32的对接实战4.1 与Arduino UNO的5V单电源方案Arduino UNO的供电是5VADC参考电压默认也是5V10位分辨率。用INA333调理传感器信号输出偏置设在2.5V这样ADC读到的数值在512附近摆动。增益设置要根据传感器输出幅度来定目标是让放大后的信号尽量占满ADC量程但不削顶。比如传感器满量程输出20mV想放大到2V峰峰值增益就是100倍Rg 100k / 99 ≈ 1.01kΩ取1kΩ标准值实际增益101倍。接线方面INA333的V接5VV-接GNDREF接2.5V两颗10kΩ电阻分压加1μF电容输出接Arduino的A0。增益电阻接在RG引脚之间。传感器差分输出接INA333的IN和-IN。代码部分很简单就是读ADC然后换算void setup() { Serial.begin(9600); } void loop() { int adcValue analogRead(A0); float voltage adcValue * (5.0 / 1023.0); float sensorVoltage (voltage - 2.5) / 101.0; Serial.print(Sensor voltage: ); Serial.print(sensorVoltage * 1000, 3); Serial.println( mV); delay(100); }这段代码里voltage是ADC引脚电压减去2.5V偏置后除以增益101得到传感器原始差分电压。乘以1000换算成毫伏方便看。实测下来Arduino UNO的ADC噪声大概在2-3个LSB换算到输入端就是2.5mV / 101 ≈ 0.025mV也就是25μV左右和INA333的失调一个量级说明ADC本身成了瓶颈。如果要求更高得换外置ADC。4.2 与STM32的3.3V高分辨率方案STM32的ADC是12位的参考电压3.3V分辨率比Arduino UNO高4倍。用INA333调理信号输出偏置设在1.65VADC读到的数值在2048附近。STM32的ADC输入阻抗相对较低建议在INA333输出和ADC输入之间加一个电压跟随器做缓冲或者确认STM32的ADC采样时间设置得足够长让采样电容充分充电。STM32的HAL库代码示例#include stm32f1xx_hal.h ADC_HandleTypeDef hadc1; void SystemClock_Config(void); static void MX_ADC1_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_ADC1_Init(); HAL_ADC_Start(hadc1); while (1) { HAL_ADC_PollForConversion(hadc1, 100); uint32_t adcValue HAL_ADC_GetValue(hadc1); float voltage adcValue * (3.3f / 4095.0f); float sensorVoltage (voltage - 1.65f) / 101.0f; // 后续处理 HAL_Delay(10); } }STM32的ADC配置里采样时间要设长一点比如239.5个周期让采样电容充分充电。如果采样时间太短高源阻抗的信号还没充到采样电容上就转换了读数会偏低。INA333的输出阻抗很低但走线上的寄生电容和ADC输入电容加起来也有几十皮法采样时间不够的话还是会引入误差。4.3 与ESP32的物联网传感器节点方案ESP32自带WiFi和蓝牙适合做物联网传感器节点。它的ADC是12位的但线性度一般尤其是接近0V和3.3V的时候非线性比较明显。用INA333把信号偏置在1.65V避开ADC的非线性区域是个好办法。ESP32的ADC参考电压内部是1.1V但可以通过衰减器设置成测量0-3.3V范围。用Arduino框架开发ESP32时代码和Arduino UNO类似void setup() { Serial.begin(115200); analogReadResolution(12); analogSetAttenuation(ADC_11db); } void loop() { int adcValue analogRead(34); float voltage adcValue * (3.3 / 4095.0); float sensorVoltage (voltage - 1.65) / 101.0; Serial.printf(Sensor: %.3f mV\n, sensorVoltage * 1000); delay(100); }ESP32的ADC引脚34、35、36、39是输入专用引脚没有输出功能但ADC性能相对好一些。用这些引脚做模拟输入噪声会比通用GPIO小。另外ESP32的WiFi工作时会产生射频干扰可能耦合到模拟信号上。我的做法是在INA333输出和ESP32 ADC之间加一个RC低通滤波器截止频率设在100Hz左右把WiFi的射频干扰滤掉。注意ESP32的ADC在WiFi开启时噪声会明显增大如果对精度要求高可以在采样时暂时关闭WiFi或者用外部ADC芯片。我实测过WiFi开启时ADC噪声大概增加3-5个LSB换算到输入端是3.3V / 4095 × 5 / 101 ≈ 40μV对于毫伏级信号来说还能接受但对于微伏级信号就需要注意了。5. 噪声排查与常见问题实录5.1 输出噪声大的排查思路INA333输出噪声大原因可能有很多我按排查顺序列一下。第一步先看电源用示波器交流耦合测V引脚上的纹波如果纹波超过几毫伏那输出噪声很可能来自电源。解决办法是加强去耦0.1μF和10μF电容都要有而且接地要短。第二步看REF引脚REF上的噪声会直接加到输出上用示波器测REF引脚的交流成分如果有噪声加电容滤波。第三步看输入端输入线如果太长会拾取环境中的工频干扰把输入线绞合起来或者用屏蔽线能明显改善。第四步看增益电阻Rg的走线如果太长寄生电感可能引起振荡尽量缩短Rg走线。还有一个容易被忽略的点INA333的REF引脚如果悬空输出会漂到电源轨附近看起来像是噪声很大其实是REF没接。我第一次用的时候就把REF忘了输出一直贴在3.3V查了半天才发现是REF悬空。5.2 常见问题速查表现象可能原因排查方法解决方案输出贴在电源轨REF悬空或偏置不对测REF引脚电压接REF分压电路输出噪声大电源去耦不足示波器测V纹波加0.1μF10μF电容增益不对Rg阻值错误或走线太长测Rg实际阻值换精密电阻缩短走线输出振荡输入滤波不足或负载电容太大示波器看输出波形加输入RC滤波减小负载电容温漂大增益电阻温漂大测不同温度下输出换低温漂电阻共模抑制差输入源阻抗不匹配测两输入端阻抗加缓冲或匹配阻抗ADC读数跳动ADC参考噪声大测ADC参考电压加参考滤波电容5.3 独家避坑技巧第一个坑增益电阻的功率。虽然INA333的增益电阻上流过的电流很小但如果Rg选得太小比如几十欧姆增益会很大这时候Rg上的功耗虽然不大但Rg的精度和温漂会变得很重要。我建议Rg不要小于100Ω对应最大增益约1001倍。超过1000倍的增益噪声和漂移都会明显变大不如用两级放大。第二个坑输入端的共模电压范围。INA333的共模输入范围不是轨到轨的在单电源3.3V供电时共模输入范围大概是0.3V到3.0V左右。如果你的传感器共模电压接近0V或3.3VINA333可能工作不正常。解决办法是给传感器加一个偏置让共模电压坐在中间。比如桥式传感器可以把桥的参考端从地抬到1.65V这样共模电压就在1.65V附近远离电源轨。第三个坑输出负载电容。INA333的输出可以驱动一定的容性负载但如果负载电容太大比如直接接长电缆可能会引起振荡。如果必须驱动长电缆在输出和电缆之间串一颗50Ω电阻做隔离能有效防止振荡。第四个坑PCB布局中的地平面分割。模拟地和数字地要分开最后在一点连接。INA333的GND引脚要接模拟地ADC的模拟地也要接模拟地数字部分的地接数字地。如果混在一起数字开关噪声会通过地平面耦合到模拟信号上输出噪声会明显增大。6. 进阶应用与扩展思路6.1 多通道传感器采集方案如果你要采集多个传感器的信号可以用多颗INA333每个通道一颗共用电源和REF。这样每个通道的增益可以独立设置适合不同传感器混合使用的场景。比如一个通道接压力传感器增益100倍另一个通道接热电偶增益200倍。多颗INA333的静态电流加起来如果每颗50μA10颗就是500μA对于电池供电的设备来说还是可以接受的。多通道布局时每颗INA333的电源去耦电容要独立不要共用一颗电容。因为共用去耦电容时一个通道的电流变化会通过电容耦合到另一个通道。每颗芯片旁边放自己的0.1μF电容10μF可以几个通道共用一颗。6.2 与24位ADC搭配做高精度采集INA333的噪声在增益100时大概是0.5μV峰峰值0.1Hz-10Hz这个噪声水平对于24位ADC来说还是偏大。如果你要做高精度采集比如电子秤或者精密压力测量INA333后面可以接一颗24位ADC比如ADS1256或者HX711。HX711内部集成了32倍增益的仪表放大器但它的噪声和失调不如INA333。用INA333做前级放大HX711或者ADS1256做后级ADC能兼顾低噪声和高分辨率。这种方案里INA333的增益可以设小一点比如10倍把信号放大到ADC的合适范围剩下的放大和滤波在数字域做。INA333增益10倍时Rg 100k / 9 ≈ 11.1kΩ取11kΩ标准值。增益小的时候INA333的带宽更宽噪声也更低。6.3 电池供电的电源管理便携设备用电池供电电源管理直接影响续航。INA333的静态电流50μA如果一直开着一颗1000mAh的锂电池能撑20000小时也就是两年多。但如果你用LDO给INA333供电LDO的静态电流可能比INA333还大。比如常见的AMS1117静态电流5mA比INA333大100倍。所以选LDO的时候一定要看静态电流参数选低静态电流的型号比如TPS7A02系列静态电流只有25nA。如果传感器不是一直需要采集可以用MOS管控制INA333的电源需要采集的时候打开采集完关掉。这样平均功耗可以降到微安级别。但要注意INA333上电后需要一定的建立时间大概是几十微秒如果采集间隔很短频繁开关可能不划算。7. 我的实操体会与几个小技巧INA333这颗芯片我用了大概两年多从最初的面包板验证到后来的PCB量产踩过的坑基本都在这篇文章里了。最后再分享几个我个人的小技巧。第一个技巧调试的时候先用双电源供电验证电路。双电源供电时REF接地输出以0V为中心摆动用示波器看波形最直观。确认电路工作正常后再改成单电源供电加REF偏置。这样能把偏置问题和放大问题分开排查省很多时间。第二个技巧增益电阻用贴片电阻的时候注意电阻的封装。0603封装的电阻功率是0.1W0805是0.125W对于INA333的增益电阻来说都够用。但0603的电阻在焊接时容易立碑如果手工焊接建议用0805好焊一些。第三个技巧如果传感器信号特别微弱比如热电偶输出的几十微伏INA333的失调电压25μV可能还是偏大。这时候可以用软件做失调校准在传感器没有信号的时候采集一组数据取平均作为失调基准后续采集的数据都减去这个基准。这样能把失调的影响降到很低但要注意温漂温度变化后需要重新校准。第四个技巧INA333的输出可以直接接STM32的ADC但STM32的ADC输入有采样电容采样瞬间会从INA333输出拉一个电流脉冲。如果INA333的输出阻抗不够低这个电流脉冲会在输出上产生电压跌落导致ADC读数偏低。解决办法是在INA333输出和ADC之间加一颗1kΩ电阻和一颗100nF电容做缓冲截止频率约1.6kHz对低频信号没影响但能吸收ADC的采样电流脉冲。这个方案后续还可以扩展比如加一个低通滤波器做抗混叠或者用模拟开关做多通道切换或者把数据通过ESP32的WiFi传到云端做远程监测。INA333作为信号链的第一级把信号调理干净了后面的ADC和数字处理才能发挥出应有的性能。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑