Caida de tension en fuente que alimenta Inversor DC-AC

Saludos compañeros,

Vengo por acá a ver si me puedan ayudar a solventar mi problema.

Estoy elaborando un inversor DC-AC en configuración puente H, utilizando transistores IGBTde 600V @6A (Numero de parte STGF6NC60HD), un Arduino Uno como generador de la señal PWM, optoacopladores (numero de parte EL817) para establecer la barrera galvánica entre la etapa de control y potencia con una entrada de tensión de 12V-28V. Este circuito es requisito de un curso en mi Universidad, por lo tanto los IGBTs y la placa de Arduino son de uso obligatorio.

Durante las pruebas, el problema que se me presenta es que la fuente de poder que alimenta los transistores (12V) cae en corto, la tensión pasa de 12V a 3,3V y el consumo de corriente se eleva a mas de 1A y curiosamente Q3 entre los demás transistores tiende a calentarse sumamente rápido.

Realice el montaje en Proteus, sin embargo el programa se me cuelga por fallo, así que supongo que el fallo que estoy viendo en el laboratorio podría ser el mismo que haga que se me cuelgue Proteus, sin embargo a nivel de software, este en los mensajes de error siempre me dice que no logra identificar el punto de fallo. Cuando digo que se me cuelga el programa, es que se me cierra por si solo.

La señal del PWM para los transistores debe de ser de 50Hz/20ms, por lo que he creado un código sencillo ON/OFF para el arduino que es el siguiente:

Código:
El siguiente programa tiene como objetivo convertir una tensión de CD (cualquiera) en una tension AC*/

//Asignación de los pines para las entradas o salidas

int SQ1 = 8; // Pin de control del Transistor Q1
int SQ2 = 9; // Pin de control del Transistor Q2
int SQ3 = 10; // Pin de control del Transistor Q3
int SQ4 = 11; // Pin de control del Transistor Q4
int SW = 6; // Interruptor de Encendido/Apagado
byte x; //Constante para guardar sumatoria de iteraciones del ciclo For.

//Definición de pines como entradas/salidas
void setup() {
  pinMode(SW, INPUT);
  pinMode(SQ1, OUTPUT);
  pinMode(SQ2, OUTPUT);
  pinMode(SQ3, OUTPUT);
  pinMode(SQ4, OUTPUT);
}

void loop() {

  if (digitalRead(SW) == HIGH) {

   tiempo_fuera();  //Ejecuta delay de 20ms al inicio del ciclo
    ciclo(); // Inicia un ciclo de 50 iteraciones con "FOR". La cantidad de iteraciones puede cambiar.

  } else {

apagado(); //Establece todas las salidas en 0/Apagadas

  }
}

void tiempo_fuera() {
  digitalWrite(SQ1, LOW);
  digitalWrite(SQ2, LOW);
  digitalWrite(SQ3, LOW);
 digitalWrite(SQ4, LOW);
  delay(20); 
}

void ciclo() {
  for (x=1; x<= 50; x=x+1) {

    //Secuencia # 1. Inicia ciclo de PWM y se repite x cantidad de veces seguidas menor que xx. El tiempo total de la iteracion es de 20ms equivalente a una frecuencia de 50Hz.

    digitalWrite(SQ1, HIGH); //Activacion de Q1
    digitalWrite(SQ2, HIGH); //Activacion de Q2
    digitalWrite(SQ3, LOW); //Establece a Q3 como apagada en forma forzada como metodo de seguridad.
    digitalWrite(SQ4, LOW); //Establece a Q4 como apagada en forma forzada como metodo de seguridad. 
    delay(8); //8ms en estado alto de los transistores Q1 y Q2


    //Secuencia # 2
    digitalWrite(SQ1, LOW); //Apaga Q1 para poder encender los transistores contrarios.
    digitalWrite(SQ2, LOW); //Apaga Q2 para poder encender los transistores contrarios. 
    delay(2); //Tiempo de seguridad para que los transistores Q1 y Q2 queden completamente inactivos antes de enceder Q3 y Q4 o de lo contrario CAPUT!
    digitalWrite(SQ3, HIGH); //Activación de Q3
    digitalWrite(SQ4, HIGH); //Activación de Q4
    delay (8); //8ms en estado alto de los transistores Q3 y Q4

    digitalWrite(SQ3, LOW); //Apagado del transistor Q3 antes de reiniciar el ciclo.
    digitalWrite(SQ4, LOW); //Apagado del transistor Q4 antes de reiniciar el ciclo.
    delay(2); //Tiempo de seguridad para que los transistores Q3 y Q4 queden completamente inactivos antes de encender Q1 y Q2 o de lo contrario CAPUT!
  }
}

