La mejor manera de calibrar ADC para MOSFET de sentido actual

Estoy usando el infinion BTS6143 como interruptor de corriente y dispositivo de medición de corriente en combinación con un controlador STM32.

El BTS6143 es un MOSFET integrado con bomba de carga interna y yo s mi norte s mi producción.

El valor ADC proporcional a la corriente de carga yo L se calcula por:

V a yo tu mi A D C = 680 Ω yo L 3 , 3 V k yo L yo S 4095

mi problema es que el k yo L yo S depende en gran medida de la corriente de carga, como se muestra en la hoja de datos:

ingrese la descripción de la imagen aquí

Especialmente para corrientes muy pequeñas por debajo de 1A.

Mi "solución" al problema fue calibrar el dispositivo con 5A que medí con bastante precisión con un multímetro fluke. Con esto, el µC ahora sabe qué son los 5A.

Con el punto de calibración 1 y el ADC comenzando en cero obtengo 2 puntos

PAG 1 ( 0 | 0 ) , PAG 2 ( 5 | A D C ( 5 A ) )

y puede calcular una pendiente para una línea recta:

F ( X ) = A D C ( 5 A ) 5 A X

Medí algunos dispositivos después de usar este método y esto me dio un error de alrededor del 5 % con corrientes de 6 a 10 A, pero en algunos dispositivos obtuve errores del 50 % con corrientes de alrededor de 1 A.

Así que introduje otro punto de calibración en 1A, lo que me redujo al 3 % de error en 1A. Usé este punto solo para decirle al dispositivo qué es 1A. Para no modificar mi recta , que todavía calculo a partir del punto 5A.

ingrese la descripción de la imagen aquí

Con el error en 1A hacia abajo, verifiqué cuál es el siguiente punto crítico que estaba en 2A (10-15 %), así que probé (ADC(1A)+ADC(3A))/2 que redujo aproximadamente a la mitad el error en 2A.

Ahora todo está por debajo del 10% de error del valor ideal para la corriente y podría vivir con eso, pero ¿hay una mejor manera o cosas para mejorar? Solo puedo tomar 2 puntos de calibración, debido a algunas restricciones y no puedo calcular una línea del valor ADC en 1A y 5A, porque el punto en 1A arruina la línea para corrientes más grandes.

La Figura 6B en la hoja de datos muestra la relación de detección actual, y realmente parece un dispositivo que está saliendo de la saturación y luego entrando en subvt con una relación IV exponencial (solo mirando la forma), por lo que su ajuste lineal tendría que ser modificado con algún valor rodante, y no una relación puramente lineal.
@bdegnan ¿Qué quiere decir con valor rodante? Lo que hago en este momento es calcular los valores de ADC para 1A, 2A, 3A .... 10A con
F ( X ) = A D C ( 5 A ) 5 A X
y escribirlos en una matriz. Luego sobrescribo el valor de 1A con el valor que realmente medí en 1A. Esto reduce mi error a corrientes de alrededor de 1A. Mi siguiente paso fue tomar mi valor de ADC para 3A y 1A, y tomar la media y escribir esto en la matriz en el valor de 2A. Eso básicamente redujo a la mitad la desviación en 2A.
Entonces, tienes estos valores; sin embargo, no creo que en realidad sean tan lineales como crees, sin embargo, probablemente puedas aproximarlo. Cuando te acercas a 1A, comienzas a tener un comportamiento diferente, que es lo que esperaría ver como un dispositivo que es largo y mueve menos corriente para que veas los otros efectos, como la invasión del agotamiento en el borde de drenaje de este "super enorme "Mosfet". Esperaría la correlación, a medida que pasa de corrientes grandes a pequeñas, lineal, aproximadamente cuadrática (x ^ 1.8) y luego exponencial. Solo trato de leer en ese gráfico.
Una nota más, esperaría una buena variación entre dispositivos en la misma ejecución de obleas, pero generalmente veo una discrepancia del 2 % entre ejecuciones, así que asegúrese de que su rutina de calibración no cuente con que los dispositivos se comporten de manera idéntica. Las primeras 10k unidades podrían funcionar, pero el próximo lote podría tener una compensación.
@bdegnan No son tan lineales, pero para corrientes más grandes, el K_ILIS es bastante estable y lineal. Mi problema fue especialmente con corrientes más bajas. Ese problema se resolvió tomando un punto en 1A. La pregunta era si esa era una buena manera de resolver esto o no.
Una buena práctica en los sistemas de medición precisos es calibrar TODOS los dispositivos y almacenar los coeficientes de calibración en algún lugar de la memoria no volátil.
@lustful-rat Esto es lo que ya hago. Cada dispositivo tomará un punto de calibración en 6A y luego un punto en 1A.

Respuestas (2)

