Получение более низкого выходного напряжения, чем ожидалось, в 5-уровневом инверторе

Я делаю 5-уровневый инвертор, используя Arduino Mega. Я использую MOSFET IRFZ44N для переключения, а также MCT2E в качестве драйвера MOSFET.

Проблема, с которой я столкнулся, заключается в том, что я получаю более низкое выходное напряжение, чем ожидалось: фактическое выходное напряжение должно быть 24 В, но я получаю 12–13 В на выходе.

Может ли кто-нибудь помочь мне с этой проблемой?

Это схема:

введите описание изображения здесь

Это код, который я использую:

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);
}
```
Возможно, вы захотите подумать, какие напряжения затвора вам нужны для включения ваших N-FET на стороне высокого напряжения.

Ответы (1)

Чтобы полевые транзисторы верхнего плеча оставались включенными, их затворы должны превышать напряжение батареи на >= 10 В. Однако вы также должны убедиться, что они не получают более 20 В между затвором и истоком, поэтому вы не можете просто увеличьте напряжение батареи на 10 В, потому что тогда общее напряжение составит 22 В, что может привести к взрыву полевых транзисторов.

Один из способов сделать это — использовать изолированный DC/DC-преобразователь, такой как Recom ROL-1212S , питаемый от переключаемой батареи, а его выход подключается между положительным источником питания оптопары и источником питания на полевых транзисторах. Вам понадобится один преобразователь на полевой транзистор верхнего плеча.

Для тестирования вы можете использовать сухие батареи PP9, которые должны работать долгое время при низком токе, потребляемом драйвером Gate.

Кроме того, ваша схема и программа кажутся правильными. Среднеквадратичное значение выходного напряжения должно быть ~20 В.