- Какво е SPWM (синусоидална модулация на широчината на импулса)?
- Как работи SPWM инверторът
- Компоненти, необходими за изграждане на SPWM инвертор
- SPWM Инверторна верига
- Програма Arduino за инвертор SPWM
- Тестване на инверторната схема на ШИМ TL494
Често са необходими инверторни вериги, когато не е възможно да се получи захранване с променлив ток от мрежата. Инверторна верига се използва за преобразуване на постояннотокова мощност в променлива и може да бъде разделена на два типа, това са инвертори с чиста синусоида или модифицирани инвертори с квадратна вълна. Тези инвертори с чиста синусоида са много скъпи, където модифицираните инвертори с квадратна вълна са евтини. Научете повече за различните видове инвертори тук.
В предишна статия ви показах как да не направите модифициран инвертор с квадратна вълна, като се справите с проблемите, свързани с него. Така че в тази статия ще направя обикновен инвертор с чиста синусоида, използвайки Arduino, и ще обясня принципа на работа на веригата.
Ако правите тази верига, моля, имайте предвид, че тази верига няма обратна връзка, няма защита от свръхток, няма защита срещу късо съединение и няма температура. Следователно тази схема е изградена и демонстрирана само с образователна цел и абсолютно не се препоръчва да се изгражда и използва този тип верига за търговски уреди. Въпреки това можете да ги добавите към вашата верига, ако е необходимо, често използваните защитни схеми като
Защита от пренапрежение, защита от претоварване, защита от обратна полярност, защита от късо съединение, контролер за гореща смяна и др. Вече са обсъдени.
ВНИМАНИЕ: Ако правите този тип верига, моля, бъдете особено внимателни по отношение на пикове на високо напрежение и напрежение, генерирани от превключващия сигнал към входа.
Какво е SPWM (синусоидална модулация на широчината на импулса)?
Както подсказва името, SPWM означава S inusoidal P ulse W idth М odulation. Както може би вече знаете, ШИМ сигнал е сигнал, в който можем да променим честотата на импулса, както и времето за включване и изключване, което е известно още като работен цикъл. Ако искате да научите повече за ШИМ, можете да го прочетете тук. И така, като променяме работния цикъл, ние променяме средното напрежение на импулса. Изображението по-долу показва, че-
Ако разгледаме ШИМ сигнал, който се превключва между 0 - 5V, който има работен цикъл 100%, ще получим средно изходно напрежение 5V, отново, ако разгледаме същия сигнал с работен цикъл 50%, ще вземете изходното напрежение от 2.5V, а за работния цикъл от 25%, това е половината от това. Това обобщава основния принцип на ШИМ сигнала и можем да преминем към разбирането на основния принцип на ШИМ сигнала.
А задължително напрежение е преди всичко една аналогия напрежение, което може да промени неговия магнитуд течение на времето, и ние можем да възпроизведем това поведение на синусоида с непрекъснато се променя работния цикъл на PWM вълна, изображението по-долу показва, че.
Ако погледнете схемата по-долу, ще видите, че на изхода на трансформатора е свързан кондензатор. Този кондензатор е отговорен за изглаждането на променливотоковия сигнал от носещата честота.
Използваният входен сигнал ще зарежда и разрежда кондензатора според входния сигнал и товара. Тъй като сме използвали много високочестотен SPWM сигнал, той ще има много малък работен цикъл, който е около 1%, този 1% работен цикъл ще зареди кондензатора малко, следващият работен цикъл е 5%, това отново ще се зареди кондензаторът малко повече, следващият импулс ще има работен цикъл от 10% и кондензаторът ще се зареди малко повече, ще прилагаме сигнала, докато не достигнем работен цикъл от 100% и от там, ще се върнем надолу до 1%. Това ще създаде много гладка крива като синусоида на изхода. Така че, осигурявайки правилни стойности на работния цикъл на входа, ще имаме много синусоидална вълна на изхода.
Как работи SPWM инверторът
Горното изображение показва основната задвижваща секция на инвертора SPWM и както можете да видите, ние използвахме два N-канални MOSFET в конфигурация на полумост за задвижване на трансформатора на тази верига, за намаляване на нежелания шум от превключване и за защита на MOSFET, ние използвахме 1N5819 диоди успоредно на MOSFETs. За да намалим всякакви вредни скокове, генерирани в секцията на портата, използвахме резистори от 4,7 ома, успоредни на диоди 1N4148. Накрая, BD139 и BD 140 транзистори са конфигурирани в пуш-пул конфигурацияза задвижване на портата на MOSFET, тъй като този MOSFET има много висок капацитет на портата и изисква минимум 10V в основата, за да се включи правилно. Научете повече за работата на усилвателите Push-Pull тук.
За да разберем по-добре принципа на работа на веригата, ние я намалихме до точка, в която този раздел на MOSFET е ВКЛЮЧЕН. Когато MOSFET е на ток, първо преминава през трансформатора и след това се заземява от MOSFET, като по този начин магнитният поток също ще бъде индуциран в посоката, в която тече токът, и сърцевината на трансформатора ще премине магнитния поток във вторичната намотка и ще получим положителния полуцикъл на синусоидалния сигнал на изхода.
В следващия цикъл долната част на веригата е в горната част на веригата е изключена, затова отстраних горната част, сега токът тече в обратна посока и генерира магнитен поток в тази посока, като по този начин се обръща посоката на магнитния поток в сърцевината. Научете повече за работата на MOSFET тук.
Сега всички знаем, че трансформаторът работи чрез промени в магнитния поток. Така че, включването и изключването на MOSFET-ите, едно обърнато към друго и правене на това 50 пъти в секунда, ще генерира хубав трептящ магнитен поток вътре в сърцевината на трансформатора и променящият се магнитен поток ще предизвика напрежение във вторичната намотка ние знаем по закона на Фарадей. Ето как работи основният инвертор.
Пълната схема на инвертора SPWM, използвана в този проект, е дадена по-долу.
Компоненти, необходими за изграждане на SPWM инвертор
Sl.No |
Части |
Тип |
Количество |
1 |
Atmega328P |
интегрална схема |
1 |
2 |
IRFZ44N |
Мосфет |
2 |
3 |
BD139 |
Транзистор |
2 |
4 |
BD140 |
Транзистор |
2 |
5 |
22pF |
Кондензатор |
2 |
6 |
10K, 1% |
Резистор |
1 |
7 |
16MHz |
Кристал |
1 |
8 |
0.1uF |
Кондензатор |
3 |
9 |
4.7R |
Резистор |
2 |
10 |
1N4148 |
Диод |
2 |
11. |
LM7805 |
Волтажен регулатор |
1 |
12 |
200uF, 16V |
Кондензатор |
1 |
13 |
47uF, 16V |
Кондензатор |
1 |
14. |
2.2uF, 400V |
Кондензатор |
1 |
SPWM Инверторна верига
За тази демонстрация веригата е изградена на Veroboard с помощта на схемата. На изхода на трансформатора през връзката ще изтече огромно количество ток, така че джъмперите на връзката трябва да бъдат възможно най-дебели.
Програма Arduino за инвертор SPWM
Преди да продължим напред и да започнем да разбираме кода, нека изчистим основите. От горния принцип на работа научихте как ще изглежда ШИМ сигналът на изхода, сега остава въпросът как можем да направим такава варираща вълна на изходните щифтове на Arduino.
За да направим вариращия ШИМ сигнал, ще използваме 16-битовия таймер1 с настройка за предварително задаване на мащаба 1, което ще ни даде 1600/16000000 = 0.1ms време за всеки брой, ако вземем предвид един полупериод на синусоида, който се вписва точно 100 пъти в рамките на половин цикъл на вълната. С прости думи, ще можем да вземем проби от нашата синусоида 200 пъти.
След това трябва да разделим нашата синусоида на 200 парчета и да изчислим техните стойности с корелация на амплитудата. След това трябва да преобразуваме тези стойности в стойности на брояча на таймера, като го умножим с ограничението на брояча. И накрая, трябва да поставим тези стойности в таблица за търсене, за да я подадем на брояча и ще получим нашата синусоида.
За да направя нещата малко по-опростени, използвам много добре написан SPWM код от GitHub, създаден от Kurt Hutten.
Кодът е много прост. Започваме нашата програма чрез добавяне на необходимите заглавни файлове
#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 IC.
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; // Период за кристал от 16MHz, за честота на превключване от 100KHz за 200 подразделения за 50Hz цикъл на синусоида.
След това активираме глобални прекъсвания чрез извикване на функцията, sei ();
И накрая, поставихме Arduino pin 9 и 10 като изход
DDRB = 0b00000110; // Задайте PB1 и PB2 като изходи.
Това отбелязва края на функцията за настройка.
Секцията на цикъла на кода остава празна, тъй като е програма, управлявана от прекъсване на таймера.
цикъл void () {; / * Не правете нищо…. завинаги! * /}
След това дефинирахме вектора за препълване timer1, тази функция за прекъсване получава повикване, след като timer1 препълни и генерира прекъсване.
ISR (TIMER1_OVF_vect) {
След това декларираме някои локални променливи като статични променливи и започнахме да подаваме стойностите на резистора за улавяне и сравняване.
статичен int номер; статичен триъгълник; // промяна на работния цикъл всеки период. OCR1A = lookUp1; OCR1B = lookUp2;
И накрая, предварително увеличаваме брояча, за да подадем следващите стойности към улавящите и сравняваме резистори, което отбелязва края на този код.
if (++ num> = 200) {// Предварително нарастване num, след това проверете дали е под 200. num = 0; // Нулиране на номера триг = триг ^ 0b00000001; digitalWrite (13, триъгълник); }
Тестване на инверторната схема на ШИМ TL494
За да се тества веригата, се използва следната настройка.
- 12V оловно-киселинна батерия.
- Трансформатор, който има кран 6-0-6 и кран 12-0-12
- 100W крушка с нажежаема жичка като товар
- Мултиметър Meco 108B + TRMS
- Мултиметър Meco 450B + TRMS
Изходен сигнал от Arduino:
След като кача кода. Измерих изходния SPWM сигнал от двата щифта на Arduino, който изглежда като изображението по-долу,
Ако увеличим малко, можем да видим непрекъснато променящия се работен цикъл на ШИМ вълната.
След това изображението по-долу показва изходния сигнал от трансформатора.
SPWM верига на инвертора в идеално състояние:
Както можете да видите от горното изображение, тази схема черпи около 13W, докато работи идеално
Изходно напрежение без товар:
Изходното напрежение на веригата на инвертора е показано по-горе, това е напрежението, излизащо на изхода без прикачен товар.
Консумация на входна мощност:
Горното изображение показва входната мощност, която IC консумира, когато е прикрепен товар от 40 W.
Консумация на изходна мощност:
Горното изображение показва изходната мощност, която се консумира от тази верига, (натоварването е 40W крушка с нажежаема жичка)
С това завършваме тестващата част на веригата. Можете да разгледате видеоклипа по-долу за демонстрация. Надявам се, че тази статия ви е харесала и сте научили малко за SPWM и техниките за неговото изпълнение. Продължавайте да четете, продължете да учите, продължете да градите и ще се видим в следващия проект.