Բովանդակություն:
- Քայլ 1. Pwm ազդանշանի ստեղծում 50 Հց հաճախականությամբ
- Քայլ 2. Arduino ծրագիր փոփոխական աշխատանքային ցիկլի համար
- Քայլ 3. 50 Հց հաճախականությամբ Arduino կապում
- Քայլ 4. Քշեք H կամուրջ և զտեք Pwm ազդանշանը
Video: Arduino Sinewave Inverters- ի համար. 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Այս նախագծում ես առաջացրել եմ SPWM (սինուսային զարկերակի լայն մոդուլացված) ազդանշան երկու arduino pwm թվային ելքերից:
Քանի որ նման ծրագիր ստեղծելու համար ես պետք է խոսեմ arduino- ի շատ այլ գործառույթների և հատկությունների մասին, ամբողջական նախագիծը, ներառյալ տատանումների պատկերները և տարբեր հաճախականությունների համար, այցելեք իմ կայքը.
eprojectszone
Քայլ 1. Pwm ազդանշանի ստեղծում 50 Հց հաճախականությամբ
Ավելի բարձր հաճախականությամբ 50 ՀՀ ազդանշան ստեղծելու համար անհրաժեշտ է որոշ հաշվարկներ կատարել: Arduino- ի հաճախականությունները կարող են լինել 8 ՄՀց հաճախականությամբ, բայց մենք ցանկանում ենք ազդանշան փոփոխական աշխատանքային ցիկլով:
Արդուինոյի փոփոխական աշխատանքային ցիկլերի տեսակները հասկանալու համար կարող եք կարդալ նույն գրառման 1, 2 և 3 այս 3 մասերը:
Ենթադրենք, մեր հաճախականությունը 50 Հց է, ինչը նշանակում է, որ ժամանակաշրջանը 20 մ է: Այսպիսով, 10ms- ը կես ցիկլի շրջան է: Այդ 10 մմ -ներում մենք պետք է ունենանք բազմաթիվ իմպուլսներ ՝ տարբեր աշխատանքային ցիկլերով ՝ սկսած փոքր աշխատանքային ցիկլերից, ազդանշանի մեջտեղում մենք ունենք առավելագույն աշխատանքային ցիկլեր և ավարտում ենք նաև փոքր հերթապահ ցիկլերով: Սինուս ալիք առաջացնելու համար մենք կօգտագործենք երկու կապ դրական կես ցիկլ և մեկը բացասական կես ցիկլ: Մեր գրառման մեջ մենք օգտագործում ենք 5 և 6 կապում, ինչը նշանակում է Timամաչափ 0:
Սահուն ազդանշանի համար մենք ընտրում ենք 31372 Հց հաճախականությամբ ֆազային pwm- տես նախորդ գրառումը: Ամենամեծ խնդիրներից մեկն այն է, թե ինչպես ենք հաշվարկում յուրաքանչյուր զարկերակի համար անհրաժեշտ աշխատանքային ցիկլը: Այսպիսով, քանի որ մեր հաճախականությունը f = 31372Hz է, յուրաքանչյուր զարկերակի ժամանակահատվածը T = 1/31372 = 31.8 us է, ուստի կես ցիկլի իմպուլսների թիվը N = 10ms/31.8us = 314 իմպուլս է: Այժմ յուրաքանչյուր զարկերակի համար աշխատանքային ցիկլը հաշվարկելու համար մենք ունենք y = sinx, բայց այս հավասարման մեջ մեզ անհրաժեշտ են աստիճաններ, ուստի կես ցիկլը ունի 180 աստիճան 314 իմպուլսի համար: Յուրաքանչյուր զարկերակի համար մենք ունենք 180/314 = 0.57 աստիճան/զարկերակ: Դա նշանակում է, որ յուրաքանչյուր զարկերակի համար մենք առաջ ենք շարժվում 0.57 աստիճանով:
y- ը տուրքի ցիկլն է և x- ը `կես պարտքի ցիկլի դիրքի արժեքը: սկզբում x- ն 0 է, այնուհետև x = 0.57, x = 1.14 և այլն մինչև x = 180:
եթե մենք հաշվենք բոլոր 314 արժեքները, մենք ստանում ենք զանգված 314 տարրեր (մուտքագրեք «int», որն ավելի հեշտ կլինի հաշվարկել arduino- ով):
Նման զանգվածն է.
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, 245, 246, 246, 247, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 247, 247, 247, 246, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 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};
Դուք կարող եք տեսնել, որ սինուս ալիքի պես աշխատանքային ցիկլը ամենացածրն է առաջին և վերջին տարրերում և ամենաբարձրը մեջտեղում:
Քայլ 2. Arduino ծրագիր փոփոխական աշխատանքային ցիկլի համար
Վերևի պատկերում մենք ունենք փոփոխական տուրքի ցիկլերի ազդանշաններ զանգվածից ստացված արժեքներով:
Բայց ինչպե՞ս նման ազդանշան անել:
Ստորև բերված ծրագրի այն հատվածը, որն օգտագործում է ընդհատումները `աշխատանքային ցիկլերի արժեքները փոխելու համար
sei (); // միացնել ընդհատումները
}
ISR (TIMER1_COMPA_vect) {// ընդհատում, երբ ժամաչափ 1 -ը համընկնում է OCR1A արժեքի հետ
if (i> 313 && OK == 0) {// վերջնական արժեքը վեկտորից 6 -րդ կապի համար
i = 0; // անցնել վեկտորի (զանգվածի) առաջին արժեքին
OK = 1; // միացնել PIN 5 -ը
}
x = sinPWM ; // x վերցնել արժեքը i- ին համապատասխանող վեկտորից (i զրոյական ինդեքսավորված է) -աշխատաշրջանի արժեքը
i = i+1; // անցեք հաջորդ դիրքին
}
Քայլ 3. 50 Հց հաճախականությամբ Arduino կապում
Քանի որ յուրաքանչյուր քորոց առաջացնում է միայն կես գործառնական ցիկլ ՝ լիարժեք սինուս ալիք ստեղծելու համար, մենք օգտագործում ենք երկու կապում, որոնք հերթով փոխվում են մեկը մյուսի հետևից ճշգրիտ 10 վայրկյան հետո (50 Հց -ի համար): Պիների այս փոփոխությունը կատարվում է զանգվածի վերջում. Ենթադրենք, որ 5-րդ փինն առաջացրել է 314 իմպուլս, այս քորոցն անջատված է և միացված է 6-րդ կապը, ինչը նույնն է դարձնում, բայց բացասական հերթափոխի համար:
Քանի որ arduino- ն կարող է առաջացնել միայն դրական ազդանշաններ, բացասական աշխատանքային ցիկլը կատարվում է h կամրջով, դրա մասին կարող եք կարդալ այստեղ
Քորոցներ փոխելու ծրագիրը.
sei (); // միացնել ընդհատումները
}
ISR (TIMER1_COMPA_vect) {// ընդհատում, երբ ժամաչափ 1 -ը համընկնում է OCR1A արժեքի հետ
if (i> 313 && OK == 0) {// վերջնական արժեքը վեկտորից 6 -րդ կապի համար
i = 0; // գնալ վեկտորի առաջին արժեքին
OK = 1; // միացնել PIN 5 -ը
}
if (i> 313 && OK == 1) {// վերջնական արժեքը վեկտորից 5 -րդ կապի համար
i = 0; // գնալ վեկտորի առաջին արժեքին
OK = 0; // միացնել 6 -րդ կապը
}
x = sinPWM ; // x վերցնել արժեքը i- ին համապատասխանող վեկտորից (i- ն ինդեքսավորված է զրո)
i = i+1; // անցեք հաջորդ դիրքին
եթե (լավ == 0) {
OCR0B = 0; // դարձնել կապում 5 0
OCR0A = x; // միացնել PIN 6 -ը համապատասխան աշխատանքային ցիկլին
եթե (լավ == 1) {
OCR0A = 0; // դարձնել կապում 6 0
OCR0B = x; // միացնել PIN 5 -ը համապատասխան աշխատանքային ցիկլին
}
}
Քայլ 4. Քշեք H կամուրջ և զտեք Pwm ազդանշանը
Արդուինոյից ստացված ազդանշանները inverter հավելվածների կառավարման մասն են, քանի որ երկուսն էլ դրական են: Լիարժեք սինուս ալիք և գործնական փոխարկիչ պատրաստելու համար մենք պետք է օգտագործենք h կամուրջ և pwm- ը մաքրենք ցածր անցման զտիչ:
H- կամուրջը ներկայացված է այստեղ:
Lowածր անցման ֆիլտրը փորձարկվել է փոքր AC շարժիչներով-այստեղ:
Խորհուրդ ենք տալիս:
Կիթառի հերոս կիթառի օգտագործումը խոշորացումը վերահսկելու համար (միայն Windows- ի համար). 9 քայլ
Կիթառի հերոս կիթառի օգտագործումը խոշորացումը վերահսկելու համար (Միայն Windows). Քանի որ մենք գտնվում ենք գլոբալ համաճարակի մեջ, մեզանից շատերը խրված են տան մաքրման և խոշորացման հանդիպումներին միանալու մեջ: Որոշ ժամանակ անց սա կարող է դառնալ շատ ձանձրալի և հոգնեցուցիչ: Տունը մաքրելիս ես գտա Guitar Hero- ի հին կիթառը, որը գցված էր
Steam Punk ձեր UPS- ը ՝ ձեր Wi-Fi երթուղիչի համար մի քանի ժամ անընդհատ աշխատելու համար. 4 քայլ (նկարներով)
Steam Punk Ձեր UPS- ը ձեր Wi-Fi երթուղիչի համար մի քանի ժամ տևելու համար: Հիմնականում անհամատեղելի բան կա, երբ ձեր UPS- ը փոխում է իր 12V DC մարտկոցի հզորությունը 220V AC հոսանքի, այնպես որ ձեր երթուղղիչով և մանրաթելային ONT- ով աշխատող տրանսֆորմատորները կարող են այն նորից վերածել 12V DC Դուք նույնպես դեմ եք [սովորաբար
Օգտագործեք 1 անալոգային մուտքագրում Arduino- ի համար 6 կոճակի համար. 6 քայլ
Arduino- ի համար օգտագործեք 1 անալոգային մուտք 6 կոճակի համար. Վերջերս մտքովս անցավ, որ ես պետք է կարողանամ օգտագործել անալոգային մուտքերից մեկը `բազմաթիվ թվային մուտքեր բերելու համար: Ես արագ որոնեցի և գտա, թե որտեղ են մարդիկ
Պարտիզանական մարտկոցի սեփականատեր ձեր սեղանի համար / Arduino նախագծերի համար. 3 քայլ
Պարտիզանական մարտկոցի սեփականատեր ձեր սեղանի համար / Arduino նախագծերի համար. Ես փորձեր եմ կատարում DS1307- ի և Arduino- ի հետ, ես պետք է միջոց գտնեի CR1212 մարտկոցը միացնելու համար: Ես մտա իմ միակցիչների տուփի մեջ և չգտա ոչինչ, որը կարող էր օգնել: Հետո, eur ê ka! Ես ունեի լուսավորություն
Ուղեցույց L298 2Amp Motor Driver Shield- ի համար Arduino- ի համար. 6 քայլ
L298 2Amp Motor Driver Shield- ը Arduino- ի համար. Նկարագրություն L298 2Amp Motor Driver Shield- ը Arduino- ի համար հիմնված է L298 շարժիչի վարորդի ինտեգրալ սխեմայի վրա, լիարժեք կամուրջի շարժիչ: Այն կարող է վարել երկու առանձին 2A DC շարժիչներ կամ 1 2A քայլ շարժիչ: Շարժիչի արագությունը և ուղղությունները կարող են վերահսկվել առանձին