- Co to jest SPWM (sinusoidalna modulacja szerokości impulsu)?
- Jak działa falownik SPWM
- Komponenty wymagane do zbudowania falownika SPWM
- Budowa obwodu falownika SPWM
- Program Arduino dla falownika SPWM
- Testowanie obwodu falownika TL494 PWM
Obwody inwerterowe są często potrzebne, gdy nie jest możliwe uzyskanie zasilania AC z sieci. Obwód falownika służy do konwersji prądu stałego na prąd przemienny i można go podzielić na dwa typy, czyli falowniki czystej fali sinusoidalnej lub zmodyfikowane falowniki prostokątne . Te falowniki z czystą sinusoidą są bardzo drogie, podczas gdy zmodyfikowane falowniki prostokątne są niedrogie. Dowiedz się więcej o różnych typach falowników tutaj.
W poprzednim artykule pokazałem, jak nie robić zmodyfikowanego falownika prostokątnego, rozwiązując związane z nim problemy. W tym artykule utworzę prosty falownik o czystej fali sinusoidalnej za pomocą Arduino i wyjaśnię zasadę działania obwodu.
Jeśli wykonujesz ten obwód, pamiętaj, że nie ma on sprzężenia zwrotnego, zabezpieczenia nadprądowego, zabezpieczenia przed zwarciem i zabezpieczenia temperaturowego. Dlatego ten obwód jest zbudowany i demonstrowany wyłącznie w celach edukacyjnych i absolutnie nie zaleca się budowania i używania tego typu obwodu w urządzeniach komercyjnych. Możesz jednak dodać je do swojego obwodu, jeśli jest to wymagane, powszechnie używane obwody zabezpieczające, takie jak
Ochrona przed przepięciami, zabezpieczenie nadprądowe, zabezpieczenie przed odwrotną polaryzacją, zabezpieczenie przed zwarciem, kontroler Hot Swap, itp. Zostały już omówione.
OSTRZEŻENIE: Jeśli wykonujesz ten typ obwodu, zwróć szczególną uwagę na wysokie napięcie i skoki napięcia generowane przez sygnał przełączający na wejście.
Co to jest SPWM (sinusoidalna modulacja szerokości impulsu)?
Jak sama nazwa wskazuje, SPWM oznacza S inusoidal P ulse W IDþ M odulation. Jak być może już wiesz, sygnał PWM to sygnał, w którym możemy zmienić częstotliwość impulsu, a także czas włączenia i wyłączenia, co jest również znane jako cykl pracy. Jeśli chcesz dowiedzieć się więcej o PWM, możesz przeczytać to tutaj. Tak więc, zmieniając cykl pracy, zmieniamy średnie napięcie impulsu. Poniższy obraz pokazuje, że-
Jeśli weźmiemy pod uwagę sygnał PWM, który przełącza się w zakresie 0-5 V, który ma cykl pracy 100%, otrzymamy średnie napięcie wyjściowe 5 V, ponownie, jeśli weźmiemy pod uwagę ten sam sygnał z cyklem pracy 50%, otrzymamy uzyskać napięcie wyjściowe 2,5 V, a dla cyklu pracy 25% to połowa tego. To podsumowuje podstawową zasadę sygnału PWM i możemy przejść do zrozumienia podstawowej zasady sygnału SPWM.
Sinus napięcia jest przede wszystkim napięcia, który zmienia swoją analogia wielkości w czasie, i możemy odtworzyć ten zachowanie sinusoidy przez nieustannie zmieniając cykl fali PWM, poniżej pokazuje, że graficznych.
Jeśli spojrzysz na poniższy schemat, zobaczysz, że na wyjściu transformatora jest podłączony kondensator. Kondensator ten odpowiada za wygładzenie sygnału AC z częstotliwości nośnej.
Wykorzystany sygnał wejściowy ładuje i rozładowuje kondensator zgodnie z sygnałem wejściowym i obciążeniem. Ponieważ użyliśmy sygnału SPWM o bardzo wysokiej częstotliwości, będzie on miał bardzo mały cykl pracy, który wynosi około 1%, ten 1% cykl pracy trochę naładuje kondensator, następny cykl pracy to 5%, to ponownie naładuje kondensator trochę więcej, po impulsie będzie miał cykl pracy 10%, a kondensator będzie ładował się trochę więcej, zastosujemy sygnał, aż osiągniemy cykl pracy 100% i stamtąd wrócimy na dół do 1%. Stworzy to bardzo gładką krzywą, podobną do fali sinusoidalnej na wyjściu. Tak więc, podając odpowiednie wartości współczynnika wypełnienia na wejściu, na wyjściu otrzymamy bardzo sinusoidalną falę.
Jak działa falownik SPWM
Powyższy obraz przedstawia główną sekcję napędową falownika SPWM i jak widać, użyliśmy dwóch N-kanałowych tranzystorów MOSFET w konfiguracji półmostkowej do sterowania transformatorem tego obwodu, w celu zmniejszenia niepożądanego szumu przełączania i ochrony MOSFET zastosowaliśmy diody 1N5819 równolegle z tranzystorami MOSFET. Aby zmniejszyć szkodliwe skoki generowane w sekcji bramki, zastosowaliśmy rezystory 4,7 oma równolegle z diodami 1N4148. Wreszcie tranzystory BD139 i BD 140 są skonfigurowane w konfiguracji przeciwsobnejdo napędzania bramki MOSFET-u, ponieważ ten MOSFET ma bardzo dużą pojemność bramki i wymaga minimum 10 V u podstawy, aby włączyć się prawidłowo. Dowiedz się więcej o działaniu wzmacniaczy Push-Pull tutaj.
Aby lepiej zrozumieć zasadę działania obwodu, ograniczyliśmy go do punktu, w którym ta sekcja MOSFET-u jest włączona. Gdy tranzystor MOSFET jest pod napięciem, najpierw przepływa przez transformator, a następnie zostaje uziemiony przez tranzystor MOSFET, dzięki czemu strumień magnetyczny będzie również indukowany w kierunku, w którym płynie prąd, a rdzeń transformatora przejdzie przez strumień magnetyczny w uzwojeniu wtórnym, a na wyjściu otrzymamy dodatnią połowę cyklu sygnału sinusoidalnego.
W następnym cyklu dolna część obwodu jest w górnej części obwodu wyłączona, dlatego zdjąłem górną część, teraz prąd płynie w przeciwnym kierunku i generuje strumień magnetyczny w tym kierunku, odwracając tym samym kierunek strumienia magnetycznego w rdzeniu. Dowiedz się więcej o działaniu MOSFET tutaj.
Teraz wszyscy wiemy, że transformator działa na zasadzie zmian strumienia magnetycznego. Tak więc, włączanie i wyłączanie obu tranzystorów MOSFET, jeden odwrócony do drugiego i robienie tego 50 razy w ciągu sekundy, wygeneruje przyjemny oscylacyjny strumień magnetyczny wewnątrz rdzenia transformatora, a zmieniający się strumień magnetyczny indukuje napięcie w cewce wtórnej znamy z prawa Faradaya. Tak działa podstawowy falownik.
Cały obwód falownika SPWM użyty w tym projekcie jest przedstawiony poniżej.
Komponenty wymagane do zbudowania falownika SPWM
Sl.No |
Części |
Rodzaj |
Ilość |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Tranzystor |
2 |
4 |
BD140 |
Tranzystor |
2 |
5 |
22pF |
Kondensator |
2 |
6 |
10 tys., 1% |
Rezystor |
1 |
7 |
16 MHz |
Kryształ |
1 |
8 |
0,1 uF |
Kondensator |
3 |
9 |
4.7R |
Rezystor |
2 |
10 |
1N4148 |
Dioda |
2 |
11 |
LM7805 |
Regulator napięcia |
1 |
12 |
200uF, 16V |
Kondensator |
1 |
13 |
47uF, 16V |
Kondensator |
1 |
14 |
2,2 uF, 400 V. |
Kondensator |
1 |
Budowa obwodu falownika SPWM
Na potrzeby tej demonstracji obwód jest konstruowany na Veroboard, za pomocą schematu, Na wyjściu transformatora przez połączenie przepłynie ogromna ilość prądu, więc zworki połączeniowe muszą być jak najgrubsze.
Program Arduino dla falownika SPWM
Zanim przejdziemy dalej i zaczniemy rozumieć kod, wyjaśnijmy podstawy. Z powyższej zasady działania dowiedziałeś się, jak będzie wyglądał sygnał PWM na wyjściu, teraz pozostaje pytanie, jak możemy wykonać tak zmienną falę na pinach wyjściowych Arduino.
Aby uzyskać zmienny sygnał PWM, użyjemy 16-bitowego timera1 z ustawieniem preskalera na 1, co da nam czas 1600/16000000 = 0,1 ms dla każdego zliczania, jeśli weźmiemy pod uwagę półokres sinusoidy, która pasuje dokładnie 100 razy w ciągu pół cyklu fali. Mówiąc prościej, będziemy mogli próbkować naszą falę sinusoidalną 200 razy.
Następnie musimy podzielić naszą falę sinusoidalną na 200 części i obliczyć ich wartości z korelacją amplitudy. Następnie musimy przekonwertować te wartości na wartości liczników timera, mnożąc je przez limit licznika. Na koniec musimy umieścić te wartości w tabeli przeglądowej, aby przekazać je do licznika i otrzymamy naszą falę sinusoidalną.
Aby trochę uprościć sprawę, używam bardzo dobrze napisanego kodu SPWM z GitHub, który jest autorstwa Kurta Huttena.
Kod jest bardzo prosty, nasz program zaczynamy od dodania wymaganych plików nagłówkowych
#include #include
Następnie mamy dwie tabele przeglądowe, z których otrzymamy wartości liczników timera.
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};
Następnie, w sekcji ustawień , inicjalizujemy rejestry sterujące licznikiem czasowym, aby były jasne dla każdego z nich. Aby uzyskać więcej informacji, przejdź do karty katalogowej układu atmega328.
TCCR1A = 0b10100010; / * 10 jasne na meczu, ustawione na DOLE dla kompA. 10 czysto na meczu, ustawione na DOLE dla kompB. 00 10 WGM1 1: 0 dla przebiegu 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 dla przebiegu 15. 001 bez przeskalowania na liczniku. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Włączenie przerwania flagowego. * /
Następnie inicjalizujemy wejściowy rejestr przechwytywania z predefiniowaną wartością 16000, ponieważ pomoże nam to wygenerować dokładnie 200 próbek.
ICR1 = 1600; // Okres dla kryształu 16 MHz, dla częstotliwości przełączania 100 kHz dla 200 podpodziałów na cykl sinusoidalny 50 Hz.
Następnie włączamy globalne przerwania, wywołując funkcję, sei ();
Na koniec ustawiamy pin 9 i 10 Arduino jako wyjście
DDRB = 0b00000110; // Ustaw PB1 i PB2 jako wyjścia.
Oznacza to koniec funkcji konfiguracji.
Sekcja pętli kodu pozostaje pusta, ponieważ jest to program sterowany przerwaniami licznika czasowego.
void loop () {; /*Nic nie robić…. na zawsze!*/}
Następnie zdefiniowaliśmy wektor przepełnienia timera1, ta funkcja przerywania otrzymuje wywołanie, gdy timer1 zostanie przepełniony i wygeneruje przerwanie.
ISR (TIMER1_OVF_vect) {
Następnie deklarujemy niektóre zmienne lokalne jako zmienne statyczne i zaczęliśmy przekazywać wartości do rezystora przechwytującego i porównującego.
static int num; static char trig; // zmieniaj cykl pracy w każdym okresie. OCR1A = lookUp1; OCR1B = lookUp2;
Na koniec wstępnie zwiększamy licznik, aby przekazać kolejne wartości do przechwytywania i porównania rezystorów, co oznacza koniec tego kodu.
if (++ num> = 200) {// Wstępnie zwiększ liczbę, a następnie sprawdź, czy jest poniżej 200. num = 0; // Resetuj num. trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Testowanie obwodu falownika TL494 PWM
Aby przetestować obwód, stosuje się następującą konfigurację.
- Akumulator kwasowo-ołowiowy 12V.
- Transformator z zaczepem 6-0-6 i zaczepem 12-0-12
- Żarówka 100W jako obciążenie
- Multimetr Meco 108B + TRMS
- Multimetr Meco 450B + TRMS
Sygnał wyjściowy z Arduino:
Po przesłaniu kodu. Zmierzyłem wyjściowy sygnał SPWM z dwóch pinów Arduino, który wygląda jak na poniższym obrazku,
Jeśli trochę powiększymy, zobaczymy ciągle zmieniający się cykl pracy fali PWM.
Następnie poniższy obraz przedstawia sygnał wyjściowy z transformatora.
Obwód falownika SPWM w stanie idealnym:
Jak widać na powyższym obrazku, obwód ten pobiera około 13 W podczas pracy idealnie
Napięcie wyjściowe bez obciążenia:
Napięcie wyjściowe obwodu falownika pokazano powyżej, jest to napięcie wychodzące na wyjście bez podłączonego obciążenia.
Pobór mocy wejściowej:
Powyższy obraz przedstawia moc wejściową, którą zużywa układ scalony, gdy podłączone jest obciążenie 40 W.
Pobór mocy wyjściowej:
Powyższy obrazek przedstawia moc wyjściową jaką pobiera ten obwód (obciążenie to 40W żarówka)
Na tym kończymy testową część obwodu. Możesz obejrzeć poniższy film demonstracyjny. Mam nadzieję, że spodobał Ci się ten artykuł i dowiedziałeś się trochę o SPWM i technikach jego wdrażania. Czytaj dalej, ucz się, buduj dalej, a do zobaczenia w następnym projekcie.