Obtener un voltaje de salida más bajo de lo esperado en un inversor de 5 niveles

Estoy haciendo un inversor de 5 niveles usando un Arduino Mega. Estoy usando un MOSFET IRFZ44N para cambiar y también un MCT2E como controlador MOSFET.

El problema al que me enfrento es que obtengo un voltaje de salida más bajo de lo esperado: la salida real debería ser de 24 V, pero obtengo 12 - 13 V como salida.

¿Alguien puede ayudarme con este problema?

Este es el esquema:

ingrese la descripción de la imagen aquí

Este es el código que estoy usando:

float f = 50;
float t = (1 / f) * 1000000;
float a1 = 10;
float a2 = 40;
float a1p1 = (a1 * t) / 360;
float a1p2 = (a2 * t) / 360;
float d = 5;

int pin1 = 1;
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int pin8 = 8;

void setup() {
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
  pinMode(pin6, OUTPUT);
  pinMode(pin7, OUTPUT);
  pinMode(pin8, OUTPUT);
}

void loop() {
  digitalWrite(pin1, HIGH);
  digitalWrite(pin2, HIGH);
  digitalWrite(pin5, HIGH);
  digitalWrite(pin6, HIGH);
  delayMicroseconds(a1p1 - d);                                                                                                                                                                                                                                   

  digitalWrite(pin2, LOW);
  delayMicroseconds(d);
  digitalWrite(pin4, HIGH);
  delayMicroseconds(a1p2 - a1p1 - d);

  digitalWrite(pin6, LOW);
  delayMicroseconds(d);
  digitalWrite(pin8, HIGH);
  delayMicroseconds(t / 2 - (2 * a1p2) - d);

  digitalWrite(pin5, LOW);
  delayMicroseconds(d);
  digitalWrite(pin7, HIGH);
  delayMicroseconds(a1p2 - a1p1 - d);

  digitalWrite(pin1, LOW);
  delayMicroseconds(d);
  digitalWrite(pin3, HIGH);
  delayMicroseconds((2 * a1p1) - d);

  digitalWrite(pin4, LOW);
  delayMicroseconds(d);
  digitalWrite(pin2, HIGH);
  delayMicroseconds(a1p2 - a1p1 - d);

  digitalWrite(pin8, LOW);
  delayMicroseconds(d);
  digitalWrite(pin6, HIGH);
  delayMicroseconds(t / 2 - (2 * a1p2) - d);

  digitalWrite(pin7, LOW);
  delayMicroseconds(d);
  digitalWrite(pin5, HIGH);
  delayMicroseconds(a1p2 - a1p1 - d);

  digitalWrite(pin3, LOW);
  delayMicroseconds(d);
  digitalWrite(pin1, HIGH);
  delayMicroseconds(a1p1);
}
```
Es posible que desee considerar qué voltajes de compuerta necesita para encender sus N-FET de lado alto

Respuestas (1)

Para mantener los FET de lado alto encendidos, sus puertas deben superar el voltaje de la batería en >= 10 V. Sin embargo, también debe asegurarse de que no reciban más de 20 V entre la puerta y la fuente, por lo que no puede simplemente aumente el voltaje de la batería en 10 V porque entonces el total sería de 22 V, lo que podría hacer estallar los FET.

Una forma de hacerlo es con un convertidor DC/DC aislado como el Recom ROL-1212S , alimentado por la batería que se está cambiando y con su salida conectada entre el suministro positivo del optoacoplador y la fuente FET. Necesitará un convertidor por FET de lado alto.

Para la prueba, puede usar baterías de celda seca PP9, que deberían durar mucho tiempo con la baja corriente que consume su controlador Gate.

Aparte de eso, su circuito y programa parecen ser correctos. El voltaje de salida rms debe ser de ~20 V.