Primero desglosemos el fenómeno:
-
El lazo de corriente en sí no tiene problemas (valor de consigna ≈ valor medido), lo que indica que el lazo cerrado con MOSFET, amplificador operacional y DAC funciona correctamente;
-
Solo el “valor reportado” del INA226 es bajo, y ocurre específicamente cuando VBUS es bajo y la corriente es alta;
-
A 18 V casi no se observan errores.
Esto apunta casi directamente a un error de medición a nivel de dispositivo causado por “voltaje de modo común demasiado bajo en los extremos de la resistencia de derivación”, y no al código o la temporización I²C.
-
Modo común demasiado bajo, el PGA interno comienza a “funcionar de forma perezosa”
El etapa de entrada del INA226 es un ADC tipo ΔΣ, con un array de capacitores conmutados de 2 MHz en el pre-amplificador. Cuanto menor es el voltaje de modo común, más evidente es el desajuste de inyección de carga del muestreo y retención interno, y el offset equivalente se amplifica. El datasheet es claro: VCM = 0 V tiene un offset típico de 50 µV, VCM ≥ 1 V reduce a un orden de magnitud de 10 µV. Con 4 V de entrada, 50 mA de corriente, si la resistencia de derivación es 50 mΩ, entonces VBUS se ve realmente reducido a 4 V – 2.5 mV ≈ 3.9975 V, el modo común sigue siendo “bajo”, pero lo más grave es que el voltaje de derivación es solo 2.5 mV, ya del mismo orden de magnitud que el voltaje de offset; cuando la corriente aumenta más, las lecturas comienzan a “venir cortas”.
-
Efecto termopar de las trazas Kelvin/pads de la resistencia de derivación
En condiciones de bajo voltaje y alta corriente, 1 µΩ de resistencia metálica adicional causará un error de 1 µV. Si el cobre de la capa superior se ha “comido” mucho, o si el punto de muestreo está demasiado lejos del pad, el Vshunt real aplicado al INA226 será menor que lo medido con el multímetro.
-
Rebote de tierra (ground bounce) en la placa
Si la tierra de potencia, la tierra digital y el GND del INA226 comparten un trazo delgado, los picos de conmutación de 50 mA pueden generar una diferencia de tierra de varios cientos de µV, que se superpone directamente a la medición diferencial.
-
Temporización/ruido I²C
Este tipo de errores generalmente son “saltos” o “parpadeo de valores”, en lugar de ser sistemáticamente bajos, por lo que su prioridad se reduce.
Lista de mejoras (ordenadas por relación coste-beneficio)
A. Mover la resistencia de derivación al “lado alto”
Permitir que el pin VBUS del INA226 se conecte directamente al positivo de la batería, de modo que el modo común ≈ 4 V, mucho mayor que la “zona de confort” de 1 V, y el offset del dispositivo se reduce inmediatamente en un orden de magnitud. La medición en lado alto requiere:
– Mover la resistencia de derivación al terminal positivo;
– La alimentación V+ del INA226 puede ser 3.3 V, porque el modo común permite hasta 36 V;
– Tenga en cuenta que las nuevas trazas deben ser Kelvin y separadas de la ruta de potencia.
B. Aumentar el voltaje de derivación
Si la corriente máxima es 1 A, cambiar los 50 mΩ por 100 mΩ, escala completa 100 mV, el LSB sigue siendo 2.5 µV, pero la relación señal/offset se duplica. La disipación es 100 mW, aceptable para una aplicación de 1 A.
C. Calibrar el “offset cero”
Realizar una muestra de “corriente cero” en el código (relé desconectado o DAC=0), almacenar el resultado en EEPROM y restarlo antes de cada prueba formal. El INA226 tiene un registro Calibration, pero solo es válido para cálculos de potencia/corriente, no para el voltaje de derivación crudo; por lo que leer directamente el Shunt Voltage Register y restar el offset es lo más directo.
D. Cirugía menor de re-diseño de placa
– Dividir tierra de potencia y tierra digital, conectar en un solo punto;
– Hacer una capa de cobre “tierra analógica” completa bajo el INA226, uniéndose a tierra de potencia solo en un punto a través de una resistencia de 0 Ω o un pin;
– Colocar dos pares de vías Kelvin en el interior de los pads de la resistencia de derivación, trazas diferenciales paralelas en capa interna, longitud <15 mm.
E. Filtrado de software
Muestrear 64 veces para promediar, luego suavizar el resultado con un filtro IIR de segundo orden, puede reducir el ruido aleatorio por debajo de 0.2 LSB, pero es ineficaz para offset sistemático, solo debe usarse junto con A/B/C.
Métodos de verificación rápida
-
Usar temporalmente una fuente de laboratorio en serie con una resistencia de 1 Ω para elevar VBUS artificialmente por encima de 8 V, ver si el error se reduce inmediatamente;
-
Inyectar directamente 1 mV, 5 mV, 10 mV a los pines diferenciales del INA226 con una fuente de milivoltios precisa (o DAC+divisor), leer el Shunt Voltage Register, trazar la curva “entrada-valor de código”, se puede ver de inmediato la zona lineal del dispositivo.
Normalmente, después de completar los tres elementos A+B+C, el error en el punto de 4 V/1 A puede suprimirse a menos de ±0.5 %FS, el resto es solo un problema de calibración de software. ¡Buena suerte con la depuración!