3 votos

Problema de conmutación del MOSFET del canal P

Estaba intentando construir una matriz de LEDs 16x9 con una MCU con una cantidad limitada de pines. Los ánodos de los LEDs son impulsados por MOSFETs de canal P cuyas puertas son impulsadas por un registro de cambio de 8 bits 74HC595. los cátodos de los LEDs son hundidos por el TLC5940 LED PWM driver IC. El circuito alrededor de los MOSFETs tiene el siguiente aspecto: enter image description here

La Fuente está conectada a 5 V y la Puerta se tira hasta 5 V a través de la resistencia de 1 kΩ. El drenaje se conecta a los ánodos de 16 LEDs en paralelo y la puerta al 74HC595. Ahora mi observación en un analizador lógico (así como en un osciloscopio):

enter image description here

El canal rojo es sólo la alimentación constante de 5 V en la fuente. El canal marrón es la señal de conmutación procedente del 74HC595 y el canal negro la tensión en el drenaje. ¿No se supone que el MOSFET se apaga inmediatamente después de que la puerta vuelva a subir? El retardo de apagado se describe como unos 80 ns que se pasan claramente en la salida del analizador lógico. ¿Es este el comportamiento esperado o estoy haciendo algo mal? Dado que el TLC5940 sólo puede hundir la corriente en los cátodos de los LEDs no pude evitar la conmutación del lado alto, pero tenía la impresión de que este circuito debería funcionar...

EDITAR:

Después de tener por fin algo de tiempo, he recreado una versión más sencilla del circuito y lo he probado en una placa de prototipos con un Arduino para aislar el problema. Este es mi esquema, las redes no conectadas se conectan a los pines de control del Arduino:

enter image description here

Como MOSFETs de canal p he probado ambos, el FQP27P06 y el IRF9540N que tienen especificaciones similares. Mis lecturas fueron en ambos casos casi las mismas: enter image description here

Vemos que el MOSFET sólo debe conducir durante 0,27 ms según la lectura de la puerta, pero permanece durante otros 0,86 ms, lo que realmente perjudica a mi aplicación cuando las 9 filas de leds están conectadas al final. Esto causó problemas, porque una columna con todos los 16 LEDs encendidos estaba consumiendo 320mA. Con este comportamiento en todos los MOSFETs y todos los LEDs activados en mi matriz, 3-4 MOSFETs estaban conduciendo al mismo tiempo lo que al menos triplicaba el consumo de corriente y como mi placa no estaba especificada para esto el voltaje se frenaba y la MCU terminaba deteniéndose. Además, mi paquete del TLC5940 no estaba dimensionado para la cantidad de disipación de calor y ocasionalmente entraba en el modo de error de temperatura. ¿Alguien tiene una idea de por qué puede ocurrir este problema? ¡Toda respuesta es muy apreciada!

2voto

hacktastical Puntos 560

Un par de reflexiones.

  • Intenta utilizar un raíl más bajo para el LED, como 3,8V o así (justo por encima de tu Vf máxima si es posible).
  • Utiliza un N-FET o un transistor NPN en cada columna para tirar de los ánodos hacia abajo cuando la columna esté "apagada".

El uso de un voltaje de LED más bajo en su propio carril reducirá la disipación de energía en el controlador de fuente de corriente TLC. Y como, por naturaleza, las corrientes transitorias de los LEDs son altas, no está de más aislarlos en su propia alimentación. Y... menos carga para sangrar cuando llegue el momento de borrar la fila.

Ahora, sobre el problema que estás viendo.

tl; dr: sus LEDs son fantasma . Podrías conseguir un exorcista, o... necesitas bajar los ánodos durante el tiempo muerto.

Aquí hay un enlace relevante sobre este mismo tema: Efecto fantasma vertical en un panel matricial de 64x32 1/16 LEDs RGB

¿Por qué ocurre esto?

Cuando el FET de lado alto de la columna está apagado, la corriente del LED llega casi a cero. Eso está bien, pero todavía hay carga sobrante en los ánodos del LED, las trazas y el drenaje del P-FET. Sí, esos LEDs se convierten en condensadores .

Lo que sucede cuando el FET se apaga es entonces:

  • Los LEDs conducen hasta que alcanzan su tensión de avance, Vf
  • La corriente de los LEDs decae rápidamente hasta la fuga por debajo de Vf, que está en el rango de nA

Por lo tanto, cualquier carga restante se desvanece a través de los LEDs con polarización sub-Vf, ya que no tienen otro lugar a donde ir. Esto significa que esos LEDs están todavía muy cerca de ser "en", incluso si sólo un poco, durante este tiempo de decadencia umbral sub-Vf.

¿Y sabes qué? Si el voltaje del cátodo se eleva al activar otra columna, esto se acopla a la columna 'off' a través de su capacitancia sub-Vf del LED. Y en el proceso, empuja el voltaje del ánodo fuera de la columna de nuevo por encima de Vf , encendiendo los LEDs de la columna "off".

Eso es el ghosting, en una cáscara (de nuez).

¿Cómo solucionarlo?

Añade un N-FET a cada columna para que el voltaje del ánodo sea bajo, con fuerza, cuando esa columna esté apagada. El pulldown del lado N descargará ese voltaje sobrante mucho más rápido de lo que puede hacerlo una resistencia de pulldown. Esto no sólo arregla el ghosting, sino que permite acortar considerablemente el tiempo de blanking.

El N-FET puede ser uno muy barato como un 2N7002, menos de 2 céntimos de volumen. Un transistor NPN también puede funcionar (alrededor de 1 céntimo para el 2N3904), o incluso un buffer inversor de drenaje abierto.

1voto

kolstad Puntos 6

Observo que el tiempo de baja de la puerta de cada mosfet es de 0,27ms. Bueno, 0.27ms x 9 = 2.45ms pero tu tiempo de ciclo es de 4.5ms. ¿Estás haciendo 2ms de procesamiento entre cada ciclo alrededor de las cuerdas cuando la pantalla no está siendo manejada?

Una forma habitual de manejar una pantalla LED es bajo control de interrupción. Se tiene una interrupción controlada por un temporizador y cada vez que se ejecuta la sub-rutina de interrupción se apaga la cadena actualmente encendida y se enciende la siguiente. Entonces no hay tiempo muerto durante otros procesos.

Podrías hacer que la pantalla sea controlada por interrupción y si el problema es causado por el tiempo de apagado del FET podrías controlar la pantalla a una frecuencia más baja (no deberías ver ningún parpadeo a 80Hz). Entonces puedes añadir 0.8ms de tiempo muerto "todas las puertas altas" entre una cadena que se apaga y la siguiente que se enciende.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X