Taajuusmuuttaja 12–220 volttia Arduinon puhtaalla sinillä täydellä ohjelmakoodilla.
teoria
Siniaallon ulostulon saavuttaminen on melko vaikeaa, eikä sitä voida suositella inverttereille, koska elektroninen laitteet eivät yleensä pidä eksponentiaalisesti kasvavista virroista tai jännitteistä. Koska invertterit valmistetaan pääasiassa solid-state elektronisilla laitteilla, sinimuotoinen aaltomuoto eliminoidaan yleensä.
Elektroniset voimalaitteet sinimuotoisilla aalloilla työskennellessä antavat tehottomia tuloksia, koska laitteet yleensä lämmitetään suorakulmaisiin pulsseihin verrattuna.
Siten paras vaihtoehto siniaaltojen toteuttamiseksi taajuusmuuttajaan on PWM, mikä tarkoittaa pulssinleveyden modulaatiota tai PWM.
PWM on eksponentiaalisen aaltomuodon valotuksen parannettu tapa (digitaalinen versio) suhteellisesti vaihtelevien neliöpulssileveyksien avulla, jonka nettoarvo lasketaan tarkalleen valitun eksponentiaalisen aaltomuodon nettoarvon perusteella, tässä "puhdas" arvo viittaa RMS-arvoon. Siksi laskettua PWM: tä viitaten tiettyyn siniaaltoon voidaan käyttää ihanteellisena ekvivalenttina annetun siniaalto-ohjauksen toisinnolle. Lisäksi PWM-moduulit ovat ihanteellisesti yhteensopivia elektronisten sähkölaitteiden (mosfets, BJT, IGBTS) kanssa ja sallivat niiden käytön minimaalisella lämmöllä.
Mikä on SPWM?
Yleisin menetelmä on tuottaa PWM-siniaalto (siniaalto) tai SPWM, soveltamalla useita eksponentiaalisesti muuttuvia signaaleja operaatiovahvistimen tuloon tarvittavaa prosessointia varten. Kahden tulosignaalin joukossa yhden tulisi olla paljon korkeampi taajuudella kuin toisessa.
Kaksi tulosignaalia
Kuten edellisessä osassa mainittiin, menetelmä käsittää kahden eksponentiaalisesti vaihtelevan signaalin toimittamisen operaatiovahvistimen tuloihin.
Tässä operaatiovahvistin on konfiguroitu tyypilliseksi vertailijaksi, joten voidaan olettaa, että operaatiovahvistin alkaa heti verrata näiden kahden päällekkäisen signaalin hetkellisiä jännitetasoja sillä hetkellä, kun ne ilmestyvät tai niitä käytetään sen tuloihin.
Jotta operaatiovahvistin pystyisi oikein toteuttamaan tarvittavan sinimuotoisen PWM: n oikein ulostulossaan, on välttämätöntä, että yhdellä signaaleista on paljon korkeampi taajuus kuin toisella. Hitaampi taajuus tässä on se, minkä tulisi olla näytteen siniaalto, jota PWM: ien pitäisi simuloida (toistaa).
Ihannetapauksessa molempien signaalien tulisi olla sinimuotoisia (yksi korkeammalla taajuudella kuin toinen), mutta sama voidaan kuitenkin toteuttaa sisällyttämällä kolmion aalto (korkea taajuus) ja siniaalto (selektiivinen aalto, jolla on matala taajuus). Kuten seuraavista kuvista voidaan nähdä, suurtaajuussignaali syötetään jatkuvasti operaatiovahvistimen käänteiseen tuloon (-), kun taas toinen hitaampi sinimuotoinen signaali syötetään operaatiovahvistimen invertoimattomaan (+) tuloon. Pahimmassa tapauksessa molemmat signaalit voivat olla kolmion aaltoja, joiden taajuustasot ovat suositeltuja, kuten yllä on kuvattu. Tämä auttaa kuitenkin saavuttamaan kohtuullisen hyvän vastaavuuden PWM-siniaaltoa.
Signaalia, jolla on korkeampi taajuus, kutsutaan kantoaaltosignaaliksi, kun taas hitaampaa näytesignaalia kutsutaan moduloivana tulona.
Luo SPWM kolmion ja jänteen aallolla
Edellä olevaan kuvioon viitaten on mahdollista visualisoida selvästi piirrettyjen pisteiden kautta kahden signaalin erilaiset sattumanvaraiset tai päällekkäiset jännitepisteet tietyn ajanjakson ajan. Vaaka-akseli näyttää aaltomuodon ajanjakson, kun taas pystyakseli näyttää 2 samanaikaisesti käynnissä olevan, päällekkäisen aaltomuodon jännitetasot. Kuvio kertoo meille, kuinka operaatiovahvistin reagoi kahden signaalin näytettyihin samanaikaisiin hetkellisiin jännitetasoihin ja tuottaa vastaavasti muuttuvan sinimuotoisen PWM: n ulostulossaan. Operaatiovahvistin (op-amp) yksinkertaisesti vertaa siniaaltoa heti vaihtavan nopean kolmion aallon jännitetasoja (se voi olla myös kolmion aalto), ja tarkistaa tapaukset, joissa kolmion aaltomuodon jännite voi olla pienempi kuin siniaaltojännite ja vastaa luo heti korkea logiikka poistumistiellesi.
Tätä ylläpidetään niin kauan kuin kolmion potentiaalinen aalto on edelleen pienempi kuin siniaaltopotentiaali, ja kun siniaallon potentiaalin havaitaan olevan pienempi kuin kolmion aallon hetkellinen potentiaali, lähdöt palautuvat minimillä ja kestävät, kunnes tilanne toistuu.
Tämä kahden päällekkäisen aaltomuodon hetkellisten potentiaalitasojen jatkuva vertailu operaatiovahvistimien kahdessa sisääntulossa johtaa vastaavasti muuttuvien PWM-moduulien luomiseen, jotka voivat toistaa tarkasti operaatiovahvistimen invertoimattomaan tuloon sovelletun sinimuotoisen muodon.
Operaatiovahvistin ja SPWM
Seuraava kuva näyttää mallintaminen yllä oleva toimenpide:
Täällä voimme seurata, kuinka se toteutetaan käytännössä, ja näin toimintavahvistin tekee saman (vaikkakin huomattavasti suuremmalla nopeudella, MS).
Operaatio on melko ilmeinen ja osoittaa selvästi, kuinka operaatiovahvistimen tulisi prosessoida PWM-siniaalto vertaamalla kahta samanaikaisesti muuttuvaa signaalia tuloihinsa, kuten edellisissä kappaleissa on kuvattu.
Itse asiassa operaatiovahvistin prosessoi sinimuotoisen PWM: n paljon tarkemmin kuin yllä esitetty simulointi, se voi olla 100 kertaa parempi, luomalla erittäin yhdenmukaisen ja hyvin mitatun PWM: n, joka vastaa toimitettua näytettä. Siniaalto.
Arduino-invertterin kaksi piiriä
osaluettelo
Kaikki 1/4 watin vastukset, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 kpl
• MOSFET IRF540 = 2 kpl
• Työläs UNO = 1
• Muuntaja = 9-0-9 V / 220 V / 120 V.
• Akku = 12 V
Kaikki 1/4 watin vastukset, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 kpl
• MOSFET IRF540 = 2 kpl
• Työläs UNO = 1
• Muuntaja = 9-0-9 V / 220 V / 120 V.
• Akku = 12 V
Suunnittelu on oikeastaan hyvin yksinkertainen, kuten seuraavasta kuvasta näkyy.
Nastat # 8 ja nasta # 9 luovat vuorotellen PWM: n ja kytkevät Mosfetsin samalla PWM: llä.
Mosfet puolestaan indusoi suurvirran SPWM-aaltomuodon muuntajassa akun voimalla pakottaen muuntajan toissijaisen tuottamaan samanlaisen aaltomuodon.
Ehdotettua Arduino-invertteripiiriä voidaan päivittää mihin tahansa parempiin tehotasoihin korvaamalla yksinkertaisesti Mosfets ja muuntaja. Vaihtoehtoisesti voit muuntaa tämän myös täyssiltaaksi tai H-bridge-siniaaltoinvertteriksi.
Arduino Board Power
Aaltomuoto kuvat Arduino SPWM: lle
Koska Arduino tuottaa 5 V: n lähdön, tämä ei ehkä ole ihanteellinen MOS-transistorien suoraan ohjaamiseen.
Siksi on välttämätöntä nostaa strobe-taso 12V: seen, jotta Mosfets toimii oikein lämmittämättä laitteita.
Jotta varmistetaan, että Mosfety ei käynnisty, kun Arduino käynnistyy tai käynnistyy, sinun on lisättävä seuraava viivegeneraattori ja kytkettävä se BC547-transistorien pohjaan. Tämä suojaa Mosfeteja ja estää niitä palamasta virtakytkimen aikana ja Arduino käynnistyessä.
Automaattisen jännitesäätimen lisääminen
Aivan kuten muissakin inverttereissä, tämän mallin lähdössä virta voi nousta vaarallisissa rajoissa, kun akku on ladattu täyteen.
Tämän ohjaamiseksi lisää automaattinen jännitesäädin.
BC547-kollektorit on kytkettävä vasemman BC547-parin kantoihin, jotka on kytketty Arduinoon 10K-vastuksien kautta.
Invertterin toinen versio, joka käyttää sn7404 / k155ln1-sirua
On tärkeää:
Jotta vältetään tahaton kytkeminen päälle ennen Arduinon lataamista, ajastinpiiriin voidaan sisällyttää yksinkertainen viive yllä olevaan malliin, kuten alla on esitetty:
Ohjelman koodi:
/ *
Tämä koodi perustui Swagatam SPWM -koodiin, johon oli tehty muutoksia virheiden poistamiseksi. Käytä tätä koodia kuin mitä tahansa muuta Swagatamin teosta.
Lakiriski 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Tämä on taulukko, jonka SPWM-arvot muuttavat niitä halutessaan
const int sPWMArrayValues = 13; // Tarvitset tätä, koska C ei anna sinulle taulukon pituutta
// tapit
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// Tappi vaihtuu
bool sPWMpin1Status = tosi;
bool sPWMpin2Status = tosi;
tyhjä asennus ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
tyhjä silmukka ()
{
// Nastan 1 silmukka
varten (int i (0); i! = sPWMArrayValues; i ++)
{
if (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
viivytysMikrosekunnit (sPWMArray [i]);
sPWMpin1Status = väärä;
}
muu
{
digitalWrite (sPWMpin1, LOW);
viivytysMikrosekunnit (sPWMArray [i]);
sPWMpin1Status = tosi;
}
}
// Napin 2 silmukka
varten (int i (0); i! = sPWMArrayValues; i ++)
{
if (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
viivytysMikrosekunnit (sPWMArray [i]);
sPWMpin2Status = väärä;
}
muu
{
digitalWrite (sPWMpin2, LOW);
viivytysMikrosekunnit (sPWMArray [i]);
sPWMpin2Status = tosi;
}
}
}
Onnea.