Es posible que no puedas lograr lo que te propongas. Al calibrar, trate el sistema como una caja negra, hay entradas y salidas. Estás tratando de averiguar qué sucede dentro de la caja y modelarlo de alguna manera. El modelo puede ser fácil o puede ser difícil. Si puede encontrar un modelo lo suficientemente bueno, puede calibrar casi cualquier cosa. Si es lineal o sigue una relación polinomial, es aún más fácil de calibrar.

Ve el sistema como una caja con corriente (la corriente real que desea medir) y la caja negra como su IC/Mosfet y el voltaje que sale del IC medido por su ADC como la salida. Su modelo es la ecuación como se describe arriba.

Con la calibración hay que saber las entradas y las salidas ¡ESTO ES ESENCIAL!

Si K_ILIS fuera constante, su rutina de calibración podría ser esta
1) Introduzca una corriente conocida como 1 amperio (entrada), mida el voltaje en el ADC (salida)
2) Introduzca una corriente conocida como 2 amperios (entrada), mida el voltaje en el ADC (salida)

(Valor ADC de 1A)=680Ω∗(1Amp)/(3V∗kILIS∗4095)
(Valor ADC de 2Amp)=680Ω∗(2Amp)/(3V∗kILIS∗4095)

Y el resto es plug and chug. Obtendrá su valor para K_ILIS. Esto le dará un resultado decente para la parte de la curva que no cambia (más o menos por encima de 3A).
Si desea obtener más detalles, puede hacer un ajuste lineal de primer orden.

y = m*x + b donde y es su medida ADC (salida), yx es su I_L y 680*4095/(K_ILIS*3.3) es su valor m. El problema de hacer esto es que aún no obtendrá un buen ajuste. Solo puede modelar una línea, lo que sería el equivalente a obtener una regla y dibujar una línea a través de la curva, aún le quedará bastante residual en el rango de 0 a 3 amperios.

Entonces, otro truco en la bolsa es pasar a un orden superior como este modelo:
y= c3*x^3+c2*x^2+c1*x+c0
El problema con esto es que una línea necesita al menos dos puntos para definir eso. Ajustar una curva necesitaría muchos más datos. Hay otras funciones de ajuste, un sigmoide podría funcionar
y=c2/(c1+exp(c0*t))+b
pero estas necesitan rutinas de optimización para encontrar todas las constantes y nuevamente, querrá tomar tantas muestras como pueda .

Uno de los problemas que veo es que K_ILIS también depende de la temperatura y es la temperatura de la unión, lo que significa que si tuviera que medirlo, tendría que ocurrir en el IC. Tendrías que calibrarlo para la temperatura y saber la temperatura. Parece que la curva de temperatura de K_ILIS también varía de un dispositivo a otro.

Esta frase sugiere que K_ILIS es constante en todos los dispositivos, pero esto entra en conflicto con la información en la sección de características de diagnóstico, creo que es una mezcla de los dos:

Este rango para la relación de sentido actual se refiere a todos los dispositivos. La precisión de kILIS se puede aumentar mediante la calibración del valor de kILIS para cada dispositivo.

Entonces, si tuviera que hacer una calibración de temperatura, tendría que saber la temperatura. Una vez que supiera la temperatura, podría buscar el valor de K_ILIS, pero aún tendría que averiguar cómo cambia con la temperatura. No parece que pueda encontrar una fórmula o función empírica fácil (como una exponencial o sigmod). Si tuviera que hacer esto y no tuviera otra forma de cambiar el diseño, usaría la tabla que me dieron O ejecutaría un experimento tras otro para caracterizar el sobrecalentamiento de K_ILIS en un entorno de laboratorio. Luego, usaría estos datos en una tabla de búsqueda en el micro, pero aún tendría que saber la temperatura. ¿Puedes poner un termistor en el IC? Probablemente no. El rango actual que está tratando de medir es muy grande. En mi experiencia, es realmente difícil obtener el primer 5% del rango de medidas actual. Parte del problema es que las corrientes de fuga y las compensaciones se vuelven tan grandes como la medición de voltaje de lo que sea que esté midiendo la corriente, ya sea una señal diferencial de una resistencia de detección o por otros medios.

Creo que es hora de que revises tus requisitos. Parece que tienes dos o tres requisitos.

  1. Calibración sencilla
  2. Precisión de medición de corriente del 1% de 0A a 40A (puede insertar el número que desee para el 1% y 40A)
  3. Precio bajo

Si tienes que tener 2) y 3) no puedes tener 1). Si no necesita 3) Consideraría agregar otro método para una medición de corriente de "alta ganancia" que le permitiría concentrarse en el rango de 0 a 1A.

También creo que parte de su problema es no escribir los requisitos en primer lugar. Es una buena manera de diseñar cosas, luego tiene una discusión de sus opciones antes de que estén en una PCB.

No tengo suficiente reputación para los comentarios, pero aquí hay una sugerencia. Puede intentar manualmente o en Matlab crear su función k=f(I) con respecto a la figura 6b (MATLAB tiene algunas funciones de interpolación, sobre la base de los puntos que ingresa). Entonces puedes usar esa función en lugar de usar k.