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:
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);
}