void apagado(){
  //Estados para mantener los transistores inactivos cuando el switch esta apagado.
  
    digitalWrite(SQ1, LOW);
    digitalWrite(SQ2, LOW);
    digitalWrite(SQ3, LOW);
    digitalWrite(SQ4, LOW);
}

Este es el circuito que estoy utilizando en Proteus y es el circuito que tengo montado en laboratorio.



Señal de onda de salida del optoacoplador (CH1, superior) vs onda de salida de la resistencia de carga (CH2, inferior).



Circuito físico. Los disipadores no son los adecuados, sin embargo son los únicos que logre hallar en las tiendas de electrónica de acá de mi país.



Les agradezco por cualquier ayuda que me puedan brindar para poder solucionar el problema. Adjunto la simulación que hice en Proteus :confused:

Gracias
 

Adjuntos

  • DC-AC Inverter.zip
    27.9 KB · Visitas: 24
La fuente es pequeña o tiene regulador de corriente, podria ser cualquiera, la corriente que se nesecita es como de cinco amperios para que no se te caiga a cero. Un transformador y su puente de diodos para un voltage de 14v a 5A es mas que suficiente.
 
Zopilote,

Agradezco tu respuesta,

En efecto la fuente de alimentación suple 3A como máximo, podría probar con otra que suple 7A, sin embargo cuando estaba haciendo las pruebas en el lab al tratar de elevar la corriente (suponiendo que este era mi problema) empezó Q3 a disipar demasiado calor y esto me preocupa, pues me parece curioso que uno de los 4 transistores disipe el doble o triple de calor que los otros 3.

Buscare nuevos disipadores, posiblemente tendré que fabricarlos yo con piezas de aluminio, pero si me gustaría saber que tiene ese transistor que hace la diferencia con respecto a los otros en el tema de disipación.

Saludos
 
Puede que Q3 empiece a conducir demasiado pronto o acabe demasiado tarde cuando aún conduce su "antagonista".
Prueba a intercambiar de posición el transistor a ver si es ese el problema o es otra cosa. Si se sigue calentando es el transistor, si se calienta el " nuevo" es la posición o los optoacopladores o...
Desde luego necesitas una fuente más grande. Lo mejor una batería de coche que da 100A
Montar eso en un board me parece increíble. Monta una placa de prototipos soldada. Los board fallan muuuuucho y para corrientes elevadas más aún.
No todas las salidas pwm del arduino son iguales. Algunas van a distinta fecuencia, igual eso influye.
No se ve bien el esquema pero R13 no parece tener valor y R10 parece tener un valor diferente a sus 'gemelas'
No se ve claro de donde se alimentan los optoacopladores, por el lado del transistor, el positivo cual es. No estoy muy puesto en IGBTs pero me resulta raro que el circuito de disparo de Q1 y Q3 sea el mismo que el de Q2 y Q2 cuando las masas de los transistores no son las mismas. Me parece que disparas bien Q2,4 y mal Q1,3.
 
Última edición:
Hola de nuevo,

Scooter,

En lo que respecta a la secuencia de control los transistores funcionan en parejas (Q1 y Q2) y (Q3 y Q4), así es como esta la secuencia programada en el Arduino.



Originalmente había habilitado 4 pines de salida del arduino para controlar cada transistor por separado, pues la secuencia de programación que quería es la que aparece en el Libro de Rashid que es la que aparece en la imagen de arriba. Sin embargo al final opte por solo utilizar únicamente las secuencias 1 y 2 de esa tabla, pero de igual manera controlados por los 4 pines.

Le hice algunos cambios al circuito en general para poder mostrarlos mejor por acá. La simulación sigue dándome problemas, pues aunque la señal de salida en la carga ya parece mas a la señal senoidal que debería verse, Proteus como tal se me sigue colgando.









 

Adjuntos

  • Inversor DC-AC.zip
    67.6 KB · Visitas: 61
Atrás
Arriba