La mejor manera de calibrar ADC para el MOSFET de detección actual

7

Estoy usando el BTS6143 de infinion 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 \ $ I_ {sense} \ $ output.

El valor de ADC proporcional a la carga actual \ $ I_L \ $ se calcula por:

$$ Value_ {ADC} = \ frac {680 \ Omega * I_L} {3,3V * k_ {ILIS}} * 4095 $$

Mi problema es que \ $ k_ {ILIS} \ $ depende en gran medida de la carga actual como se muestra en la hoja de datos:

Especialmenteparacorrientesmuypequeñasbajo1A.

Mi"solución" al problema fue calibrar el dispositivo con 5A, lo que medí con bastante precisión con un multímetro casual. 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

\ $ P_1 (0 | 0), P2 (5 | ADC (5A)) \ $

y puede calcular una pendiente para una línea recta: $$ f (x) = \ frac {ADC (5A)} {5A} * x $$

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

Así que introduje otro punto de calibración en 1A, lo que me llevó a un error del 3% en 1A. Utilicé este punto solo para decirle al dispositivo qué es 1A. No modificar mi línea recta , que todavía calculo a partir del punto 5A.

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 casi la mitad del error en 2A.

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

    
pregunta JavaForStarters

2 respuestas

2

Es posible que no puedas lograr lo que te propusiste. Al calibrar tratar 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 suficientemente bueno, puede calibrar casi cualquier cosa. Si es lineal o sigue una relación polinomial, es incluso más fácil de calibrar.

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

Con la calibración, debe conocer las entradas y las salidas ¡ESTO ES ESENCIAL!

Si K_ILIS fuera constante, su rutina de calibración podría ser esto
1) Coloque una corriente conocida como 1Amp (entrada), mida el voltaje en ADC (Salida)
2) Coloque una corriente conocida como 2Amps (entrada), mida el voltaje en ADC (salida)

(1Amp ADC Val) = 680Ω ∗ (1Amp) / (3V kILIS ∗ 4095)
(2Amp ADC Val) = 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 (por encima de 3A o menos).
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), y x es su I_L y 680 * 4095 / (K_ILIS * 3.3) es su valor de m. El problema con hacer esto es que todavía no vas a tener 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 tendrá bastante remanente en el rango de 0 a 3Amp.

Por lo tanto, otro truco en la bolsa es moverse 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 definirla. 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 estos necesitan rutinas de optimización para encontrar todas las constantes y, una vez más, querrá tomar tantas muestras como pueda.

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

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 detección actual se refiere a todos los dispositivos. los   La precisión del kILIS puede elevarse mediante la calibración del valor.   de kilis para cada dispositivo.

Entonces, si hicieras una calibración de temperatura, tendrías que saber la temperatura. Una vez que supieras la temperatura, podrías buscar el valor de K_ILIS, pero aún tendrías que descubrir cómo cambia la temperatura. No parece que puedas encontrar una fórmula o función emperada fácil (como exponencial o sigmod). Si tuviera que hacer esto y no tuviera otra forma de cambiar el diseño, usaría la tabla que se me dio O realizaría un experimento tras otro para caracterizar K_ILIS sobre la temperatura en un entorno de laboratorio. Luego usaría estos datos en una tabla de consulta 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 mediciones actual. Parte del problema es que las corrientes de fuga y las compensaciones llegan a ser 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 necesidades. Parece que tienes dos o tres requisitos.

  1. Calibración simple
  2. 1% de precisión de medición actual de 0A a 40A (puede insertar el número que desee para el 1% y 40A)
  3. precio bajo

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

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

    
respondido por el laptop2d
0

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, en función de los puntos que ingresa). Entonces puedes usar esa función en lugar de usar k.

    
respondido por el Haris778

Lea otras preguntas en las etiquetas