Kazalo:
- 1. korak: Ustvarjanje Pwm signala za 50Hz
- 2. korak: Arduino program za cikel spremenljive obremenitve
- Korak 3: Izmenjava pri 50Hz Arduino zatiči
- 4. korak: Vožnja po H mostu in filtriranje Pwm signala
Video: Arduino Sinewave za pretvornike: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
V tem projektu sem iz dveh arduino pwm digitalnih izhodov ustvaril signal SPWM (sinusno valno široko moduliran impulz).
Ker za izdelavo takega programa moram govoriti o številnih drugih funkcijah in lastnostih arduina, celotnem projektu, vključno s slikami osciloskopa, za različne frekvence obiščite mojo spletno stran:
eprojectszone
1. korak: Ustvarjanje Pwm signala za 50Hz
Za generiranje 50Hz signala pri višji frekvenci je potrebno narediti nekaj izračunov. Frekvence iz arduina so lahko pri 8MHz, vendar želimo signal s spremenljivim delovnim ciklom.
Če želite razumeti vrste spremenljivih delovnih ciklov arduina, si lahko preberete te 3 dele iste objave 1, 2 in 3.
Predpostavimo, da je naša frekvenca 50Hz, kar pomeni, da je časovno obdobje 20 ms. Torej je 10 ms obdobje pol cikla. V teh 10 ms moramo imeti veliko impulzov z različnimi delovnimi cikli, ki se začnejo z majhnimi delovnimi cikli, sredi signala imamo največje delovne cikle in končamo tudi z majhnimi delovnimi cikli. Za generiranje sinusnega vala bomo uporabili dva zatiča, enega za pozitivni polcikel in eden za negativni polcikel. V naši objavi za to uporabljamo zatiče 5 in 6, kar pomeni Timer 0.
Za nemoten signal izberemo fazno pravilen pwm pri frekvenci 31372 Hz-glej prejšnjo objavo. Eden največjih težav je, da izračunamo potrebni obratovalni cikel za vsak impulz. Ker je naša frekvenca f = 31372Hz, je obdobje za vsak impulz T = 1/31372 = 31.8 us, zato je število impulzov za pol cikla N = 10ms/31.8us = 314 impulzov. Zdaj za izračun obratovalnega cikla za vsak impulz imamo y = sinx, vendar v tej enačbi potrebujemo stopinje, tako da ima polcikel 180 stopinj za 314 impulzov. Za vsak impulz imamo 180/314 = 0,57 stopinj/impulz. To pomeni, da se za vsak impulz premaknemo za 0,57 stopinje naprej.
y je delovni cikel in x vrednost položaja v polovičnem delovnem ciklu. sprva je x 0, potem pa je x = 0,57, x = 1,14 in tako naprej, dokler x = 180.
če izračunamo vse vrednosti 314, dobimo matriko 314 elementov (tip "int", ki ga arduino lažje izračuna).
Takšen niz je:
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};
Vidite lahko, da je kot sinusni val delovni cikel najnižji na prvem in zadnjem elementu ter najvišji na sredini.
2. korak: Arduino program za cikel spremenljive obremenitve
Na zgornji sliki imamo signale spremenljivih delovnih ciklov z vrednostmi iz matrike.
Toda kako narediti tak signal ??
v spodnjem delu programa uporaba prekinitev za spreminjanje vrednosti delovnih ciklov
sei (); // omogoči prekinitve
}
ISR (TIMER1_COMPA_vect) {// prekinitev, ko se časovnik 1 ujema z vrednostjo OCR1A
if (i> 313 && OK == 0) {// končna vrednost iz vektorja za pin 6
i = 0; // pojdi na prvo vrednost vektorja (matriko)
OK = 1; // omogoči pin 5
}
x = sinPWM ; // x vzame vrednost iz vektorja, ki ustreza položaju i (i je indeksirano nič) -vrednost obratovalnega cikla
i = i+1; // pojdite na naslednji položaj
}
Korak 3: Izmenjava pri 50Hz Arduino zatiči
Ker vsak pin ustvari le pol delovnega cikla za izdelavo polnega sinusnega vala, uporabljamo dva nožica, ki se po natančno 10msekundah (za 50Hz) izmenično spreminjata. Ta sprememba nožic je narejena na koncu matrike- potem ko je recimo pin 5 ustvaril 314 impulzov, se ta pin izklopi in omogoči pin 6, ki naredi isto, vendar za negativni obratovalni cikel.
Ker arduino lahko generira samo pozitivne signale, negativni delovni cikel nastane v h mostu- o tem lahko preberete tukaj
Program za menjavo zatičev:
sei (); // omogoči prekinitve
}
ISR (TIMER1_COMPA_vect) {// prekinitev, ko se časovnik 1 ujema z vrednostjo OCR1A
if (i> 313 && OK == 0) {// končna vrednost iz vektorja za pin 6
i = 0; // pojdite na prvo vrednost vektorja
OK = 1; // omogoči pin 5
}
if (i> 313 && OK == 1) {// končna vrednost iz vektorja za pin 5
i = 0; // pojdite na prvo vrednost vektorja
OK = 0; // omogoči pin 6
}
x = sinPWM ; // x vzamemo vrednost iz vektorja, ki ustreza položaju i (i je indeksirano nič)
i = i+1; // pojdite na naslednji položaj
če (OK == 0) {
OCR0B = 0; // naredimo pin 5 0
OCR0A = x; // omogočimo pin 6 ustreznemu delovnemu ciklu
če (V redu == 1) {
OCR0A = 0; // naredimo pin 6 0
OCR0B = x; // omogočimo pin 5 ustreznemu delovnemu ciklu
}
}
4. korak: Vožnja po H mostu in filtriranje Pwm signala
Signali, pridobljeni iz arduina, so nadzorni del za uporabo pretvornikov, ker sta oba pozitivna. Za izdelavo polnega sinusnega vala in praktičnega pretvornika moramo uporabiti h -most in očistiti nizkoprepustni filter pwm.
Tu je predstavljen H-most.
Nizkoprepustni filter, preizkušen z majhnimi AC motorji-tukaj.
Priporočena:
DIY stativ pod koraki 1: 3 koraki
DIY stativ pod 1 USD: Ta pouk vas bo naučil, kako narediti fantastičen stativ pod 1 USD. Z uporabo samo gospodinjskih predmetov, kot je moka, lahko naredite fantastičen stativ, ki je še boljši od običajnega stojala, celo prenosnega … poskusite! najprej bi si moral ogledati video
4G/5G HD video pretakanje v živo z DJI Drone z nizko zakasnitvijo [3 koraki]: 3 koraki
4G/5G HD video pretakanje v živo z DJI Drone z nizko zakasnitvijo [3 koraki]: Naslednji vodnik vam bo pomagal prenašati videoposnetke v visoki kakovosti HD v skoraj vseh DJI-jih. S pomočjo mobilne aplikacije FlytOS in spletne aplikacije FlytNow lahko začnete pretakati videoposnetke iz drona
4 koraki za merjenje notranje odpornosti baterije: 4 koraki
4 koraki za merjenje notranje odpornosti baterije: Tu so 4 preprosti koraki, ki vam lahko pomagajo izmeriti notranji upor baterije
Brezžični monitor pulzne frekvence s 4 koraki Duino-24: 4 koraki
Brezžični monitor pulzne frekvence s funkcijo 4Duino-24: Brezžični monitor pulzne frekvence je konceptualni projekt za bolnišnice in klinike, njegova glavna funkcija je skrajšati čas, ki ga medicinske sestre ali zdravniki potrebujejo za obisk vsakega bolnika v bolnišnici. Običajno zdravniki in medicinske sestre obiščejo vsakega pacienta, da preverijo
NAJLAKŠI NAČIN KOMPAKTNE LUČI !! 3 PREPROSTI KORAKI !!: 3 koraki
NAJLAKŠI NAČIN KOMPAKTNE LUČI !! 3 PREPROSTI KORAKI !!: Kaj potrebujete - kositrna folija 1 baterija AA (nekatere baterije AAA bodo delovale) 1 mini žarnica (žarnice se uporabljajo za večino svetilk; glejte sliko) Ravnilo (če je potrebno)