Sisukord:
- Samm: Pwm -signaali genereerimine 50 Hz jaoks
- Samm: Arduino programm muutuva töötsükli jaoks
- Samm: vaheldumisi 50 Hz Arduino tihvtidega
- 4. samm: H -silla juhtimine ja Pwm -signaali filtreerimine
Video: Arduino Sinewave inverteritele: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
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
Ü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
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:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Tulekahjusignalisatsioon Arduino abil [paar lihtsat sammu]: 3 sammu
Arduino kasutav tulekahjusignalisatsioon [paar lihtsat sammu]: Kas soovite Arduinoga teha lihtsa ja huvitava projekti, mis võiks samal ajal olla tõesti kasulik ja potentsiaalselt elupäästev? Kui jah, siis olete jõudnud õigesse kohta õppima midagi uut ja uuenduslikku. Selles postituses läheme
Odavaim Arduino -- Väikseim Arduino -- Arduino Pro Mini -- Programmeerimine -- Arduino Neno: 6 sammu (piltidega)
Odavaim Arduino || Väikseim Arduino || Arduino Pro Mini || Programmeerimine || Arduino Neno: …………………………. Palun TELLI minu YouTube'i kanalile, et saada rohkem videoid ……. .See projekt käsitleb kõigi aegade väikseima ja odavaima arduino liidestamist. Väikseim ja odavaim arduino on arduino pro mini. See sarnaneb arduinoga