Բովանդակություն:

Arduino Sinewave Inverters- ի համար. 4 քայլ
Arduino Sinewave Inverters- ի համար. 4 քայլ

Video: Arduino Sinewave Inverters- ի համար. 4 քայլ

Video: Arduino Sinewave Inverters- ի համար. 4 քայլ
Video: Multi-function DC/AC 5V - 24V Forward Reverse Motor Controller Timer I053A02 2024, Նոյեմբեր
Anonim
Arduino Sinewave Inverters- ի համար
Arduino Sinewave Inverters- ի համար

Այս նախագծում ես առաջացրել եմ 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 ծրագիր փոփոխական աշխատանքային ցիկլի համար

Arduino ծրագիր փոփոխական աշխատանքային ցիկլի համար
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 կապում

50 Հց հաճախականությամբ Arduino կապում
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 շարժիչներով-այստեղ:

Խորհուրդ ենք տալիս: