Banner publicitario de PCBWay

PT4121EE23F , led driver.

Hola,

He montado un diseño de un driver LED (basado en el IC PT4121E) alimentado a 48V desde una fuente IRM-60-48 a una protoboard. Cada driver maneja una rama de LED distintos. El driver que estoy utilizando para las pruebas maneja una rama de 8 LEDs UVA 395nm (G3535N1UVS8U06 395NM), que se ubican en una segunda PCB. El objetivo del driver es recibir una señal PWM desde un Arduino, en mi caso a 500Hz, el cual hace que pueda regular los LEDs del 0 al 100%. El circuito ajusta la corriente de la rama a unos 666mA mediante la resistencia de 0.3 ohm. Tenéis adjuntos los esquemas tanto del driver como de la rama LED.

Estoy experimentando problemas a la hora de realizar el control. He conseguido que durante un breve tiempo los LEDs se puedan regular correctamente pero al tiempo falla y empiezan a parpadear. He podido ver en una prueba que cambiando el MOSFET (estoy usando un SI2308A, SOT-23) el problema se solucionaba momentáneamente, por lo que asumo que acaba fallando. También he visto que el IC driver se calienta muchísimo alcanzando casi los 100ºC, lo cual no es buena señal.

Os agradecería cualquier posible idea o solución

Aqui el codigo Arduino:

Código:
const int pwmPin = 4;           // Pin GPIO del ESP32-S3 conectado a UVA2 (Pin DIM)
const int pwmFreq = 500;       // Frecuencia PWM de 2 kHz
const int pwmResolution = 8;    // Resolución de 8 bits (valores de 0 a 255)
const int pwmChannel = 0;       // Canal PWM virtual


void setup() {
  // Inicializamos el puerto serie a 115200 baudios
  Serial.begin(115200);
 
  // Damos tiempo a que se abra el monitor serie
  delay(1000);
  Serial.println("\n--- TEST MANUAL DRIVER PT4121E ---");
  Serial.println("Escribe un porcentaje (0 a 100) y presiona Enter:");


  // 1. Configuramos el canal PWM
  ledcSetup(pwmChannel, pwmFreq, pwmResolution);
 
  // 2. Asociamos el canal al pin
  ledcAttachPin(pwmPin, pwmChannel);


  // Apagamos los LEDs por seguridad al iniciar
  setDimming(0);
}


void loop() {
  // Comprobamos si has escrito algo en el Monitor Serie
  if (Serial.available() > 0) {
   
    // Leemos el número que has escrito
    float porcentajeDeseado = Serial.parseFloat();
   
    // Limpiamos el "Enter" (\n o \r) que se queda en el buffer
    while(Serial.available() > 0) {
      Serial.read();
    }


    // Mostramos confirmación en pantalla
    Serial.print("Ajustando brillo al: ");
    Serial.print(porcentajeDeseado);
    Serial.println("%");


    // Aplicamos el nuevo brillo
    setDimming(porcentajeDeseado);
  }
}


// =================================================================
// Función auxiliar para controlar la rama LED por porcentaje
// =================================================================
void setDimming(float percentage) {
  // Limitar los valores para no volver loco al PWM
  if (percentage < 0.0) percentage = 0.0;
  if (percentage > 100.0) percentage = 100.0;


  // Mapear el porcentaje (0-100) al ciclo de trabajo (0-255)
  int dutyCycle = (int)((percentage / 100.0) * 255.0);


  // Mandar la señal al driver
  ledcWrite(pwmChannel, dutyCycle);
}
 

Adjuntos

  • 1772816353962.png
    1772816353962.png
    11.8 KB · Visitas: 10
  • 1772816380730.png
    1772816380730.png
    11.7 KB · Visitas: 10
No caben dudas de que algo está mal diseñado, o está funcionando fuera de rango, deberias medir con el osciloscopio si la señal a la compuerta del mosfet cumple con los valores para que el mosfet pase de saturación al corte, y no quede en un valor intermedio en donde se dispare la potencia disipada.

