Sisukord:

Arduino Sinewave inverteritele: 4 sammu
Arduino Sinewave inverteritele: 4 sammu

Video: Arduino Sinewave inverteritele: 4 sammu

Video: Arduino Sinewave inverteritele: 4 sammu
Video: как сделать простой инвертор 6000Вт, 4 трансформатора, синусоида, IRFz 44n, jlcpcb 2024, November
Anonim
Arduino Sinewave inverteritele
Arduino Sinewave inverteritele

Selles projektis olen genereerinud kahest arduino pwm digitaalsest väljundist SPWM (siinuslaine impulsi lai moduleeritud) signaali.

Kuna sellise programmi tegemiseks pean rääkima paljudest teistest arduino funktsioonidest ja omadustest, külastage minu veebisaiti:

eprojectszone

Samm: Pwm -signaali genereerimine 50 Hz jaoks

50 Hz signaali genereerimiseks kõrgemal sagedusel on vaja teha mõned arvutused. Arduino sagedused võivad olla 8 MHz, kuid me tahame muutuva töötsükliga signaali.

Arduino muutuva töötsükli tüüpide mõistmiseks saate lugeda sama postituse 1, 2 ja 3 seda kolme osa.

Oletame, et meie sagedus on 50 Hz, mis tähendab, et ajavahemik on 20 ms. Seega 10 ms on pooltsükkel. Nende 10 ms jooksul peab meil olema palju erineva töötsükliga impulsse, alustades väikestest töötsüklitest, signaali keskel on meil maksimaalsed töötsüklid ja lõpetame ka väikeste töötsüklitega. Siinuslaine tekitamiseks kasutame kahte tihvti. positiivne pooltsükkel ja üks negatiivne pooltsükkel. Meie postituses kasutame selleks tihvte 5 ja 6, mis tähendab taimerit 0.

Sujuva signaali jaoks valime faasikorrektse pwm sagedusel 31372 Hz-vt eelmist postitust. Üks suurimaid probleeme on see, kuidas arvutame iga impulsi jaoks vajaliku töötsükli. Niisiis, kuna meie sagedus on f = 31372Hz, on iga impulsi periood T = 1/31372 = 31,8 us, seega on poole tsükli impulsside arv N = 10ms/31,8us = 314 impulssi. Nüüd, et arvutada iga impulsi töötsükkel, on meil y = sinx, kuid selles võrrandis vajame kraadi, nii et pooltsüklil on 180 kraadi 314 impulsi jaoks. Iga impulsi puhul on meil 180/314 = 0,57 kraadi/impulss. See tähendab, et iga impulsi puhul liigume edasi 0,57 kraadi võrra.

y on töötsükkel ja x positsiooni väärtus poole töötsükli jooksul. alguses x on 0, siis x = 0,57, x = 1,14 ja nii edasi, kuni x = 180.

kui arvutame kõik 314 väärtused, saame massiivi 314 elementi (tüüp "int", mida on arduino lihtsam arvutada).

Selline massiiv 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, 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äete, et nagu siinuslaine, on töötsükkel madalaim esimeses ja viimases elemendis ning kõrgeim keskel.

Samm: Arduino programm muutuva töötsükli jaoks

Arduino programm muutuva töötsükli jaoks
Arduino programm muutuva töötsükli jaoks

Ülaltoodud pildil on muutuva töötsükli signaalid massiivi väärtustega.

Aga kuidas sellist signaali teha ??

Allpool olev programmi osa kasutab katkestusi töötsüklite väärtuste muutmiseks

sei (); // katkestuste lubamine

}

ISR (TIMER1_COMPA_vect) {// katkestada, kui taimer 1 sobib OCR1A väärtusega

if (i> 313 && OK == 0) {// lõplik väärtus vektorilt tihvti 6 jaoks

i = 0; // minge vektori (massiivi) esimese väärtuse juurde

OK = 1; // lubage tihvt 5

}

x = sinPWM ; // x võtab väärtuse vektorilt, mis vastab positsioonile i (i on indekseeritud null)-töötsükli väärtus

i = i+1; // mine järgmisele positsioonile

}

Samm: vaheldumisi 50 Hz Arduino tihvtidega

Vaheldumisi 50 Hz Arduino tihvtidega
Vaheldumisi 50 Hz Arduino tihvtidega

Kuna iga tihvt tekitab täieliku siinuslaine tegemiseks ainult poole töötsükli, kasutame kahte tihvti, mis vahelduvad üksteise järel täpselt 10 sekundi pärast (50 Hz). See tihvtide vahetus tehakse massiivi lõpus- kui oletame, et tihvt 5 on genereerinud 314 impulssi, lülitatakse see tihvt välja ja lubatakse tihvt 6, mis teeb sama, kuid negatiivse töötsükli jaoks.

Kuna arduino suudab genereerida ainult positiivseid signaale, tehakse silla juures negatiivne töötsükkel- selle kohta saate lugeda siit

Tihvtide vahetamise programm:

sei (); // katkestuste lubamine

}

ISR (TIMER1_COMPA_vect) {// katkestada, kui taimer 1 sobib OCR1A väärtusega

if (i> 313 && OK == 0) {// lõplik väärtus vektorilt tihvti 6 jaoks

i = 0; // minge vektori esimesele väärtusele

OK = 1; // lubage tihvt 5

}

if (i> 313 && OK == 1) {// lõplik väärtus vektorilt tihvti 5 jaoks

i = 0; // minge vektori esimesele väärtusele

OK = 0; // lubage tihvt 6

}

x = sinPWM ; // x võtab väärtuse vektorile, mis vastab positsioonile i (i on indekseeritud null)

i = i+1; // mine järgmisele positsioonile

kui (OK == 0) {

OCR0B = 0; // tehke tihvt 5 0

OCR0A = x; // lubage tihvt 6 vastavale töötsüklile

kui (OK == 1) {

OCR0A = 0; // tehke tihvt 6 0

OCR0B = x; // lubage tihvt 5 vastavale töötsüklile

}

}

4. samm: H -silla juhtimine ja Pwm -signaali filtreerimine

Arduino poolt saadud signaalid on muunduri rakenduste juhtosa, kuna mõlemad on positiivsed. Täieliku siinuslaine ja praktilise inverteri tegemiseks peame kasutama h -silda ja pwm puhastamiseks madalpääsfiltrit.

Siin on esitatud H-sild.

Madalpääsfilter on testitud väikeste vahelduvvoolumootoritega-siin.

Soovitan: