Indholdsfortegnelse:
- Trin 1: Generering af Pwm -signalet til 50Hz
- Trin 2: Arduino -program til variabel driftscyklus
- Trin 3: Skiftevis ved 50Hz Arduino Pins
- Trin 4: Kørsel på en H -bro og filtrering af Pwm -signalet
Video: Arduino Sinewave til invertere: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I dette projekt har jeg genereret et SPWM (sinusbølgepuls bred moduleret) signal fra to arduino pwm digitale udgange.
Fordi for at lave et sådant program, skal jeg tale om mange andre funktioner og egenskaber ved arduinoen det fulde projekt inklusive oscilloskopbilleder og for forskellige frekvenser, besøg mit websted:
eprojectszone
Trin 1: Generering af Pwm -signalet til 50Hz
For at generere et 50Hz signal ved højere frekvens er det nødvendigt at foretage nogle beregninger. Frekvenser fra arduino kan være ved 8MHz, men vi ønsker et signal med variabel driftscyklus.
For at forstå typerne af arduino -cykler med variabel drift kan du læse disse 3 dele af det samme indlæg 1, 2 og 3.
Lad os antage, at vores frekvens er 50 Hz, hvilket betyder, at tidsperioden er 20 ms. Så 10ms er en halvcyklusperiode. I disse 10 ms skal vi have mange impulser med forskellige driftscyklusser, der starter med små driftscyklusser, i midten af signalet har vi maksimale driftscyklusser og slutter også med små driftscyklusser. For at generere en sinusbølge vil vi bruge to ben en til positiv halvcyklus og en for negativ halvcyklus. I vores indlæg til dette bruger vi ben 5 og 6, der betyder Timer 0.
For et glat signal vælger vi fasekorrekt pwm med en frekvens 31372 Hz-se forrige indlæg. Et af de største problemer er, hvordan vi beregner den nødvendige driftscyklus for hver puls. Så fordi vores frekvens er f = 31372Hz, er perioden for hver puls T = 1/31372 = 31,8 os, så antallet af pulser for en halv cyklus er N = 10ms/31.8us = 314 pulser. For nu at beregne arbejdscyklussen for hver puls har vi y = sinx, men i denne ligning har vi brug for grader, så halvcyklus har 180 grader for 314 pulser. For hver puls har vi 180/314 = 0,57deg/puls. Det betyder, at vi for hver puls bevæger os fremad med 0,57 grader.
y er driftscyklussen og x værdien af positionen i den halve driftscyklus. ved første x er 0, efter at x = 0,57, x = 1,14 og så videre indtil x = 180.
hvis vi beregner alle de 314 værdier, får vi en matrix 314 elementer (type "int" beregnes lettere af arduino).
Sådan en matrix er:
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, at som en sinusbølge er arbejdscyklussen lavest ved første og sidste element og højest i midten.
Trin 2: Arduino -program til variabel driftscyklus
I billedet ovenfor har vi variable driftscyklussignaler med værdier fra arrayet.
Men hvordan laver man sådan et signal ??
delen af programmet nedenfor bruger afbrydelser til at ændre værdierne for driftscyklusser
sei (); // aktiver afbrydelser
}
ISR (TIMER1_COMPA_vect) {// afbrydelse, når timer 1 matcher OCR1A -værdi
hvis (i> 313 && OK == 0) {// slutværdi fra vektor for pin 6
i = 0; // gå til første værdi af vektor (array)
OK = 1; // aktiver pin 5
}
x = sinPWM ; // x tage værdien fra vektor svarende til position i (i er nul indekseret) -værdi af driftscyklus
i = i+1; // gå til den næste position
}
Trin 3: Skiftevis ved 50Hz Arduino Pins
Fordi hver stift kun genererer en halv driftscyklus for at lave en fuld sinusbølge, bruger vi to stifter, der skifter efter hinanden efter nøjagtige 10 msekunder (i 50Hz). Denne ændring af stifter foretages i slutningen af arrayet- efter lad os sige, at pin 5 har genereret 314 pulser, er denne pin slukket og aktiveret pin 6, hvilket gør det samme, men for den negative driftscyklus.
Fordi arduino kun kan generere positive signaler, laves negativ driftscyklus i h-broen- du kan læse her om det
Programmet til skift af stifter:
sei (); // aktiver afbrydelser
}
ISR (TIMER1_COMPA_vect) {// afbrydelse, når timer 1 matcher OCR1A -værdi
hvis (i> 313 && OK == 0) {// slutværdi fra vektor for pin 6
i = 0; // gå til vektorens første værdi
OK = 1; // aktiver pin 5
}
hvis (i> 313 && OK == 1) {// slutværdi fra vektor for pin 5
i = 0; // gå til vektorens første værdi
OK = 0; // aktiver pin 6
}
x = sinPWM ; // x tage værdien fra vektor svarende til position i (i er nul indekseret)
i = i+1; // gå til den næste position
hvis (OK == 0) {
OCR0B = 0; // lav pin 5 0
OCR0A = x; // aktiver pin 6 til den tilsvarende driftscyklus
hvis (OK == 1) {
OCR0A = 0; // lav pin 6 0
OCR0B = x; // aktiver pin 5 til den tilsvarende driftscyklus
}
}
Trin 4: Kørsel på en H -bro og filtrering af Pwm -signalet
Signalerne fra arduino er kontroldelen for inverter -applikationer, fordi begge er positive. For at lave en fuld sinusbølge og en praktisk inverter skal vi bruge en h -bro og rydde pwm et lavpasfilter.
H-broen præsenteres her.
Lavpasfilteret testet med små AC-motorer-her.
Anbefalede:
LoRa 3 km til 8 km trådløs kommunikation med lavpris E32 (sx1278/sx1276) enhed til Arduino, Esp8266 eller Esp32: 15 trin
LoRa 3 til 8 km trådløs kommunikation med lavpris E32 (sx1278/sx1276) enhed til Arduino, Esp8266 eller Esp32: Jeg opretter et bibliotek til at styre EBYTE E32 baseret på Semtech -serien af LoRa -enheder, meget kraftfuld, enkel og billig enhed.Du kan finde 3Km version her, 8Km version herDe kan arbejde over en afstand på 3000m til 8000m, og de har en masse funktioner og
LoRa Messenger til to enheder til distancer Op til 8 km: 7 trin
LoRa Messenger til to enheder til afstande Op til 8 km: Tilslut projektet til din bærbare computer eller telefon, og chat derefter mellem enhederne uden internet eller SMS ved hjælp af bare LoRa.Hey, hvad sker der gutter? Akarsh her fra CETech. I dag skal vi lave et projekt, der kan forbindes til din smartphone eller en hvilken som helst
1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin
1A til 40A Current BOOST-konverter til op til 1000W DC-motor: Hej! I denne video lærer du, hvordan du laver et strømforstærkerkredsløb til dine høj ampere DC-motorer op til 1000W og 40 ampere med transistorer og en center-tap-transformer. Selvom, strømmen ved udgangen er meget høj, men spændingen bliver r
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: Min plan var enkel. Jeg ville skære en væg-drevet LED-lysstreng i stykker og derefter genkoble den til at køre 12 volt. Alternativet var at bruge en strømomformer, men vi ved alle, at de er frygtelig ineffektive, ikke? Ret? Eller er de det?
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): Dette viser dig, hvordan du laver en 12v til USB (5v) adapter. Den mest oplagte anvendelse af dette er til 12v biladaptere, men hvor som helst du har 12v kan du bruge det! Hvis du har brug for 5v til andet end USB, skal du blot springe trinene om tilføjelse af USB -porte over