Omvormer 12-220 volt op Arduino pure sinus met volledige programmacode.
Theorie
Het bereiken van een sinusgolfoutput is vrij moeilijk en kan niet worden aanbevolen voor omvormers, omdat elektronisch apparaten houden meestal niet van exponentieel toenemende stromen of spanningen. Aangezien omvormers voornamelijk worden vervaardigd met behulp van elektronische apparaten in vaste toestand, wordt een sinusvormige golfvorm meestal geëlimineerd.
Elektronische stroomtoestellen bij het werken met sinusoïdale golven geven ineffectieve resultaten, omdat apparaten in de regel worden verwarmd in vergelijking met rechthoekige pulsen.
De beste optie voor het implementeren van een sinusgolf op een omvormer is dus PWM, wat pulsbreedtemodulatie of PWM betekent.
PWM is een verbeterde manier (digitale versie) van exponentiële golfvormblootstelling door proportioneel variërende vierkante pulsbreedten, waarvan de nettowaarde exact wordt berekend volgens de nettowaarde van de geselecteerde exponentiële golfvorm, hier verwijst de "pure" waarde naar de RMS-waarde. Daarom kan de berekende PWM met verwijzing naar een bepaalde sinusgolf worden gebruikt als een ideaal equivalent voor replicatie van een bepaalde sinusgolf. Bovendien zullen PWM's ideaal compatibel zijn met elektronische stroomapparaten (mosfets, BJT's, IGBTS) en hun gebruik met minimale warmte mogelijk maken.
Wat is SPWM?
De meest gebruikelijke methode is om een PWM-sinus (sinusgolf) of SPWM te produceren door verschillende exponentieel variabele signalen toe te passen op de ingang van een operationele versterker voor de noodzakelijke verwerking. Van de twee ingangssignalen moet de ene veel hoger zijn in vergelijking met de andere.
Twee ingangssignalen gebruiken
Zoals vermeld in de vorige paragraaf, behelst de procedure het leveren van twee exponentieel variërende signalen aan de ingangen van de operationele versterker.
Hier is de operationele versterker geconfigureerd als een typische comparator, dus we kunnen aannemen dat de operationele versterker onmiddellijk begint met het vergelijken van de momentane spanningsniveaus van deze twee gesuperponeerde signalen op het moment dat ze verschijnen of worden toegepast op de ingangen.
Om ervoor te zorgen dat de operationele versterker de benodigde sinusoïdale PWM correct implementeert aan de uitgang, is het noodzakelijk dat een van de signalen een veel hogere frequentie heeft dan de andere. De langzamere frequentie is hier de sinusgolf van het monster, die door PWM's moet worden gesimuleerd (gerepliceerd).
In het ideale geval zouden beide signalen sinusvormig moeten zijn (de ene met een hogere frequentie dan de andere), maar hetzelfde kan worden gerealiseerd door een driehoekige golf (hoge frequentie) en een sinusgolf (selectieve golf met een lage frequentie) op te nemen. Zoals te zien is in de volgende afbeeldingen, wordt het hoogfrequente signaal steevast toegevoerd aan de inverterende ingang (-) van de operationele versterker, terwijl een ander langzamer sinusvormig signaal wordt geleverd aan de niet-inverterende (+) ingang van de operationele versterker. In het ergste geval kunnen beide signalen driehoekige golven zijn met aanbevolen frequentieniveaus, zoals hierboven beschreven. Dit zal echter helpen om een redelijk goed equivalent van PWM-sinusgolf te bereiken.
Een signaal met een hogere frequentie wordt een draaggolfsignaal genoemd, terwijl een langzamer bemonsteringssignaal een modulerende ingang wordt genoemd.
Maak SPWM met een driehoekige en peesgolf
Verwijzend naar de bovenstaande figuur, is het mogelijk om door de geplotte punten duidelijk de verschillende samenvallende of overlappende spanningspunten van de twee signalen gedurende een bepaalde tijdsperiode te visualiseren. De horizontale as toont de tijdsperiode van de golfvorm, terwijl de verticale as de spanningsniveaus van 2 gelijktijdig lopende, de gesuperponeerde golfvorm, weergeeft. De afbeelding informeert ons hoe de operationele versterker zal reageren op de getoonde samenvallende momentane spanningsniveaus van de twee signalen en een overeenkomstig veranderende sinusvormige PWM aan zijn uitgang zal produceren. Een operationele versterker (op-amp) vergelijkt eenvoudig de spanningsniveaus van een snelle driehoeksgolf die onmiddellijk een sinusgolf verandert (het kan ook een driehoeksgolf zijn) en controleert op gevallen waarin de spanning van de driehoeksgolfvorm lager kan zijn dan de spanning van de sinusgolf en reageert creëer onmiddellijk een hoge logica op uw uitgangen.
Dit wordt gehandhaafd zolang de potentiële golf van de driehoek lager blijft dan de potentiaal van de sinusgolf, en het moment waarop de potentiaal van de sinusgolf wordt gedetecteerd lager is dan de momentane potentiaal van de driehoek, de uitgangen keren met een minimum terug en weerstaan totdat de situatie zich herhaalt.
Deze continue vergelijking van de momentane potentiaalniveaus van twee gesuperponeerde golfvormen aan de twee ingangen van de operationele versterkers leidt tot de creatie van overeenkomstig veranderende PWM's, die de sinusvormige vorm die wordt toegepast op de niet-inverterende ingang van de operationele versterker nauwkeurig kan herhalen.
Operationele versterker en SPWM
De volgende afbeelding laat zien modelleren de bovenstaande operatie:
Hier kunnen we zien hoe het in de praktijk wordt geïmplementeerd, en zo zal de operationele versterker hetzelfde doen (hoewel met een veel hogere snelheid, in de MS).
De bediening is vrij duidelijk en laat duidelijk zien hoe de operationele versterker de PWM-sinusgolf moet verwerken door twee gelijktijdig veranderende signalen aan de ingangen te vergelijken, zoals beschreven in de vorige secties.
In feite zal de operationele versterker de sinusvormige PWM veel nauwkeuriger verwerken dan de hierboven getoonde simulatie, deze kan 100 keer beter zijn, waardoor een extreem uniforme en goed gemeten PWM wordt gecreëerd die overeenkomt met het geleverde monster. Sinusgolf.
Arduino-omvormer twee circuits
onderdelenlijst
Alle 1/4 Watt weerstanden, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 stuks
• MOSFET's IRF540 = 2 stuks
• Arduino UNO = 1
• Transformator = 9-0-9V / 220V / 120V.
• Batterij = 12V
Alle 1/4 Watt weerstanden, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 stuks
• MOSFET's IRF540 = 2 stuks
• Arduino UNO = 1
• Transformator = 9-0-9V / 220V / 120V.
• Batterij = 12V
Het ontwerp is eigenlijk heel eenvoudig, zoals weergegeven in de volgende afbeelding.
Pin # 8 en pin # 9 maken afwisselend PWM en wisselen Mosfets met dezelfde PWM.
Mosfet induceert op zijn beurt een zeer huidige SPWM-golfvorm op de transformator, gebruikmakend van de kracht van de batterij, waardoor de secundaire van de transformator gedwongen wordt een identieke golfvorm te produceren.
Het voorgestelde Arduino-invertercircuit kan worden geüpgraded naar elk gewenst hoger vermogensniveau door respectievelijk de Mosfets en de transformator te vervangen, als alternatief kunt u dit ook omzetten in een volledige brug of H-brug sinusomvormer
Arduino Board Power
Golfvormafbeeldingen voor Arduino SPWM
Aangezien de Arduino een 5V-uitvoer zal produceren, is dit mogelijk niet ideaal voor het direct besturen van MOS-transistors.
Daarom is het noodzakelijk om het stroboscoopniveau te verhogen tot 12V, zodat de Mosfets correct werken zonder de apparaten te verwarmen.
Om ervoor te zorgen dat Mosfety niet start wanneer Arduino start of start, moet je de volgende vertragingsgenerator toevoegen en deze aansluiten op de basis van de BC547-transistors. Dit zal Mosfets beschermen en voorkomen dat ze uitbranden tijdens het schakelen en wanneer Arduino opstart.
Een automatische spanningsregelaar toevoegen
Net als bij elke andere omvormer kan de stroom aan de uitgang van dit ontwerp tot onveilige limieten oplopen als de batterij volledig is opgeladen.
Om dit te regelen, voegt u een automatische spanningsregelaar toe.
De BC547-collectoren moeten worden aangesloten op de bases van het linker BC547-paar, die via 10K-weerstanden op de Arduino zijn aangesloten.
De tweede versie van de omvormer met de sn7404 / k155ln1-chip
Belangrijk:
Om onbedoeld inschakelen te voorkomen voordat de Arduino wordt geladen, kan een eenvoudige vertraging in het timercircuit worden opgenomen in het bovenstaande ontwerp, zoals hieronder weergegeven:
Programmacode:
/ *
Deze code was gebaseerd op Swagatam SPWM-code met wijzigingen aangebracht om fouten te verwijderen. Gebruik deze code zoals u andere werken van Swagatam zou gebruiken.
Atton risico 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Dit is de array met de SPWM-waarden die u naar believen kunt wijzigen
const int sPWMArrayValues = 13; // Je hebt dit nodig omdat C je niet de lengte van een array geeft
// De pinnen
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// De pin schakelt
bool sPWMpin1Status = waar;
bool sPWMpin2Status = waar;
ongeldige setup ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
leegte lus ()
{
// Lus voor pin 1
voor (int i (0); i! = sPWMArrayValues; i ++)
{
als (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = false;
}
anders
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = waar;
}
}
// Lus voor pin 2
voor (int i (0); i! = sPWMArrayValues; i ++)
{
als (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = false;
}
anders
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = waar;
}
}
}
Veel succes.