- Что такое SPWM (синусоидальная широтно-импульсная модуляция)?
- Как работает инвертор SPWM
- Компоненты, необходимые для сборки инвертора SPWM
- Конструкция схемы инвертора SPWM
- Программа Arduino для инвертора SPWM
- Тестирование цепи инвертора ШИМ TL494
Инверторные схемы часто необходимы там, где невозможно получить переменный ток от сети. Схема инвертора используется для преобразования мощности постоянного тока в мощность переменного тока, и ее можно разделить на два типа: инверторы с чистой синусоидой или преобразователи с модифицированной прямоугольной волной. Эти синусоидальные инверторы очень дороги, тогда как модифицированные прямоугольные инверторы недороги. Узнайте больше о различных типах инверторов здесь.
В предыдущей статье я показал вам, как не делать модифицированный преобразователь прямоугольной формы, решая связанные с этим проблемы. Итак, в этой статье я сделаю простой синусоидальный инвертор с использованием Arduino и объясню принцип работы схемы.
Если вы создаете эту схему, обратите внимание, что эта схема не имеет обратной связи, защиты от перегрузки по току, защиты от короткого замыкания и защиты от температуры. Следовательно, эта схема создана и продемонстрирована только в образовательных целях, и категорически не рекомендуется создавать и использовать схемы такого типа для коммерческих устройств. Однако вы можете добавить их в свою схему, если требуется, обычно используемые схемы защиты, такие как
Защита от перенапряжения, защита от перегрузки по току, защита от обратной полярности, защита от короткого замыкания, контроллер горячей замены и т. Д. Уже обсуждались.
ВНИМАНИЕ: Если вы делаете этот тип схемы, будьте особенно осторожны с высоким напряжением и скачками напряжения, генерируемыми коммутирующим сигналом на входе.
Что такое SPWM (синусоидальная широтно-импульсная модуляция)?
Как следует из названия, SPWM расшифровывается как S inusoidal P ulse W idth M odulation. Как вы, возможно, уже знаете, сигнал ШИМ - это сигнал, в котором мы можем изменять частоту импульса, а также время включения и выключения, которое также известно как рабочий цикл. Если вы хотите узнать больше о ШИМ, вы можете прочитать это здесь. Итак, изменяя рабочий цикл, мы изменяем среднее напряжение импульса. Изображение ниже показывает, что-
Если мы рассмотрим сигнал ШИМ, который переключается между 0-5 В и имеет рабочий цикл 100%, мы получим среднее выходное напряжение 5 В, опять же, если мы рассмотрим тот же сигнал с рабочим циклом 50%, мы будем получить выходное напряжение 2,5 В, а для рабочего цикла 25% это половина от этого. Это подводит итог основной принцип ШИМ - сигнала, и мы можем перейти к пониманию основного принципа сигнала SPWM.
Синусоидальное напряжение является в первую очередь напряжением аналогии изменяет его величину с течением времени, и мы можем воспроизвести это поведение синусоидальной волны непрерывно изменяя скважность ШЕЙ волны, ниже изображение показывает, что.
Если вы посмотрите на схему ниже, то увидите, что на выходе трансформатора подключен конденсатор. Этот конденсатор отвечает за сглаживание сигнала переменного тока от несущей частоты.
Используемый входной сигнал будет заряжать и разряжать конденсатор в соответствии с входным сигналом и нагрузкой. Поскольку мы использовали очень высокочастотный сигнал SPWM, у него будет очень маленький рабочий цикл, который составляет примерно 1%, этот рабочий цикл 1% немного зарядит конденсатор, следующий рабочий цикл равен 5%, он снова будет заряжаться конденсатор немного больше, следующий импульс будет иметь рабочий цикл 10%, а конденсатор будет заряжаться немного больше, мы будем подавать сигнал, пока не достигнем рабочего цикла 100%, и оттуда мы вернемся вниз до 1%. Это создаст на выходе очень плавную кривую, похожую на синусоидальную волну.. Таким образом, предоставив правильные значения рабочего цикла на входе, мы получим очень синусоидальную волну на выходе.
Как работает инвертор SPWM
На приведенном выше изображении показана основная управляющая часть инвертора SPWM, и, как вы можете видеть, мы использовали два N-канальных полевых МОП-транзистора в полумостовой конфигурации для управления трансформатором этой схемы, чтобы уменьшить нежелательный шум переключения и защитить полевой МОП-транзистор., мы использовали диоды 1N5819 параллельно с полевыми МОП-транзисторами. Чтобы уменьшить любые вредные выбросы, генерируемые в секции затвора, мы использовали резисторы 4,7 Ом, параллельные диодам 1N4148. Наконец, транзисторы BD139 и BD 140 имеют двухтактную конфигурацию.для управления затвором полевого МОП-транзистора, поскольку этот полевой МОП-транзистор имеет очень высокую емкость затвора и для правильного включения требуется минимум 10 В на базе. Узнайте больше о работе двухтактных усилителей здесь.
Чтобы лучше понять принцип работы схемы, мы сократили его до точки, когда эта секция полевого МОП-транзистора включена. Когда на полевой МОП-транзистор подается ток, он сначала проходит через трансформатор, а затем заземляется полевым МОП-транзистором, таким образом, магнитный поток также будет индуцироваться в направлении, в котором протекает ток, и сердечник трансформатора будет пропускать магнитный поток. во вторичной обмотке, и мы получим положительный полупериод синусоидального сигнала на выходе.
В следующем цикле нижняя часть схемы находится на верхней части схемы, поэтому я удалил верхнюю часть, теперь ток течет в противоположном направлении и генерирует магнитный поток в этом направлении, таким образом меняя направление направление магнитного потока в сердечнике. Узнайте больше о работе MOSFET здесь.
Теперь мы все знаем, что трансформатор работает за счет изменения магнитного потока. Таким образом, включение и выключение обоих полевых МОП-транзисторов, один инвертированный в другой и выполнение этого 50 раз в секунду, создаст хороший колеблющийся магнитный поток внутри сердечника трансформатора, а изменяющийся магнитный поток вызовет напряжение во вторичной катушке как мы знаем по закону Фарадея. Так работает основной инвертор.
Полная схема инвертора SPWM, используемая в этом проекте, приведена ниже.
Компоненты, необходимые для сборки инвертора SPWM
Sl.No |
Запчасти |
Тип |
Количество |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Транзистор |
2 |
4 |
BD140 |
Транзистор |
2 |
5 |
22пФ |
Конденсатор |
2 |
6 |
10 тыс., 1% |
Резистор |
1 |
7 |
16 МГц |
Кристалл |
1 |
8 |
0,1 мкФ |
Конденсатор |
3 |
9 |
4.7R |
Резистор |
2 |
10 |
1N4148 |
Диод |
2 |
11 |
LM7805 |
Регулятор напряжения |
1 |
12 |
200 мкФ, 16 В |
Конденсатор |
1 |
13 |
47 мкФ, 16 В |
Конденсатор |
1 |
14 |
2,2 мкФ, 400 В |
Конденсатор |
1 |
Конструкция схемы инвертора SPWM
Для этой демонстрации схема построена на Veroboard с помощью схемы. На выходе трансформатора через соединение будет протекать огромное количество тока, поэтому соединительные перемычки должны быть как можно более толстыми.
Программа Arduino для инвертора SPWM
Прежде чем мы продолжим и начнем понимать код, давайте разберемся с основами. Из приведенного выше принципа работы вы узнали, как будет выглядеть сигнал ШИМ на выходе, теперь остается вопрос, как мы можем создать такую переменную волну на выходных контактах Arduino.
Чтобы создать изменяющийся сигнал PWM, мы собираемся использовать 16-битный таймер1 с настройкой предварительного делителя 1, что даст нам 1600/16000000 = 0,1 мс времени для каждого счета, если мы рассмотрим один полупериод синусоидальной волны., который умещается ровно 100 раз в пределах половины цикла волны. Проще говоря, мы сможем выполнить выборку нашей синусоидальной волны 200 раз.
Затем нам нужно разделить нашу синусоидальную волну на 200 частей и вычислить их значения с корреляцией амплитуды. Затем мы должны преобразовать эти значения в значения счетчика таймера, умножив его на предел счетчика. Наконец, мы должны поместить эти значения в таблицу поиска, чтобы передать их счетчику, и мы получим синусоидальную волну.
Чтобы немного упростить задачу, я использую очень хорошо написанный код SPWM с GitHub, сделанный Куртом Хаттеном.
Код очень прост, мы начинаем нашу программу с добавления необходимых файлов заголовков
#include #include
Затем у нас есть две таблицы поиска, из которых мы собираемся получить значения счетчиков таймера.
int lookUp1 = {50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250, 201, 151, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0}; int lookUp2 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250,201, 151, 100, 50, 0};
Затем, в разделе настройки , мы инициализируем регистры управления счетчиком таймера, чтобы они были очищены для каждого. Для получения дополнительной информации вам необходимо просмотреть техническое описание микросхемы atmega328.
TCCR1A = 0b10100010; / * 10 очищается при совпадении, устанавливается ВНИЗ для compA. 10 чистых на матче, устанавливается ВНИЗ для compB. 00 10 WGM1 1: 0 для сигнала 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 для сигнала 15. 001 на счетчике нет предварительного масштабирования. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Флаг разрешения прерывания. * /
После этого мы инициализируем регистр захвата ввода предопределенным значением 16000, так как это поможет нам сгенерировать ровно 200 выборок.
ICR1 = 1600; // Период для кристалла 16 МГц, для частоты переключения 100 кГц для 200 делений на цикл синусоидальной волны 50 Гц.
Затем мы включаем глобальные прерывания, вызывая функцию, sei ();
Наконец, мы устанавливаем выводы 9 и 10 Arduino в качестве вывода.
DDRB = 0b00000110; // Установить PB1 и PB2 как выходы.
Это знаменует конец функции настройки.
Секция цикла кода остается пустой, поскольку это программа, управляемая прерываниями счетчика таймера.
void loop () {; /*Ничего не делать…. навсегда! * /}
Затем мы определили вектор переполнения timer1, эта функция прерывания получает вызов, когда timer1 переполняется, и генерирует прерывание.
ISR (TIMER1_OVF_vect) {
Затем мы объявляем некоторые локальные переменные статическими и начали подавать значения в резистор захвата и сравнения.
статическое целое число; статический символ триггера; // изменить рабочий цикл каждый период. OCR1A = lookUp1; OCR1B = lookUp2;
Наконец, мы предварительно увеличиваем счетчик, чтобы передать следующие значения на резисторы захвата и сравнения, что знаменует конец этого кода.
if (++ num> = 200) {// Предварительно увеличиваем число, затем проверяем, что оно меньше 200. num = 0; // Сбросить номер. trig = trig ^ 0b00000001; digitalWrite (13, триггер); }
Тестирование цепи инвертора ШИМ TL494
Для проверки схемы используется следующая установка.
- Свинцово-кислотный аккумулятор 12 В.
- Трансформатор с отводом 6-0-6 и отводом 12-0-12
- Лампа накаливания мощностью 100 Вт в качестве нагрузки
- Мультиметр Meco 108B + TRMS
- Мультиметр Meco 450B + TRMS
Выходной сигнал от Arduino:
Как только я загрузил код. Я измерил выходной сигнал SPWM с двух контактов Arduino, который выглядит как на изображении ниже.
Если немного увеличить масштаб, то можно увидеть постоянно меняющийся рабочий цикл волны ШИМ.
Далее на изображении ниже показан выходной сигнал трансформатора.
Схема инвертора SPWM в идеальном состоянии:
Как вы можете видеть на изображении выше, эта схема потребляет около 13 Вт при идеальной работе.
Выходное напряжение без нагрузки:
Выходное напряжение схемы инвертора показано выше, это напряжение на выходе без подключенной нагрузки.
Потребляемая мощность на входе:
На изображении выше показана входная мощность, потребляемая микросхемой при подключении нагрузки 40 Вт.
Потребляемая мощность на выходе:
На изображении выше показана выходная мощность, потребляемая этой схемой (нагрузка - лампа накаливания мощностью 40 Вт).
На этом мы завершаем тестовую часть схемы. Вы можете посмотреть видео ниже для демонстрации. Надеюсь, вам понравилась эта статья и вы узнали немного о SPWM и методах его реализации. Продолжайте читать, продолжайте учиться, продолжайте строить, и я увижу вас в следующем проекте.