Carga electrónica (Parte 6): Firmware

junio 04, 2018 circuiteando 0 Comments

El firmware se basa en el proyecto de Scullcom Hobby Electronics, una serie de vídeos en inglés los podéis encontrar en su canal de Youtube.

Lo que voy a describir son las características de este firmware, junto con las modificaciones que le he realizado y una descripción gráfica (mediante fotos) de los menús de la pantalla LCD.

  • Características originales:
    • Modo de potencia constante.
    • Modo de resistencia constante.
    • Modo de corriente constante.
    • Modo de transición.
    • Medición de la capacidad de baterías.
    • Límite/protección en corriente, potencia y temperatura.
    • Control de ventiladores basado en rangos ( se establecen 3 o 4 rangos y a cada uno se le asigna una velocidad de ventilador).
  • Características añadidas/modificadas:
    • Se han modificado ciertas variables para calibrar las mediciones en mi carga electrónica.
    • Se ha adaptado el código para usar con PlatformIO.
    • El control de velocidad se ha cambiado para utilizar el timer 2 del microcontrolador y el cálculo de velocidad se hace proporcional a la temperatura de los mosfets.
    • Se añade soporte para un segundo sensor de temperatura.
    • Se cambia el método antirrebotes de los pulsadores.
    • El control de ganancia del ADC se hace variable, para corrientes de hasta 5A se utiliza ganancia 4 y para superiores ganancia2,  para mejorar la resolución y medición. El original solo llegaba a 5A en vez de los 15 actuales.
    • Añadida protección contra sobre voltaje: si se superan los 100V se cortan los mosfets y abren los relés.
    • Se añade aviso en pantalla sobre polaridad inversa. Si el voltaje en los terminales es inferior a 10mV no deja conectar la carga.
    • Se añade menú en pantalla para poder seleccionar el número de celdas (1 a 8) de la batería a probar, para calcular automáticamente el voltaje de corte.
    • Se cambian las posiciones de los cursores para evitar que al mover sin querer el encoder, se cambie el dígito más alto, pudiendo provocar daños a la batería o fuente en pruebas. 
    • Se compensa automáticamente la salida del DAC si el error entre la corriente fijada y la real es menor de 150mA:
      • El DAC no es tan preciso, o no tiene la suficiente resolución para toda la escala de corrientes en que la carga electrónica trabaja, produciéndose errores en los rangos más altos de corrientes (hasta unos 110 mA). Por lo que se comprueba continuamente si la corriente de salida es la especificada, y si existe un error se modifica la señal del DAC tanto positivamente como negativamente para conseguir la deseada. Si la diferencia es mayor de 150 mA, se asume que es la batería o fuente de alimentación, la que no es capaz de entregar dicha intensidad y no se realiza ningún ajuste.
    • Se añade capacidad para bloquear las teclas y el encoder, asegurando que no se van a modificar los valores por error.
    • Se invierte la lógica para los pulsos externos (trigger input) en el modo transient, ya que mi generador utiliza pulsos positivos.
    • Se añade la capacidad de controlar los relés añadidos para la protección contra polaridad invertida, aun estando los mosfets apagados, la corriente puede fluir a través de las resistencias shunt y del diodo de protección interno que tienen los mosfets. Este diodo se utiliza para protegerlo en los picos altos de tensión que se producen al desconectar rápidamente cargas inductivas. Dado que este diodo puede aguantar durante un periodo breve de tiempo, corrientes de hasta 110A, los daños que se pueden producir no son nada deseables. Por lo tanto, si no se detecta un voltaje positivo en el microcontrolador deja los relés abiertos, dejando desconectada la carga físicamente. Nota: Para alargar la vida de los relés, se evita la conexión y desconexión con amperajes elevados que originan arcos eléctricos. Para ello el firmware conecta primero los relés (sin carga en ese momento) y pasados unos milisegundos (tiempo de transición de los contactos según el datasheet), se activan los mosfets conduciendo la corriente. A la hora de cortar la corriente ocurre lo contrario, los mosfets cortan la corriente y cuando la intensidad medida es menor de 100mA, se abren los contactos de los relés.
    • Se añade la capacidad de medir la resistencia interna de las baterías.

 

Calculo de resistencia interna

Para ello se ha utilizado el método explicado en este boletín técnico de Energizer.

Medición de resistencia interna

Como se puede ver, el método consiste en medir la diferencia de voltaje entre una carga ligera, 5mA y una carga más pesada 505mA. Después se divide la diferencia entre la variación en la carga (500 mA) y se obtiene la resistencia interna. Y esto debe producirse en una tiempo especificado (unos 140 ms en total), ya que de extenderse más, otros factores en la química de la batería pueden falsear la medición.

Par más detalles consultar el boletín técnico indicado anteriormente.


Menús de la pantalla LCD

A continuación se muestran todos los menús de la pantalla LCD junto con un pequeño comentario.

Pantalla de inicio
Menú de ayuda para teclas combinadas
Indicación de calibración automática al arranque
Modo de corriente constante (CC)
Se muestra el estado (ON), la temperatura de los dos mosfest, la intensidad actual, el voltaje actual y la potencia actual en la segunda línea, y la intensidad requerida en la tercera.

Modo de potencia constante (CP)
Igual que el anterior, pero se indica la potencia deseada.

Modo de resistencia constante (CR)
Igual que el anterior, pero se indica la resistencia que se desea.

Selección de tipo de batería
Menú para selección de baterías, se elige el tipo de batería para calcular el voltaje de corte en la descarga, o se especifica uno manualmente (5).

Número de celdas
Se indica el número de celdas en serie para calcular el voltaje de corte.

Muestra lo seleccionado anteriormente
Menú de configuración personalizada
Se puede limitar la carga a una potencia inferior, a una corriente o temperatura. Útil si no se quiere dañar el equipo en pruebas. Estos valores no se guardan, al apagarse y encenderse de nuevo se mantienen los de por defecto.

Aviso de bloqueo de controles
Se muestra el aviso cuando se bloquea el teclado y rotatorio, también cuando se pulsa cualquier botón (excepto el de conexión/desconexión de la carga) estando bloqueado.

Se muestra el desbloqueo de los controles
Menú de transitorios
  • En modo 1 se alterna continuamente entre dos intensidades diferentes.
  • En modo 2 se alterna entre intensidades al pulsar el botón, solo una vez.
  • En el modo 3 se alterna entre intensidades al recibir un pulso por la entrada (trigger input).
Menú de selección de intensidades
Se elige la intensidad baja, la alta y el tiempo que transcurre entre ambas.

Pantalla de demostración del modo (TC)
Se elige 1A en baja y 2.5A en alta, con un tiempo de 1.5 segundos.

Como se ve, esta desactivada la carga (OFF), la corriente es 0.

Con carga conectada
Se conecta la carga y automáticamente se pone a conducir 1A (0,998 mA).

Transición en corriente
1.5 Segundos después, pasa a 2.5A.

Resistencia interna
Indicación de resistencia interna de la batería bajo pruebas, aparece durante unos segundos antes de iniciar la descarga.

Descargando batería
Durante la descarga de una batería. Aparte de lo indicado en los modos anteriores, se indica la intensidad de descarga, el tipo de batería seleccionada, el tiempo de descarga (horas, minutos, segundos) y capacidad de la batería hasta el momento.

Descarga terminada
Al llegar al voltaje de corte, se desconecta y se obtiene el tiempo total de descarga y la capacidad.

Protección contra polaridad inversa
Se muestra el mensaje de advertencia al conectar una batería al revés y no deja activar los relés.

El firmware se puede descargar desde el repositorio.

0 comentarios: