Análisis del sensor de corriente ZXCT1010

El primer componente que voy a analizar en mi nueva placa para testear LibreServo es el sensor de corriente ZXCT1010, el cual es una versión mejorada del sensor ZXCT1009. La mejora sobre todo es en la parte baja del sensor, cuando hay poca caída en Rsense, parte en la que quería estar ya que no quiero que se desperdicie tensión en Rsense. Además, aparejado al sensor de corriente está el diodo Zener MMSZ5226BS para evitar que la tensión de salida del sensor de corriente pueda superar los 3,3V y quemar el microcontrolador.

Las pruebas y aspectos contemplados son los siguientes:

  • Mínima corriente detectada, mediciones y errores
  • Linealidad del sensor
  • Velocidad del sensor ante cambios de corriente
  • Comportamiento ante un cambio de polaridad en la alimentación, cuando conectas al revés tierra y Vcc
  • Comportamiento del diodo Zener

Mínima corriente detectada, mediciones y errores

Para los primeros puntos, la mejor forma es tomar mediciones del sensor con diferentes cargas de corriente. Las mediciones se han tomado sin el diodo Zener instalado. Hay que recordar que el sensor ZXCT1010 actúa como un generador de corriente, cuanta más caída de tensión haya en Rsense, más corriente generará. Hay que tener en cuenta que el circuito consta de un Rsense de tan sólo 0,02 ohmios y un Rout de 1,1K Ohms. El valor de Rsense tan bajo es para asegurarnos que cuando el motor del servo esté a pleno rendimiento consumiendo 5A, por ejemplo, sólo se desperdicie 0,1V en Rsense.

Circuito de test básico ZXCT1010
Circuito básico ZXCT1010

En la siguiente tabla se muestran los resultados de las pruebas. Con un Rsense de tan sólo 0,02 ohmios, el sensor ZXCT1010 empieza a detectar corriente con sólo 35mA, que equivale a una caída en Rsense de 0.7mV. ¡Bastante impresionante! Aunque el error porcentual entre la medición y lo esperado es ciertamente elevado en corrientes bajas, lo cierto es que el error en mV es bastante contante y por lo tanto muy fácil de corregir en el programa.

Tabla comparativa de Smart Servos
Corriente (A) V_Out (mV) V_Out_Esperado (mV) V_Out_Error (%) V_Out_Esperado - V_Out
0,035 1,72 7,7 77,66 5,98
0,070 9,44 15,4 38,70 5,96
0,140 24,1 30,8 21,75 6,7
0,280 54,1 61,6 12,17 7,5
1,485 312 326,7 4,50 14,7
2,770 590 609,4 3,18 19,4

Linealidad del sensor

En el siguiente gráfico se muestra la linealidad del sensor, el cual no presenta problema alguno:

Linealidad ZXCT1010
Linealidad ZXCT1010

Velocidad del sensor ante cambios de corriente

En el siguiente gráfico se muestra la velocidad de respuesta del sensor, siendo de 7,9us su reacción y de unos 10us hasta que se estabiliza, lo que nos da un ancho de banda de unos 125-100KHz.

Velocidad ZXCT1010
Speed ZXCT1010

Comportamiento ante un cambio de polaridad en la alimentación

Hasta ahora las pruebas han sido bastante satisfactorias, pero nos encontramos con el primer escollo, su comportamiento ante un cambio de polaridad en la alimentación, ósea, cuando conectamos al revés la batería. Ante esta situación, el sensor ZXCT1010 se comporta como si estuviera en cortocircuito y aparece el magic smoke al instante 😓 . En esta versión de LibreServo se buscaba proteger el circuito ante un cambio de polaridad, con un transistor mosfet se logra, pero desgraciadamente no se puede poner antes del sensor de corriente ya que toda la corriente del motor pasaría por dicho mosfet obligando entonces a que dicho mosfet fuera tan potente o más que los propios drivers del motor, algo que carece de sentido.

Comportamiento del diodo Zener

Por último toca analizar el diodo Zener. Este diodo no se extrictamente necesario, pero ante un problema con el motor o el puente en H, varias decenas de Amperios podrían pasar por el sensor de corriente ZXCT1010 provocando que la caída de tensión en Rout, al estar directamente relacionado con la caída en Rsense, pudiera superar con creces los 3,3V y por lo tanto quemar el microcontrolador. Quiero evitar que un posible fallo en el motor o en el puente en H arruine el resto de componentes de LibreServo en cascada, no sería un buen diseño.

Circuito básico ZXCT1010 con protección Zener
Circuito básico ZXCT1010 con protección Zener MMSZ5226BS

Desgraciadamente el diodo Zener a pesar de ser de 3,3V, ya desde 1,6-1,7V empieza a alterar la salida de V_Out claramente haciéndolo prácticamente inservible en dichos valores. Parece ser además, que en diodos Zener con un voltage de ruptura (Vz) tan bajo es lo normal y no he encontrado diodos Zener con un comportamiento más afilado en dichos rangos.

Siguientes pasos a seguir

Tras mucho meditarlo, he decidido cambiar el sensor de corriente ZXCT1010 por el Allegro ACS711KEXLT-15AB-T, el cual es un sensor de corriente de efecto Hall, lo cual significa que no necesita ninguna resistencia externa ni diodo Zener alguno. Como añadido mide la corriente en ambos sentidos. Además, dicho sensor, al tener una alimentación separada, sí estaría protegido contra un cambio de polaridad en la alimentación por el diodo Mosfet de protección de LibreServo.

Primer elemento que analizo y primer componente que tengo que cambiar y rediseñar. No es el inicio que esperaba, pero para eso he diseñado esta placa, para poder sacar todos los fallos de diseño ahora que se pueden corregir y no en el futuro.

Suscripción

Recibir un email cuando se publique un nuevo artículo.

Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

1 + 2 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.