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: 5
  • 1772816380730.png
    1772816380730.png
    11.7 KB · Visitas: 5
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:
Atrás
Arriba