Falownik 12–220 woltów na czystym sinusie Arduino z pełnym kodem programu.
Teoria
Osiągnięcie wyjściowej fali sinusoidalnej jest dość trudne i nie może być zalecane dla falowników, ponieważ elektroniczny urządzenia zwykle nie lubią wykładniczo rosnących prądów lub napięć. Ponieważ falowniki są wytwarzane głównie przy użyciu półprzewodnikowych urządzeń elektronicznych, przebieg sinusoidalny jest zwykle eliminowany.
Elektroniczne urządzenia zasilające pracujące z falami sinusoidalnymi dają nieskuteczne wyniki, ponieważ urządzenia z reguły są podgrzewane w porównaniu z prostokątnymi impulsami.
Zatem najlepszą opcją do zaimplementowania fali sinusoidalnej w falowniku jest PWM, co oznacza modulację szerokości impulsu lub PWM.
PWM to ulepszony sposób (wersja cyfrowa) ekspozycji fali wykładniczej poprzez proporcjonalnie zmieniające się kwadratowe szerokości impulsu, którego wartość netto jest obliczana dokładnie zgodnie z wartością netto wybranego fali wykładniczej, tutaj „czysta” wartość odnosi się do wartości RMS. Dlatego obliczony PWM w odniesieniu do danej fali sinusoidalnej można wykorzystać jako idealny ekwiwalent dla replikacji danej fali sinusoidalnej. Ponadto PWM będą idealnie kompatybilne z elektronicznymi urządzeniami zasilającymi (mosfety, BJT, IGBTS) i umożliwią ich stosowanie przy minimalnym cieple.
Co to jest SPWM?
Najczęstszą metodą jest wytworzenie fali sinusoidalnej PWM (fali sinusoidalnej) lub SPWM poprzez zastosowanie kilku wykładniczo zmiennych sygnałów na wejściu wzmacniacza operacyjnego w celu niezbędnego przetworzenia. Wśród dwóch sygnałów wejściowych jeden powinien mieć znacznie wyższą częstotliwość w porównaniu do drugiego.
Korzystanie z dwóch sygnałów wejściowych
Jak wspomniano w poprzednim rozdziale, procedura obejmuje dostarczenie dwóch wykładniczo zmieniających się sygnałów na wejścia wzmacniacza operacyjnego.
Tutaj wzmacniacz operacyjny jest skonfigurowany jako typowy komparator, więc możemy założyć, że wzmacniacz operacyjny natychmiast zaczyna porównywać chwilowe poziomy napięcia tych dwóch nałożonych sygnałów w momencie ich pojawienia się lub zastosowania na jego wejściach.
Aby wzmacniacz operacyjny poprawnie zrealizował niezbędną sinusoidalną PWM na swoim wyjściu, konieczne jest, aby jeden z sygnałów miał znacznie wyższą częstotliwość niż drugi. Wolniejsza jest tutaj częstotliwość, która powinna być falą sinusoidalną próbki, która powinna być symulowana (replikowana) przez PWM.
Idealnie oba sygnały powinny być sinusoidalne (jeden o wyższej częstotliwości niż drugi), jednak to samo można zrealizować poprzez włączenie fali trójkątnej (wysoka częstotliwość) i sinusoidalnej (fala selektywna o niskiej częstotliwości). Jak widać na poniższych obrazach, sygnał o wysokiej częstotliwości jest niezmiennie doprowadzany do wejścia odwracającego (-) wzmacniacza operacyjnego, podczas gdy inny wolniejszy sygnał sinusoidalny jest dostarczany do wejścia nieodwracającego (+) wzmacniacza operacyjnego. W najgorszym przypadku oba sygnały mogą być falami trójkątnymi o zalecanych poziomach częstotliwości, jak opisano powyżej. Pomoże to jednak osiągnąć rozsądnie dobry odpowiednik fali sinusoidalnej PWM.
Sygnał o wyższej częstotliwości nazywany jest sygnałem nośnym, natomiast wolniejszy sygnał próbny nazywa się wejściem modulującym.
Utwórz SPWM za pomocą fali trójkątnej i ścięgien
Odnosząc się do powyższej figury, możliwe jest wyraźne zwizualizowanie poprzez wykreślone punkty różnych zbieżnych lub nakładających się punktów napięcia dwóch sygnałów dla danego okresu czasu. Oś pozioma pokazuje okres czasu kształtu fali, podczas gdy oś pionowa pokazuje poziomy napięcia 2 jednocześnie pracujących, nałożony kształt fali. Ta liczba informuje nas, w jaki sposób wzmacniacz operacyjny zareaguje na pokazane chwilowe poziomy napięcia dwóch sygnałów i wytworzy odpowiednio zmieniającą się sinusoidalną PWM na wyjściu. Wzmacniacz operacyjny (wzmacniacz operacyjny) po prostu porównuje, poziomy napięcia szybkiej fali trójkątnej natychmiast zmieniają falę sinusoidalną (może to być również fala trójkątna) i sprawdza przypadki, w których napięcie fali trójkątnej może być niższe niż napięcie fali sinusoidalnej i odpowiada natychmiast stwórz wysoką logikę na swoich wyjściach.
Utrzymuje się to tak długo, jak długo fala potencjalna trójkąta będzie nadal niższa niż potencjał fali sinusoidalnej, a moment, w którym wykryje się potencjał fali sinusoidalnej, jest niższy niż chwilowy potencjał fali trójkąta, wyjścia wracają z minimum i wytrzymują, aż sytuacja się powtórzy.
To ciągłe porównanie chwilowych poziomów potencjału dwóch nałożonych przebiegów na dwóch wejściach wzmacniaczy operacyjnych prowadzi do stworzenia odpowiednio zmieniających się PWM, które mogą dokładnie powtarzać sinusoidalny kształt przyłożony do nieodwracającego wejścia wzmacniacza operacyjnego.
Wzmacniacz operacyjny i SPWM
Poniższy rysunek pokazuje modelowanie powyższa operacja:
Tutaj możemy zaobserwować, jak jest on implementowany w praktyce i tak zrobi to wzmacniacz operacyjny (choć przy znacznie większej prędkości, w MS).
Działanie jest dość oczywiste i wyraźnie pokazuje, w jaki sposób wzmacniacz operacyjny powinien przetwarzać falę sinusoidalną PWM poprzez porównanie dwóch jednocześnie zmieniających się sygnałów na swoich wejściach, jak opisano w poprzednich sekcjach.
W rzeczywistości wzmacniacz operacyjny będzie przetwarzał sinusoidalny PWM znacznie dokładniej niż pokazana powyżej symulacja, może być 100 razy lepszy, tworząc wyjątkowo jednolity i dobrze zmierzony PWM, który pasuje do dostarczonej próbki. Fala sinusoidalna.
Falownik Arduino dwa obwody
lista części
Wszystkie oporniki 1/4 W, 5% CFR
• 10 K = 4
• 1K = 2
• BC547 = 4 szt
• MOSFETY IRF540 = 2 szt
• Arduino UNO = 1
• Transformator = 9-0-9 V / 220 V / 120 V.
• Akumulator = 12V
Wszystkie oporniki 1/4 W, 5% CFR
• 10 K = 4
• 1K = 2
• BC547 = 4 szt
• MOSFETY IRF540 = 2 szt
• Arduino UNO = 1
• Transformator = 9-0-9 V / 220 V / 120 V.
• Akumulator = 12V
Projekt jest w rzeczywistości bardzo prosty, jak pokazano na poniższym rysunku.
Pin nr 8 i pin nr 9 tworzą PWM na przemian i przełączają Mosfety z tym samym PWM.
Mosfet z kolei indukuje kształt fali SPWM o wysokim natężeniu na transformatorze, wykorzystując moc akumulatora, zmuszając wtórne transformator do wytworzenia identycznego kształtu fali.
Proponowany obwód falownika Arduino można zmodernizować do dowolnego preferowanego wyższego poziomu mocy, po prostu wymieniając odpowiednio Mosfety i transformator. Alternatywnie można również przekształcić to w falownik sinusoidalny z pełnym mostkiem lub H
Moc płyty Arduino
Obrazy kształtu fali dla Arduino SPWM
Ponieważ Arduino będzie wytwarzać napięcie 5 V, może to nie być idealne do bezpośredniego sterowania tranzystorów MOS.
Dlatego konieczne jest podniesienie poziomu stroboskopu do 12V, aby Mosfety działały poprawnie bez podgrzewania urządzeń.
Aby mieć pewność, że Mosfety nie uruchomi się podczas uruchamiania lub uruchamiania Arduino, należy dodać następujący generator opóźnień i podłączyć go do podstawy tranzystorów BC547. To ochroni Mosfety i zapobiegnie ich przepaleniu podczas przełączania zasilania i uruchamiania Arduino.
Dodanie automatycznego regulatora napięcia
Podobnie jak w każdym innym falowniku, na wyjściu tej konstrukcji prąd może wzrosnąć do niebezpiecznych granic, gdy akumulator jest w pełni naładowany.
Aby to kontrolować, dodaj automatyczny regulator napięcia.
Kolektory BC547 muszą być podłączone do podstaw lewej pary BC547, które są podłączone do Arduino za pomocą rezystorów 10K.
Druga wersja falownika wykorzystująca układ sn7404 / k155ln1
Ważne:
Aby uniknąć przypadkowego włączenia przed załadowaniem Arduino, w powyższym projekcie można uwzględnić proste opóźnienie w obwodzie timera, jak pokazano poniżej:
Kod programu:
/ *
Ten kod został oparty na kodzie Swagatam SPWM ze zmianami wprowadzonymi w celu usunięcia błędów. Użyj tego kodu, tak jak innych dzieł Swagatam.
Ryzyko Atton 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // To jest tablica z wartościami SPWM zmieniającymi je do woli
const int sPWMArrayValues = 13; // Potrzebujesz tego, ponieważ C nie podaje długości tablicy
// Piny
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// Pin przełącza
bool sPWMpin1Status = true;
bool sPWMpin2Status = true;
void setup ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
void loop ()
{
// Pętla dla pinu 1
for (int i (0); i! = sPWMArrayValues; i ++)
{
if (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = false;
}
jeszcze
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = true;
}
}
// Pętla dla pinu 2
for (int i (0); i! = sPWMArrayValues; i ++)
{
if (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = false;
}
jeszcze
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = true;
}
}
}
Powodzenia