Inverter 12 -220 volti na Arduino čistom sinusu s potpunim programskim kodom.
teorija
Postizanje sinusnog izlaza je prilično teško i ne može se preporučiti za pretvarače, jer elektronički uređaji obično ne vole eksponencijalno povećanje struje ili napona. Budući da se pretvarači uglavnom proizvode korištenjem elektroničkih uređaja čvrstog stanja, obično se eliminira sinusni valni oblik.
Elektronski uređaji za napajanje tijekom rada sa sinusnim valovima daju neučinkovite rezultate, budući da se uređaji u pravilu zagrijavaju u usporedbi s pravokutnim impulsima.
Stoga je najbolja opcija za implementaciju sinusnog vala na pretvaraču PWM, što znači modulaciju širine impulsa ili PWM.
PWM je poboljšani način (digitalna verzija) ekspozicijskog ekspozicijskog valnog izlaganja kroz proporcionalno različite širine kvadratnih impulsa, čija se neto vrijednost izračunava točno prema neto vrijednosti odabranog eksponencijalnog oblika vala, ovdje se "čista" vrijednost odnosi na vrijednost RMS. Stoga se izračunati PWM s obzirom na zadani sinusni val može upotrijebiti kao idealni ekvivalent za replikaciju zadanog sinusnog vala. Pored toga, PWM-ovi će biti idealno kompatibilni s elektroničkim napajanjem (mosfets, BJTs, IGBTS) i omogućavaju njihovu upotrebu s minimalnom toplinom.
Što je SPWM?
Najčešća metoda je proizvesti PWM sinewaver (sinusni val) ili SPWM, primjenom nekoliko eksponencijalno varijabilnih signala na ulaz operacijskog pojačala za potrebnu obradu. Među dva ulazna signala, jedan bi trebao biti znatno veći u učestalosti u odnosu na drugi.
Koristeći dva ulazna signala
Kao što je spomenuto u prethodnom odjeljku, postupak uključuje isporuku dva eksponencijalno različita signala na ulaze operacijskog pojačala.
Ovdje je operativno pojačalo konfigurirano kao tipični komparator, pa možemo pretpostaviti da će operativno pojačalo odmah početi uspoređivati trenutne razine napona ova dva nanesena signala u trenutku kada se pojave ili primijene na njegove ulaze.
Da bi operativno pojačalo ispravno implementiralo potrebnu sinusoidnu PWM na svom izlazu, potrebno je da jedan od signala ima mnogo veću frekvenciju od drugog. Pri tome je sporija učestalost koja bi trebala biti sinusni val uzorka koji bi trebao biti simuliran (preslikan) PWM-ovima.
U idealnom slučaju, oba bi signala trebala biti sinusoidna (jedan s većom frekvencijom od drugog), međutim isti se može postići uključivanjem trokutastog vala (visoke frekvencije) i sinusnog vala (selektivni val s niskom frekvencijom). Kao što se može vidjeti na slijedećim slikama, visokofrekventni signal se uvijek dovodi do invertirajućeg ulaza (-) operativnog pojačala, dok se drugi sporiji sinusoidni signal dovodi na neinvertirajući (+) ulaz operacijskog pojačala. U najgorem slučaju oba signala mogu biti trokutasti valovi s preporučenom razinom frekvencije, kao što je gore opisano. Međutim, ovo će pomoći u postizanju relativno dobrog ekvivalenta svinju PWM.
Signal s višom frekvencijom naziva se nosač signala, dok se sporiji signal uzorka naziva modulacijski ulaz.
Stvorite SPWM trokutastim i tetivnim valom
S obzirom na gornju sliku, kroz crtane točke moguće je jasno prikazati različite podudarne ili preklapajuće točke napona dva signala za određeno vremensko razdoblje. Vodoravna os prikazuje vremensko razdoblje valnog oblika, dok vertikalna os pokazuje razine napona od 2 istodobno tekućeg, nalijepljenog valnog oblika. Slika nas informira kako će operativno pojačalo reagirati na prikazane trenutne trenutne razine napona dvaju signala i proizvesti odgovarajuće mijenjajući sinusoidni PWM na njegovom izlazu. Operativno pojačalo (op-pojačalo) jednostavno uspoređuje naponske razine brzog trokutastog vala koji trenutačno mijenja sinusni val (može biti i trokutasti val) i provjerava slučajeve u kojima napon oblika valnog trokuta može biti manji od napona sinusnog vala i odgovara odmah stvorite visoku logiku na svojim izlascima.
To se održava sve dok je potencijalni val trokuta i dalje niži od potencijala sinusnog vala, a onog trenutka kada se utvrdi da je potencijal sinusnog vala manji od trenutnog potencijala vala trokuta, izlazi se vraćaju minimalno i podnose dok se situacija ne ponovi.
Ova kontinuirana usporedba trenutačnih potencijalnih razina dvaju obloženih valnih oblika na dva ulaza operativnih pojačala dovodi do stvaranja odgovarajuće promjenjivih PWM-ova, koji mogu točno ponoviti sinusoidni oblik primijenjen na neinvertirani ulaz operacijskog pojačala.
Operativno pojačalo i SPWM
Sljedeća slika prikazuje manekenstvo gore navedeni postupak:
Ovdje možemo promatrati kako se to provodi u praksi, a tako će i operativno pojačalo postupiti isto (iako s mnogo većom brzinom, u MS-u).
Postupak je sasvim očit i jasno pokazuje kako bi operativno pojačalo trebalo obraditi sinusni val PWM usporedbom dva istodobno promijenjena signala na njegovim ulazima, kao što je opisano u prethodnim odjeljcima.
U stvari, operativno pojačalo će sinusoidni PWM obraditi mnogo preciznije od gore prikazane simulacije, može biti 100 puta bolje, stvarajući izuzetno ujednačen i dobro odmjeren PWM koji odgovara isporučenom uzorku. Sinusni val.
Arduino inverter dva kruga
popis dijelova
Svi otpornici 1/4 W, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4kom
• MOSFETI IRF540 = 2kom
• Težak UNO = 1
• Transformator = 9-0-9V / 220V / 120V.
• Baterija = 12V
Svi otpornici 1/4 W, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4kom
• MOSFETI IRF540 = 2kom
• Težak UNO = 1
• Transformator = 9-0-9V / 220V / 120V.
• Baterija = 12V
Dizajn je zapravo vrlo jednostavan, kao što je prikazano na sljedećoj slici.
Pin # 8 i pin # 9 kreirajte naizmjenično PWM i prebacite Mosfets s istim PWM-om.
Mosfet, pak, inducira visoko trenutni SPWM valni oblik na transformatoru, koristeći snagu baterije, prisiljavajući sekundarni transformator da stvori identičan valni oblik.
Predloženi Arduino krug pretvarača može se nadograditi na bilo koju preferiranu višu razinu snage jednostavnom zamjenom Mosfets-a i transformatora, odnosno kao alternativa, možete ga pretvoriti u sinusni invertor punog mosta ili H-mosta
Snaga Arduino ploče
Slike talasa za Arduino SPWM
Budući da će Arduino proizvesti izlaz od 5 V, ovo možda nije idealno za izravno upravljanje MOS tranzistorima.
Stoga je potrebno podići razinu stroba na 12V kako bi Mosfetovi ispravno radili bez grijanja uređaja.
Kako biste bili sigurni da se Mosfety ne pokreće kad se pokrene ili pokrene Arduino, morate dodati sljedeći generator kašnjenja i spojiti ga na bazu tranzistora BC547. To će zaštititi Mosfetse i spriječiti njihovo izgaranje tijekom prekidača napajanja i kada se Arduino podigne.
Dodavanje automatskog regulatora napona
Kao i na bilo kojem drugom pretvaraču, na izlazu ovog dizajna struja se može povećati do nesigurnih granica kada je baterija potpuno napunjena.
Da biste to kontrolirali, dodajte automatski regulator napona.
BC547 kolektori moraju biti spojeni na baze lijevog para BC547, koji su na Arduino povezani s 10K otpornicima.
Druga verzija pretvarača koja koristi čip sn7404 / k155ln1
Važno je:
Da biste izbjegli slučajno uključivanje prije utovara Arduino-a, u gornji dizajn može biti uključeno jednostavno kašnjenje u vremenskom krugu, kao što je prikazano u nastavku:
Programski kod:
/ *
Ovaj se kod temeljio na SWWM kodu Swagatam s promjenama koje su učinjene radi uklanjanja pogrešaka. Upotrijebite ovaj kôd kao što biste koristili bilo koja druga djela Swagatama.
Attonski rizik 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Ovo je niz sa SPWM vrijednostima koje ih mijenja po volji
const int sPWMArrayValues = 13; // Ovo vam treba jer vam C ne daje dužinu niza
// Igle
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// Pin preklopke
bool sPWMpin1Status = istina;
bool sPWMpin2Status = istina;
postavljanje praznine ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
void petlja ()
{
// Petlja za pin 1
for (int i (0); i! = sPWMArrayValues; i ++)
{
ako (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = netočno;
}
drugo
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = istina;
}
}
// Petlja za pin 2
for (int i (0); i! = sPWMArrayValues; i ++)
{
ako (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = netočno;
}
drugo
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = istina;
}
}
}
Sretno.