- Що таке SPWM (синусоїдальна модуляція ширини імпульсу)?
- Як працює інвертор SPWM
- Компоненти, необхідні для побудови інвертора ШІМ
- Конструкція схеми інвертора ШІМ
- Програма Arduino для інвертора ШІМ
- Тестування схеми інвертора ШІМ TL494
Інверторні схеми часто потрібні там, де неможливо отримати живлення змінного струму від мережі. Схема інвертора використовується для перетворення потужності постійного струму в потужність змінного струму, і її можна розділити на два типи - це інвертори з чистою синусоїдою або модифіковані прямокутні інвертори. Ці чисті синусоїдальні інвертори дуже дорогі, де модифіковані прямокутні інвертори недорогі. Дізнайтеся більше про різні типи інверторів тут.
У попередній статті я показав вам, як не робити модифікований прямокутний інвертор, вирішуючи проблеми, пов'язані з ним. Отже, у цій статті я буду робити простий інвертор із чистою синусоїдою за допомогою Arduino та поясню принцип роботи схеми.
Якщо ви робите цю схему, зверніть увагу, що ця схема не має зворотного зв'язку, захисту від перевантаження по струму, захисту від короткого замикання та захисту від температури. Отже, ця схема побудована та продемонстрована лише з навчальною метою, і абсолютно не рекомендується будувати та використовувати цей тип схеми для комерційних приладів. Однак ви можете додати їх до своєї схеми, якщо це потрібно, наприклад, часто використовувані схеми захисту
Захист від перенапруги, захист від перевантаження по струму, захист від зворотної полярності, захист від короткого замикання, контролер гарячої заміни тощо вже обговорювались.
ПОПЕРЕДЖЕННЯ. Якщо ви робите цей тип ланцюга, будьте обережні щодо високих напруг та стрибків напруги, що генеруються сигналом перемикання на вхід.
Що таке SPWM (синусоїдальна модуляція ширини імпульсу)?
Як випливає з назви, SPWM позначає S inusoidal P ulse W IDþ M odulation. Як ви вже знали, ШІМ-сигнал - це сигнал, за допомогою якого ми можемо змінювати частоту імпульсу, а також час включення та відключення, який також відомий як робочий цикл. Якщо ви хочете дізнатись більше про ШІМ, ви можете прочитати її тут. Отже, змінюючи робочий цикл, ми змінюємо середню напругу імпульсу. На зображенні нижче показано, що-
Якщо ми розглянемо ШІМ-сигнал, який перемикається між 0 - 5 В і має робочий цикл 100%, ми отримаємо середню вихідну напругу 5 В, знову ж, якщо розглядати той самий сигнал із робочим циклом 50%, ми отримаємо отримати вихідну напругу 2,5 В, а для робочого циклу 25% це половина цього. Це підводить підсумок основний принцип ШІМ - сигналу, і ми можемо перейти до розуміння основного принципу сигналу SPWM.
Синусоїдальна напруга є в першу чергу напругою аналогії змінює його величину з плином часу, і ми можемо відтворити це поведінка синусоїдальної хвилі безперервно змінюючи шпаруватість Шей хвилі, нижче зображення показує, що.
Якщо ви подивитесь на схему нижче, то побачите, що на виході трансформатора підключений конденсатор. Цей конденсатор відповідає за згладжування сигналу змінного струму від несучої частоти.
Використовуваний вхідний сигнал буде заряджати та розряджати конденсатор відповідно до вхідного сигналу та навантаження. Оскільки ми використовували дуже високочастотний сигнал ШІМ, він матиме дуже малий робочий цикл, який становить приблизно 1%, цей робочий цикл 1% трохи зарядить конденсатор, наступний робочий цикл - 5%, це знову зарядить конденсатор трохи більше, наступний імпульс матиме робочий цикл 10%, а конденсатор зарядитиметься трохи більше, ми будемо подавати сигнал, поки не досягнемо робочого циклу 100%, а звідти повернемося вниз до 1%. Це створить дуже плавну криву, як синусоїда на виході. Отже, забезпечуючи належні значення робочого циклу на вході, ми матимемо дуже синусоїдальну хвилю на виході.
Як працює інвертор SPWM
На наведеному вище зображенні показано основну секцію керування інвертором ШІМ, і, як ви можете бачити, ми використовували два N-канальних MOSFET в напівмостовій конфігурації для керування трансформатором цієї схеми, зменшення небажаного перемикання шуму та захисту MOSFET, ми використовували діоди 1N5819 паралельно MOSFET. Для зменшення будь-яких шкідливих стрибків, що утворюються в секції затвора, ми використовували резистори 4,7 Ом, паралельні діодам 1N4148. Нарешті, BD139 і BD 140 транзистори сконфігуровані в двотактної конфігураціїдля керування затвором МОП-транзистора, оскільки цей МОП-транзистор має дуже високу ємність затвора і для належного включення вимагає мінімум 10 В на базі. Дізнайтеся більше про роботу підсилювачів Push-Pull тут.
Щоб краще зрозуміти принцип роботи схеми, ми звели її до точки, коли цей розділ MOSFET увімкнений. Коли MOSFET знаходиться на струмі, спочатку протікає через трансформатор, а потім заземляється MOSFET, таким чином, магнітний потік також буде індукований у напрямку, в якому протікає струм, і серцевина трансформатора пропускатиме магнітний потік у вторинній обмотці, і ми отримаємо позитивний півцикл синусоїдального сигналу на виході.
У наступному циклі нижня частина ланцюга знаходиться у верхній частині ланцюга вимкнена, тому я видалив верхню частину, тепер струм тече в протилежному напрямку і генерує магнітний потік в цьому напрямку, таким чином, змінюючи напрямок напрямок магнітного потоку в ядрі. Дізнайтеся більше про роботу MOSFET тут.
Тепер ми всі знаємо, що трансформатор працює від змін магнітного потоку. Отже, увімкнення і вимкнення МОП-транзисторів, один інвертований до іншого, і роблячи це 50 разів за секунду, генеруватиме приємний коливальний магнітний потік всередині сердечника трансформатора, а мінливий магнітний потік призведе до напруги у вторинній котушці ми знаємо за законом Фарадея. Ось як працює основний інвертор.
Повна схема інвертора ШІМ, використана в цьому проекті, наведена нижче.
Компоненти, необхідні для побудови інвертора ШІМ
Сл |
Частини |
Тип |
Кількість |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Мосфет |
2 |
3 |
BD139 |
Транзистор |
2 |
4 |
BD140 |
Транзистор |
2 |
5 |
22pF |
Конденсатор |
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 |
Конструкція схеми інвертора ШІМ
Для цієї демонстрації схема побудована на Veroboard за допомогою схеми: На виході трансформатора через з'єднання буде проходити величезна кількість струму, тому перемички з'єднання повинні бути якомога товщі.
Програма Arduino для інвертора ШІМ
Перш ніж продовжувати і починати розуміти код, давайте прояснимо основи. З вищевказаного принципу роботи ви дізналися, як буде виглядати ШІМ-сигнал на виході, тепер залишається питання, як ми можемо зробити таку різну хвилю на вихідних штифтах Arduino.
Щоб зробити змінний ШІМ-сигнал, ми будемо використовувати 16-розрядний таймер1 із налаштуванням попереднього масштабування 1, що дасть нам 1600/16000000 = 0,1 мс часу для кожного підрахунку, якщо врахувати один напівцикл синусоїди, що підходить рівно в 100 разів протягом півтора циклу хвилі. Простіше кажучи, ми зможемо взяти вибірку нашої синусоїди 200 разів.
Далі ми повинні розділити нашу синусоїду на 200 частин і обчислити їх значення з кореляцією амплітуди. Далі ми повинні перетворити ці значення на значення лічильника таймера, помноживши їх на ліміт лічильника. Нарешті, ми повинні помістити ці значення в таблицю пошуку, щоб подати їх на лічильник, і ми отримаємо нашу синусоїду.
Щоб трохи спростити ситуацію, я використовую дуже добре написаний код SPWM від GitHub, який створив Курт Хаттен.
Код дуже простий. Ми розпочинаємо програму додаванням необхідних файлів заголовків
# включити # включити
Далі у нас є дві таблиці пошуку, з яких ми збираємося отримувати значення лічильника таймера.
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};
Далі, у розділі налаштування , ми ініціалізуємо регістри керування лічильником таймера, щоб бути зрозумілими для кожного. Для отримання додаткової інформації вам потрібно пройти таблицю даних IC 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 ();
Нарешті, ми встановили Arduino pin 9 і 10 як вихід
DDRB = 0b00000110; // Встановіть PB1 і PB2 як виходи.
Це означає закінчення функції налаштування.
Розділ циклу коду залишається порожнім, оскільки це програма, керована перериванням лічильника таймера.
недійсний цикл () {; /*Нічого не робити…. назавжди! * /}
Далі ми визначили вектор переповнення timer1, ця функція переривання отримує виклик, коли timer1 переповнюється і генерує переривання.
ISR (TIMER1_OVF_vect) {
Далі ми оголошуємо деякі локальні змінні як статичні змінні, і ми почали подавати значення до резистора захоплення та порівняння.
static int num; статичний триггер; // змінюємо робочий цикл кожного періоду. OCR1A = lookUp1; OCR1B = lookUp2;
Нарешті, ми попередньо збільшуємо лічильник, щоб подати наступні значення на захоплення та порівняння резисторів, що позначає кінець цього коду.
if (++ num> = 200) {// Попередньо збільшити num, тоді перевірте, що воно нижче 200. num = 0; // Скинути номер. trig = trig ^ 0b00000001; digitalWrite (13, триг); }
Тестування схеми інвертора ШІМ TL494
Для тестування схеми використовується наступна настройка.
- 12В свинцево-кислотна батарея.
- Трансформатор, який має кран 6-0-6 і кран 12-0-12
- Лампочка розжарювання 100 Вт як навантаження
- Мультиметр Meco 108B + TRMS
- Мультиметр Meco 450B + TRMS
Вихідний сигнал від Arduino:
Після завантаження коду. Я виміряв вихідний сигнал ШІМ з двох висновків Arduino, який виглядає як зображення нижче,
Якщо трохи збільшити масштаб, ми можемо побачити постійно мінливий робочий цикл ШІМ-хвилі.
Далі, на зображенні нижче показано вихідний сигнал від трансформатора.
Схема інвертора ШІМ в ідеальному стані:
Як видно з наведеного зображення, ця схема витрачає близько 13 Вт при ідеальній роботі
Вихідна напруга без навантаження:
Вихідна напруга схеми інвертора показана вище, це напруга, що виходить на виході без будь-якого навантаження.
Споживана вхідна потужність:
На наведеному вище зображенні показано вхідну потужність, яку споживає ic, коли приєднано навантаження 40 Вт.
Споживана вихідна потужність:
На зображенні вище показано вихідну потужність, яку споживає дана схема (навантаження становить 40 Вт лампочки розжарювання)
Цим ми закінчуємо випробувальну частину схеми. Ви можете переглянути відео нижче для демонстрації. Сподіваюсь, вам сподобалась ця стаття і ви дізналися трохи про ШІМ та прийоми її реалізації. Продовжуйте читати, продовжуйте вчитися, продовжуйте будувати, і я побачу вас у наступному проекті.