Viendo un poco mas en detalle lo que estas usando, el chip dice que su salida es de 0 a 5V y el mosfet en cuestión dice una vgs de 10V para 3A, ojo que con un pwm de 5Vp, puede no saturar el mosfet.
 
Última edición:
No caben dudas de que algo está mal diseñado, o está funcionando fuera de rango, deberias medir con el osciloscopio si la señal a la compuerta del mosfet cumple con los valores para que el mosfet pase de saturación al corte, y no quede en un valor intermedio en donde se dispare la potencia disipada.

Viendo un poco mas en detalle lo que estas usando, el chip dice que su salida es de 0 a 5V y el mosfet en cuestión dice una vgs de 10V para 3A, ojo que con un pwm de 5Vp, puede no saturar el mosfet.
No caben dudas de que algo está mal diseñado, o está funcionando fuera de rango, deberias medir con el osciloscopio si la señal a la compuerta del mosfet cumple con los valores para que el mosfet pase de saturación al corte, y no quede en un valor intermedio en donde se dispare la potencia disipada.

Viendo un poco mas en detalle lo que estas usando, el chip dice que su salida es de 0 a 5V y el mosfet en cuestión dice una vgs de 10V para 3A, ojo que con un pwm de 5Vp, puede no saturar el mosfet.
¡Hola! Muchas gracias por echarle un ojo en detalle al diseño y por tus apuntes.

Efectivamente, como comentas, el pin del driver saca una señal de nivel lógico de 5V. Nos preocupaba el tema de la saturación que mencionas, pero revisando a fondo el datasheet del SI2308A, aunque especifica los 10V para 3A, a un Vgs de 4.5V / 5V el MOSFET satura perfectamente para manejar hasta 1.9A. Como nuestra rama solo demanda 700mA máximo, la señal de 5V es suficiente para sacarlo de la zona lineal y llevarlo al corte/saturación sin problemas por conducción.

Tras hacer varias pruebas y mediciones, hemos dado con los verdaderos culpables:
  1. El calentamiento: No venía por falta de saturación, sino por las pérdidas de conmutación. El chip trabaja a una frecuencia de switcheo altísima (por encima de los 300 kHz). Conmutar a esa velocidad genera un calor inevitable que el minúsculo encapsulado SOT-23 no es capaz de disipar físicamente. Definitivamente, no es el encapsulado correcto para esta aplicación.
  2. La estabilidad: Hemos añadido un condensador a la salida (entre LED+ y LED-) para absorber los picos de tensión inductivos y actuar de filtro. La estabilidad del control PWM ha mejorado radicalmente y ya no tenemos errores de funcionamiento ni parpadeos.
Vamos a iterar el diseño de la etapa de potencia. Buscaremos un MOSFET mucho mejor adaptado a la aplicación (con encapsulado más grande tipo DPAK o TO-220 para disipar bien, de 100V y con una carga de puerta baja) y cambiaremos las inductancias por unas de mayor valor. Con esto conseguiremos reducir la frecuencia de switcheo, quitándole carga y estrés térmico a todo el circuito.

¡Gracias de nuevo por la pista para seguir tirando del hilo!
Coincido con Sergio; también te faltó mostrar como estás entrando al driver con el Arduino.
¡Hola! Tienes toda la razón. Pido disculpas, soy bastante novato en esto de publicar dudas en foros y se me pasó por completo detallar esa parte en el esquema inicial.

Para aclararlo: la conexión es totalmente directa. Estoy enviando la señal PWM conectando un pin GPIO del microcontrolador directamente al pin DIM del driver PT4121E, sin ningún componente intermedio.

Quiero agradecerte muchísimo tu respuesta y que te hayas tomado el tiempo de revisar el esquema. Como acabo de comentar arriba, gracias a vuestras pistas ya hemos localizado los problemas de temperatura y ruido, y estamos ajustando los componentes (MOSFET y bobinas) para dejar la placa lista. ¡Mil gracias por la ayuda!
 
Atrás
Arriba