Innehållsförteckning:
- Steg 1: Generera Pwm -signalen för 50Hz
- Steg 2: Arduino -program för variabel driftcykel
- Steg 3: Alternerande vid 50Hz Arduino Pins
- Steg 4: Köra en H -bro och filtrera Pwm -signalen
Video: Arduino Sinewave för växelriktare: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
I detta projekt har jag genererat en SPWM (sinusvågspulsbred modulerad) signal från två arduino pwm digitala utgångar.
För att göra ett sådant program måste jag prata om många andra funktioner och egenskaper hos arduino hela projektet inklusive oscilloskopbilder och för olika frekvenser, besök min webbplats:
eprojectszone
Steg 1: Generera Pwm -signalen för 50Hz
För att generera en 50Hz -signal med högre frekvens är det nödvändigt att göra några beräkningar. Frekvenser från arduino kan vara vid 8MHz, men vi vill ha en signal med variabel driftscykel.
För att förstå typerna av variabla arbetscykler för arduino kan du läsa dessa 3 delar av samma inlägg 1, 2 och 3.
Låt oss anta att vår frekvens är 50 Hz, vilket betyder att tidsperioden är 20 ms. Så 10ms är en halvcykelperiod. På dessa 10 ms måste vi ha många pulser med olika driftcykler som börjar med små driftcykler, i mitten av signalen har vi maximala driftscykler och avslutar också med små driftscykler. För att generera en sinusvåg använder vi två stift en för positiv halvcykel och en för negativ halvcykel. I vårt inlägg för detta använder vi stift 5 och 6 som betyder timer 0.
För en smidig signal väljer vi faskorrekt pwm vid en frekvens 31372 Hz-se föregående inlägg. Ett av det största problemet är att hur vi beräknar den nödvändiga driftscykeln för varje puls. Så eftersom vår frekvens är f = 31372Hz är perioden för varje puls T = 1/31372 = 31,8 oss, så antalet pulser för en halvcykel är N = 10ms/31,8us = 314 pulser. Nu för att beräkna arbetscykeln för varje puls har vi y = sinx, men i denna ekvation behöver vi grader så halvcykeln har 180 grader för 314 pulser. För varje puls har vi 180/314 = 0,57deg/puls. Det betyder att för varje puls går vi framåt med 0,57 grader.
y är arbetscykeln och x värdet av positionen i halvdriftscykeln. vid första x är 0, efter att x = 0,57, x = 1,14 och så vidare tills x = 180.
om vi beräknar alla 314 -värdena får vi en array 314 -element (typ "int" beräknas enklare av arduino).
En sådan array är:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Du kan se att arbetscykeln är som en sinusvåg lägst vid första och sista elementet och högst i mitten.
Steg 2: Arduino -program för variabel driftcykel
I bilden ovan har vi variabla driftcykler signaler med värden från matrisen.
Men hur gör man en sådan signal ??
delen av programmet nedan använder avbrott för att ändra värdena för driftcykler
sei (); // aktivera avbrott
}
ISR (TIMER1_COMPA_vect) {// avbrott när timer 1 matchar OCR1A -värdet
if (i> 313 && OK == 0) {// slutvärde från vektor för stift 6
i = 0; // gå till första värdet för vektor (array)
OK = 1; // aktivera stift 5
}
x = sinPWM ; // x ta värdet från vektorn som motsvarar position i (i är noll indexerad) -värdet för driftscykeln
i = i+1; // gå till nästa position
}
Steg 3: Alternerande vid 50Hz Arduino Pins
Eftersom varje stift genererar bara en halv arbetscykel för att göra en full sinusvåg använder vi två stift som alternerar varandra efter exakt 10 msekunder (för 50Hz). Denna ändring av stift görs i slutet av matrisen- efter att vi säger att stift 5 har genererat 314 pulser stängs stiftet av och aktiveras stift 6 vilket gör samma sak men för den negativa driftscykeln.
Eftersom arduino bara kan generera positiva signaler görs negativ driftcykel i h-bryggan- du kan läsa här om det
Programmet för att byta stift:
sei (); // aktivera avbrott
}
ISR (TIMER1_COMPA_vect) {// avbrott när timer 1 matchar OCR1A -värdet
if (i> 313 && OK == 0) {// slutvärde från vektor för stift 6
i = 0; // gå till vektorens första värde
OK = 1; // aktivera stift 5
}
if (i> 313 && OK == 1) {// slutvärde från vektor för stift 5
i = 0; // gå till vektorens första värde
OK = 0; // aktivera stift 6
}
x = sinPWM ; // x ta värdet från vektorn som motsvarar position i (i är noll indexerat)
i = i+1; // gå till nästa position
om (OK == 0) {
OCR0B = 0; // gör stift 5 0
OCR0A = x; // aktivera stift 6 till motsvarande driftscykel
om (OK == 1) {
OCR0A = 0; // gör stift 6 0
OCR0B = x; // aktivera stift 5 till motsvarande driftscykel
}
}
Steg 4: Köra en H -bro och filtrera Pwm -signalen
Signalerna från arduino är styrdelen för växelriktarapplikationer eftersom båda är positiva. För att göra en hel sinusvåg och en praktisk inverter måste vi använda en h -bro och för att rensa pwm ett lågpassfilter.
H-bron presenteras här.
Lågpassfiltret testat med små AC-motorer-här.
Rekommenderad:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Hur man gör 12V DC till 220V AC växelriktare: 4 steg (med bilder)
Hur man gör 12V DC till 220V AC inverter: Hej killar, I denna instruktionsbok kommer jag att instruera dig att göra din egen 12v DC till 220v AC växelriktare med färre antal komponenter. I detta projekt använder jag 555 timer IC i Astable multivibrator -läge för att generera kvadratvåg vid 50Hz frekvens.Mer information
12V till 220V växelriktare med IR2153 med hölje: 4 steg
12V till 220V växelriktare med IR2153 med hölje: I denna handledning visar vi dig hur du gör en enkel IC -baserad inverterkrets. Du kan titta på videon som är inbäddad i detta steg för konstruktion, reservdelslista, kretsschema & testa eller så kan du fortsätta läsa inlägget för ytterligare detaljer
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva