Sisällysluettelo:
- Vaihe 1: Pwm -signaalin luominen 50 Hz: lle
- Vaihe 2: Arduino -ohjelma muuttuvaan käyttöjaksoon
- Vaihe 3: Vaihtaminen 50 Hz: n Arduino -nastoilla
- Vaihe 4: H -sillan ajaminen ja Pwm -signaalin suodatus
Video: Arduino Sinewave inverttereille: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tässä projektissa olen luonut SPWM -signaalin (siniaallopulssileveä moduloitu) signaalin kahdesta arduino pwm -digitaalilähdöstä.
Koska tällaisen ohjelman tekemiseksi minun on puhuttava monista muista arduinon toiminnoista ja ominaisuuksista, koko projekti, mukaan lukien oskilloskooppikuvat ja eri taajuudet, käy verkkosivustossani:
eprojectszone
Vaihe 1: Pwm -signaalin luominen 50 Hz: lle
50 Hz: n signaalin luomiseksi korkeammalla taajuudella on tarpeen tehdä joitakin laskelmia. Arduino -taajuudet voivat olla 8 MHz, mutta haluamme signaalin, jolla on vaihteleva käyttöjakso.
Ymmärtääksesi arduinon muuttuvien käyttöjaksojen tyypit, voit lukea tämän 3 osan samasta viestistä 1, 2 ja 3.
Oletetaan, että taajuutemme on 50 Hz, mikä tarkoittaa, että ajanjakso on 20 ms. 10 ms on siis puolijaksoaika. Näiden 10 ms: n aikana meillä on oltava useita pulsseja, joilla on erilaiset toimintajaksot alkaen pienistä käyttöjaksoista, signaalin keskellä meillä on enimmäiskäyttöjaksot ja lopetetaan myös pienillä käyttöjaksoilla. positiivinen puolisykli ja yksi negatiivinen puoli. Tässä viestissämme käytämme nastoja 5 ja 6, mikä tarkoittaa ajastinta 0.
Sileä signaali valitaan vaiheen oikea pwm taajuudella 31372 Hz-katso edellinen viesti. Yksi suurimmista ongelmista on se, kuinka laskemme tarvittavan käyttöjakson jokaiselle pulssille. Joten koska taajuutemme on f = 31372 Hz, kunkin pulssin jakso on T = 1/31372 = 31,8 me, joten pulssien lukumäärä puolisyklin aikana on N = 10 ms/31.8us = 314 pulssia. Nyt jokaisen pulssin käyttöjakson laskemiseksi meillä on y = sinx, mutta tässä yhtälössä tarvitsemme astetta, joten puolijaksolla on 180 astetta 314 pulssille. Jokaiselle pulssille meillä on 180/314 = 0,57 astetta/pulssi. Tämä tarkoittaa, että kullekin pulssille siirrymme eteenpäin 0,57 astetta.
y on käyttöjakso ja x paikan arvo puolen käyttöjakson aikana. aluksi x on 0, sitten x = 0,57, x = 1,14 ja niin edelleen, kunnes x = 180.
jos laskemme kaikki 314 -arvot, saamme taulukon 314 elementtiä (tyyppi "int" lasketaan arduinon helpommin).
Tällainen matriisi on:
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};
Näet, että siniaallon tavoin toimintajakso on alin ensimmäisellä ja viimeisellä elementillä ja korkein keskellä.
Vaihe 2: Arduino -ohjelma muuttuvaan käyttöjaksoon
Yllä olevassa kuvassa meillä on vaihtelevat käyttöjaksosignaalit, joiden arvot ovat taulukosta.
Mutta miten saada tällainen signaali ??
alla oleva ohjelman osa käyttää keskeytyksiä käyttöjaksojen arvojen muuttamiseen
sei (); // ottaa keskeytykset käyttöön
}
ISR (TIMER1_COMPA_vect) {// keskeyttää, kun ajastin 1 vastaa OCR1A -arvoa
if (i> 313 && OK == 0) {// lopullinen arvo nastan 6 vektorista
i = 0; // siirry vektorin (taulukon) ensimmäiseen arvoon
OK = 1; // ota nasta 5 käyttöön
}
x = sinPWM ; // x ota arvo i: tä vastaavasta vektorista (i on indeksoitu nolla)-käyttöjakson arvo
i = i+1; // siirry seuraavaan kohtaan
}
Vaihe 3: Vaihtaminen 50 Hz: n Arduino -nastoilla
Koska jokainen nasta tuottaa vain puolet käyttöjaksosta täyden siniaallon muodostamiseksi, käytämme kahta nastaa, jotka vuorottelevat peräkkäin tarkan 10 sekunnin kuluttua (50 Hz). Tämä nastanvaihto tehdään taulukon lopussa- kun sanotaan, että nasta 5 on tuottanut 314 pulssia, tämä nasta on sammutettu ja otettu käyttöön nasta 6, joka tekee saman, mutta negatiiviselle käyttöjaksolle.
Koska arduino voi tuottaa vain positiivisia signaaleja, negatiivinen käyttöjakso tehdään h-sillassa- voit lukea tästä
Ohjelma nastojen vaihtamiseen:
sei (); // ottaa keskeytykset käyttöön
}
ISR (TIMER1_COMPA_vect) {// keskeyttää, kun ajastin 1 vastaa OCR1A -arvoa
if (i> 313 && OK == 0) {// lopullinen arvo nastan 6 vektorista
i = 0; // siirry vektorin ensimmäiseen arvoon
OK = 1; // ota nasta 5 käyttöön
}
if (i> 313 && OK == 1) {// lopullinen arvo vektorista nastalle 5
i = 0; // siirry vektorin ensimmäiseen arvoon
OK = 0; // ota nasta 6 käyttöön
}
x = sinPWM ; // x ota arvo i: tä vastaavasta vektorista (i on indeksoitu nolla)
i = i+1; // siirry seuraavaan kohtaan
jos (OK == 0) {
OCR0B = 0; // tee nasta 5 0
OCR0A = x; // ota nasta 6 käyttöön vastaavaan käyttöjaksoon
jos (OK == 1) {
OCR0A = 0; // tee nasta 6 0
OCR0B = x; // ota nasta 5 käyttöön vastaavaan käyttöjaksoon
}
}
Vaihe 4: H -sillan ajaminen ja Pwm -signaalin suodatus
Arduinosta saadut signaalit ovat ohjausosa invertterisovelluksille, koska molemmat ovat positiivisia. Jotta saataisiin aikaan täysi siniaalto ja käytännöllinen invertteri, meidän on käytettävä h -siltaa ja puhdistettava pwm alipäästösuodatin.
Tässä esitetään H-silta.
Alipäästösuodatin testattu pienillä AC-moottoreilla-täällä.
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa