ina282是怎样进行电流检测的


INA226 电流检测芯片深度解析:能否胜任微安级电流测量?
引言:INA226在电源监测中的地位
在现代电子设计中,精确的电流、电压和功率测量是至关重要的。无论是电池供电的低功耗设备,还是数据中心的高功率服务器,对电源管理的精细控制都离不开高性能的监测芯片。德州仪器(Texas Instruments, TI)推出的INA226就是这样一款备受青睐的电流分流和功率监测器。它以其高精度、宽电压范围和便捷的I2C接口,在众多应用中脱颖而出。INA226能够监测0V至36V的总线电压,并报告电流、电压和功率数据。其内部集成了16位模数转换器(ADC),具有可编程的校准值、转换时间和平均选项,使其能够直接以安培和瓦特为单位读取数据。然而,对于某些特定应用,例如物联网(IoT)设备、可穿戴设备或传感器节点,电流可能处于微安(uA)甚至更低的水平。这便引出了一个核心问题:INA226能否有效且精确地测量如此微小的电流?
INA226 的基本工作原理与核心特性
要理解INA226在微安测量中的能力,首先需要对其基本工作原理和关键特性有深入的了解。INA226采用分流电阻器(Shunt Resistor)进行电流检测。其工作原理是通过测量流经一个已知阻值的精密分流电阻器上的电压降(即分流电压),然后根据欧姆定律(I=V/R)计算出流过的电流。
1. 分流电阻器与欧姆定律:INA226通过两个输入引脚IN+和IN-连接到分流电阻器的两端。当电流流过这个电阻时,会在电阻上产生一个电压降。INA226的内部ADC负责精确测量这个微小的差分电压。分流电阻器的选择至关重要。一个理想的分流电阻器应具有极低的温度系数,以确保其阻值在不同温度下保持稳定,从而保证测量精度。
2. 16位ADC与测量分辨率:INA226的核心是其内置的16位ADC。这意味着它可以将测量的模拟电压信号转换为16位的数字值。ADC的位数决定了其理论上的分辨率。对于分流电压,INA226的满量程范围通常为$pm 81.92 ext{mV}。一个16位的ADC可以提供2^{16} = 65536个不同的测量步长。因此,理论上,INA226的分流电压分辨率可以达到81.92 ext{mV} / 65536 approx 1.25 mu V$。这个极高的电压分辨率是INA226在测量小电流方面潜力的基础。电流的分辨率则由分流电阻和ADC分辨率共同决定。
3. 可编程校准值:INA226允许用户通过I2C接口设置一个校准值(CALIBRATION_VALUE)。这个校准值用于将测量的分流电压转换为实际的电流值,并在内部计算功率。通过精确设置校准值,可以将INA226的测量范围和分辨率与所选的分流电阻器相匹配,从而优化测量精度。
4. 可配置的转换时间与平均选项:为了提高测量精度并降低噪声,INA226提供了可配置的ADC转换时间和平均选项。转换时间越长,ADC有更多的时间进行采样和积分,从而提高测量的准确性。平均选项允许对多个测量结果进行平均,进一步减少随机噪声的影响。这些功能对于在低电流环境下获得稳定可靠的读数非常重要。例如,可以设置INA226对每个测量进行1到1024次的平均。
5. 宽共模电压范围:INA226支持0V至36V的宽共模电压范围,这意味着它可以用于高侧或低侧电流感应,而无需额外的电平转换电路。这大大简化了电路设计,并提高了其在不同应用中的灵活性。
6. I2C接口:INA226通过标准的I2C(或SMBus兼容)接口与微控制器进行通信。这使得数据的读取和配置变得非常简单,无需复杂的模拟前端设计。
7. 增益误差与失调电压:INA226具有出色的精度规格,例如最大增益误差为0.1%,最大失调电压为10muV。这些参数对于小电流测量尤为关键。失调电压是当实际电流为零时,芯片仍然可能报告的微小电压值,它直接影响测量的最低限度。增益误差则影响整个测量范围的线性度。
微安电流测量的挑战与INA226的适用性
测量微安级别的电流面临着诸多挑战,主要是由于信号本身极其微弱,容易受到噪声、芯片内部误差以及外部干扰的影响。
1. 噪声问题:微安级电流产生的分流电压通常只有微伏(uV)甚至纳伏(nV)级别。在如此低的信号电平下,任何微小的噪声都可能对测量结果造成显著干扰。噪声来源包括电源噪声、环境电磁干扰、热噪声以及芯片内部的噪声。INA226通过其高分辨率ADC和可配置的平均功能,在一定程度上能够缓解噪声问题。增加平均次数可以有效降低随机噪声的影响,提高信噪比。
2. 失调电压:INA226的最大失调电压为10muV。对于微安级别的电流测量,这个失调电压可能成为主要的误差来源。例如,如果分流电阻为100Omega,那么10muV的失调电压将对应10muV/100Omega=0.1muA的电流误差。虽然0.1muA看起来很小,但对于需要测量几微安甚至几十微安的应用来说,这可能是一个相当大的相对误差。要改善这一点,可以考虑在校准阶段对失调电压进行补偿,或者选择失调电压更低的测量方案。
3. 增益误差:0.1%的增益误差意味着在整个测量范围内,测量的结果与真实值之间会存在0.1%的偏差。对于小电流,这个误差的绝对值虽然较小,但仍然需要纳入精度评估。
4. 分流电阻的选择:分流电阻的选择是测量微安电流的关键。为了在低电流下产生足够大的分流电压,以便INA226的ADC能够有效测量,通常需要选择较大的分流电阻。
高阻值分流电阻的优势:
更高的分流电压: 根据欧姆定律,V=ItimesR,在电流I相同的情况下,分流电阻R越大,产生的电压降V就越大。更大的电压降使得INA226的16位ADC能够更有效地进行量化,从而提高测量的分辨率和精度。例如,测量10muA电流,如果使用0.1Omega的分流电阻,产生的电压降仅为1muV,这远低于INA226的失调电压,几乎无法准确测量。而如果使用1000Omega(1kΩ)的分流电阻,则会产生$10 mu A imes 1000 Omega = 10 ext{mV}$的电压降,这个电压降在INA226的测量范围内,并且远大于其失调电压,因此能够被精确测量。
改善信噪比: 较大的信号电压相对于固定的噪声水平,可以提高测量的信噪比,使测量结果更加稳定。
高阻值分流电阻的挑战:
功耗: 虽然微安电流本身功耗很低,但分流电阻上的功耗为P=I2timesR。当电流较大时,高阻值电阻会导致显著的功耗,产生热量,从而影响电阻值本身,甚至可能烧毁电阻。因此,高阻值分流电阻通常只适用于低电流应用。
压降: 分流电阻上的电压降会降低负载的有效供电电压。在对电压敏感的电路中,需要仔细权衡分流电阻的阻值,以避免过大的压降影响电路正常工作。例如,如果电路工作电压为3V,一个1000Omega的电阻在$10 ext{mA}$电流下会产生$10 ext{V}$的压降,这显然是不可接受的。但在微安级别,例如$10 mu A$电流下,1000Omega电阻只产生$10 ext{mV}$的压降,这通常是可以接受的。
寄生参数: 高阻值电阻的寄生电容和电感可能会在高频应用中引入误差,但在直流或低频微安测量中通常不是主要问题。
** Kelvin连接:** 为了最大程度地减少引线电阻对测量的影响,强烈建议使用四线开尔文(Kelvin)连接方式来连接分流电阻器和INA226的IN+、IN-引脚。这种连接方式确保INA226测量的是分流电阻器两端真实的电压降,而不是包括引线电阻在内的总压降。这对于测量微小的分流电压尤为重要。
5. 最小可测量电流:INA226的最小可测量电流实际上取决于所选的分流电阻器以及希望达到的精度。一个经验法则是,分流电压应远大于INA226的失调电压(10muV)。如果目标是测量1muA电流,并且希望精度较高,那么分流电阻应该足够大,使得在1muA电流下产生的分流电压显著高于10muV。例如,选择一个100Omega的分流电阻,那么1muA的电流将产生100muV的电压降,这比10muV的失调电压大10倍,是可测量的。如果需要更高的分辨率,比如达到0.1微安,那么就需要10muV/0.1muA=100Omega的电阻,而实际测量时,考虑到失调电压,可能需要更大的电阻值,例如1kOmega或10kOmega才能确保精度。
6. 校准与软件处理:尽管INA226本身具有高精度,但在微安级别测量时,通过软件进行额外的校准和数据处理可以显著提高最终的测量准确性。这包括:
零点校准: 在没有电流通过时测量INA226的读数,并将其作为零点漂移进行补偿。
多点校准: 在已知多个电流点进行测量,并建立一个校准曲线,以校正增益误差和非线性。
数字滤波: 在微控制器端对INA226读取到的数据进行数字滤波(如移动平均、卡尔曼滤波等),以进一步平滑数据并抑制噪声。
实例分析:如何配置INA226以测量微安电流
为了更具体地说明INA226如何测量微安电流,我们来看一个实际的配置案例。
场景设定:假设我们需要测量一个低功耗设备在待机模式下5muA到500muA范围内的电流。设备供电电压为3.3V。
1. 选择分流电阻器:
目标: 在最小电流5muA时产生足够大的分流电压,并在最大电流500muA时不超过INA226的满量程电压(81.92textmV)。
计算:
为了确保5muA能被有效测量,假设我们希望分流电压至少是INA226失调电压的10倍,即10times10muV=100muV。
那么分流电阻R_shunt=V_min_desired/I_min=100muV/5muA=20Omega。
现在检查在R_shunt=20Omega时,最大电流500muA产生的电压降:V_max=I_maxtimesR_shunt=500muAtimes20Omega=10textmV。
$10 ext{mV}$远小于INA226的$81.92 ext{mV}$满量程范围,因此$20 Omega$是一个可行的选择。
结论: 选择一个20Omega的精密分流电阻器。
2. 配置INA226:
校准值(CALIBRATION_VALUE): INA226的数据手册提供了计算校准值的公式:CALIBRATION_VALUE=0.00512/(CURRENT_LSBtimesR_SHUNT)其中,CURRENT_LSB是电流的最小有效位(Least Significant Bit),也就是电流分辨率。我们需要根据期望的电流分辨率来设置这个值。 为了达到微安级分辨率,我们希望CURRENT_LSB尽可能小。INA226的分流电压LSB是81.92textmV/65536=1.25muV。 那么,电流的LSB将是V_LSB/R_SHUNT=1.25muV/20Omega=0.0625muA。 这个0.0625muA就是理论上的电流分辨率。 现在,计算校准值:CALIBRATION_VALUE=0.00512/(0.0625muAtimes20Omega)注意,在实际计算中,需要将CURRENT_LSB和$R\_{SHUNT}$的单位统一。如果$CURRENT\_LSB$是安培(A),$R\_{SHUNT}$是欧姆($Omega$),那么:CURRENT_LSB=0.0625times10−6ACALIBRATION_VALUE=0.00512/(0.0625times10−6times20)=0.00512/(1.25times10−6)=4096(这里需要查阅INA226的数据手册,确保LSB计算方式和校准值公式的准确性。有些库函数会直接根据最大期望电流和分流电阻自动计算校准值。)
转换时间(Conversion Time):为了测量微安电流,需要较长的转换时间以提高精度和抑制噪声。对于分流电压和总线电压,可以选择最长的转换时间,例如8.244textms。
平均次数(Averaging Options):选择最大的平均次数,例如1024次。这将显著减少随机噪声的影响,使微安级的读数更加稳定。
测量模式(Operating Mode):选择连续测量模式(Continuous Shunt and Bus Voltage)。
3. 硬件连接:
确保INA226的IN+和IN-引脚通过四线开尔文连接方式连接到分流电阻的两端。
为INA226提供稳定的3.3V或5V电源。
将INA226的SDA和SCL引脚连接到微控制器的I2C总线。
4. 软件实现(以Arduino为例):使用INA226的Arduino库,可以简化配置和数据读取过程。
#include <Wire.h>#include <Adafruit_INA226.h>Adafruit_INA226 ina226;void setup() {
Serial.begin(115200); while (!Serial); // 等待串口连接
Serial.println("Initializing INA226..."); // 初始化I2C通信
if (!ina226.begin()) {
Serial.println("Failed to find INA226 chip"); while (1) { delay(10); }
}
Serial.println("INA226 Found!"); // 设置分流电阻值(根据我们计算的20欧姆)
// 注意:某些INA226库可能需要你直接设置最大电流和分流电阻
// 或者直接设置电流LSB和校准值。
// 假设库提供了一个设置校准值的函数,或者根据分流电阻和最大电流自动计算
// 这里我们以一种常见的方式来设置,通过设置分流电阻和期望的最大电流
// 库会自动计算校准值。
float shunt_resistance = 20.0; // 20 Ohm
float max_expected_current_amps = 0.0005; // 500 uA = 0.0005 A
// 假设 ina226.setCalibration() 接受 shunt_resistance 和 max_expected_current
// 不同的库实现可能不同,请参考您使用的具体库的API。
// 例如,Adafruit库通常通过配置寄存器来设置。
// 为了测量微安,我们可能需要手动计算并设置校准寄存器。
// 以下是手动配置寄存器以优化微安测量的示例逻辑
// 设定分流电压转换时间 (最长)
ina226.setShuntConversionTime(INA226_CONVERSION_TIME_8244US); // 设定总线电压转换时间 (最长)
ina226.setBusConversionTime(INA226_CONVERSION_TIME_8244US); // 设定平均次数 (最大)
ina226.setAverages(INA226_AVERAGES_1024); // 设定测量模式 (分流和总线电压连续测量)
ina226.setMode(INA226_MODE_SHUNT_AND_BUS_CONTINUOUS); // 重要:设置校准寄存器以匹配分流电阻和期望的
最大电流
// Adafruit_INA226库内部会根据以下两个参数自动计算并设置校准寄存器
ina226.setRshunt(shunt_resistance); // ina226.setMaxCurrentShunt(max_expected_current_amps);
// 有些库有此函数,用于设置期望最大电流
// 对于INA226,通常需要设置校准寄存器 (Calibration Register)。
// Calibration Register = round(0.00512 / (Current_LSB * R_shunt))
// Current_LSB = Max_Expected_Current / 32768 (或者 2^15)
// 如果我们期望的Max_Expected_Current_Amps = 0.0005 A (500uA)
// Current_LSB = 0.0005 / 32768 = 1.5258789e-8 A/bit
// Calibration Register = round(0.00512 / (1.5258789e-8 * 20.0))
// Calibration Register = round(0.00512 / 0.00000030517578) = 16777 (近似值)
// 实际使用库函数通常会帮你完成这些,例如:
// ina226.setCalibration(shunt_resistance, max_expected_current_amps);
// 如果库没有提供直接设置校准值的功能,可能需要手动计算校准值并通过寄存器写入。
// 请务必查阅所用INA226库的文档。
// 这里我们假设 ina226.setRshunt(shunt_resistance); 会自动处理校准。
// 对于Adafruit库,通常在begin()之后,你需要调用 setCalibration(R_SHUNT, MAX_CURRENT_AMP)
// ina226.setCalibration(shunt_resistance, max_expected_current_amps); // 假设有这样的函数}void loop() { // 读取电流
float current_mA = ina226.readCurrent(); // 默认可能返回毫安
float current_uA = current_mA * 1000.0; // 转换为微安
// 读取总线电压
float bus_voltage = ina226.readBusVoltage(); // 读取分流电压
float shunt_voltage_mV = ina226.readShuntVoltage(); // 默认可能返回毫伏
// 读取功率
float power_mW = ina226.readPower(); // 默认可能返回毫瓦
Serial.print("Bus Voltage: "); Serial.print(bus_voltage, 3); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shunt_voltage_mV, 3); Serial.println(" mV");
Serial.print("Current: "); Serial.print(current_uA, 3); Serial.println(" uA");
Serial.print("Power: "); Serial.print(power_mW, 3); Serial.println(" mW");
Serial.println("---");
delay(1000); // 每秒读取一次}
注意: 上述Arduino代码中的INA226库函数(如setCalibration
、setRshunt
等)仅为示例,具体的库函数名称和参数可能因您使用的INA226库而异。务必查阅您实际使用的库的官方文档,以确保正确配置。Adafruit INA226库是一个常用的选择,它提供了方便的API来设置这些参数。
INA226在微安测量的局限性与替代方案
尽管INA226可以通过精心选择分流电阻和配置参数来测量微安电流,但它并非在所有微安级应用中的最佳选择,特别是在对精度要求极高或电流更低的场合。
1. 固有误差的累积:INA226的10muV失调电压是一个固有的限制。当分流电压接近或低于此值时,相对误差会急剧增大。这意味着,INA226在测量低于10muA甚至1muA的电流时,其精度将受到严重挑战,可能会导致较大的相对误差。虽然可以通过软件补偿失调电压,但零点漂移(随温度和时间变化)仍然是一个问题。
2. 功耗与压降的权衡:为了提高微安测量的分辨率,需要使用较大的分流电阻。然而,在某些低功耗应用中,即使是微小的压降也可能影响被测电路的功能。同时,如果被测电流在微安到毫安甚至安培之间有很大的动态范围变化,那么一个固定的分流电阻可能无法兼顾高精度和低功耗压降。例如,一个为微安设计的1000Omega电阻在测量$100 ext{mA}时会产生100 ext{V}$的压降,这显然是不可行的。
3. 替代方案:对于对极低电流(例如纳安或皮安)或极高精度微安测量有严格要求的应用,可能需要考虑其他解决方案:
更专业的低电流测量IC:
INA236/INA238: 德州仪器推出了比INA226更新的电流监测芯片,如INA236和INA238。这些芯片通常具有更低的失调电压、更高的ADC分辨率或更宽的动态范围,从而在低电流测量方面表现更好。例如,INA236在某些方面优于INA226,可能提供更低的噪声和更好的低电流性能。
高精度电流感应放大器配合高分辨率ADC: 这种方案将电流感应放大器(如TI的INA系列中的低偏置电流放大器)与外部高分辨率ADC(如24位ADC)结合使用。电流感应放大器可以将分流电阻上的微小电压放大到ADC的理想输入范围,从而充分利用ADC的高分辨率。这种方法提供了最大的灵活性和最高的性能,但电路设计和布线会更复杂。
对数放大器: 对于电流范围跨越多个数量级(如从纳安到毫安)的应用,可以考虑使用对数放大器。对数放大器可以将宽范围的输入电流转换为窄范围的输出电压,但其精度通常不如线性放大器,并且主要用于监测电流变化趋势而非绝对精确测量。
电流表或皮安计:对于实验室级别的精确微安或纳安测量,专业的电流表(数字万用表的高精度电流档位)或皮安计是更合适的工具。这些设备通常采用高阻抗输入或高精度跨阻放大器(Transimpedance Amplifier, TIA)设计,能够有效测量极低电流而不会对被测电路产生显著影响。
采用不同分流电阻切换:如果应用场景的电流范围非常广,可以在设计中集成多个不同阻值的精密分流电阻,并通过继电器或模拟开关在不同的电流范围下切换使用不同的分流电阻。这样可以在大电流时使用小阻值电阻以降低功耗和压降,在小电流时使用大阻值电阻以提高测量精度和分辨率。然而,这种方案会增加硬件复杂性和成本。
中断或间歇性测量:对于极低功耗设备,如果仅在特定时间需要测量电流,可以采用间歇性测量的方式。在非测量期间,INA226可以进入低功耗关断模式,进一步降低整体功耗。
结论:INA226在微安测量中的能力与应用展望
INA226作为一款优秀的电流分流和功率监测芯片,凭借其16位ADC、可编程配置以及易用的I2C接口,是可以在一定程度上测量微安(uA)级别电流的。通过选择一个合适的高阻值精密分流电阻器,并利用INA226内部的长时间转换和多次平均功能,可以显著提高微安电流测量的分辨率和稳定性。
然而,需要明确的是,INA226的固有10muV失调电压是其测量极限的决定因素。对于低于几十微安的电流,失调电压可能成为主要的误差来源,导致相对误差增大。因此,在对极低电流(如1muA以下)或极端精度有严格要求的应用中,INA226可能不是最佳选择,而更专业的低偏置电流放大器配合高分辨率ADC,或更新一代的低功耗电流监测芯片(如INA236/INA238),甚至专业的实验室级测量设备将是更好的选择。
在实际应用中,始终建议进行充分的测试和校准,以验证INA226在特定微安电流范围内的实际测量精度。理解其工作原理和限制,并根据具体应用需求进行权衡,是充分发挥INA226潜力,并获得可靠测量结果的关键。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。