Orodha ya maudhui:

Arduino Sinewave kwa Inverters: 4 Hatua
Arduino Sinewave kwa Inverters: 4 Hatua

Video: Arduino Sinewave kwa Inverters: 4 Hatua

Video: Arduino Sinewave kwa Inverters: 4 Hatua
Video: 500W Sine Wave Inverter ( 12v to 220v DC to AC Converter ) with UPS Transformer - No IC 2024, Julai
Anonim
Arduino Sinewave kwa Inverters
Arduino Sinewave kwa Inverters

Katika mradi huu nimetengeneza ishara ya SPWM (sine wave pulse wide modulated) kutoka kwa matokeo mawili ya dijiti pwm.

Kwa sababu ili kufanya programu kama hii lazima nizungumze juu ya kazi zingine nyingi na mali za arduino mradi kamili pamoja na picha za oscilloscope na kwa masafa tofauti tafadhali tembelea wavuti yangu:

eprojectszone

Hatua ya 1: Kuzalisha Ishara ya Pwm kwa 50Hz

Ili kutoa ishara ya 50Hz kwa masafa ya juu ni muhimu kufanya mahesabu kadhaa. Mzunguko kutoka kwa arduino unaweza kuwa katika 8MHz, lakini tunataka ishara na mzunguko wa ushuru wa kutofautiana.

Ili kuelewa aina za mizunguko ya ushuru wa arduino unaweza kusoma sehemu hizi 3 za chapisho moja 1, 2 na 3.

Wacha tuchukue mzunguko wetu ni 50Hz ambayo inamaanisha kuwa kipindi cha muda ni 20ms. Kwa hivyo 10ms ni kipindi cha nusu ya mzunguko. Katika hizo 10ms tunahitaji kuwa na kunde nyingi zenye mizunguko tofauti ya ushuru kuanzia na mizunguko ndogo ya ushuru, katikati ya ishara tuna mizunguko ya ushuru wa juu na kumaliza pia na mizunguko ndogo ya ushuru. Ili kutoa wimbi la sine tutatumia pini mbili moja kwa mzunguko mzuri wa nusu na moja kwa mzunguko hasi wa nusu. Katika chapisho letu kwa hii tunatumia pini 5 na 6 ambayo inamaanisha Timer 0.

Kwa ishara laini tunachagua awamu sahihi pwm kwa masafa ya 31372 Hz-tazama chapisho la awali. Tatizo moja kubwa ni kwamba jinsi tunavyohesabu mzunguko wa lazima wa kila mapigo. Kwa hivyo, kwa sababu mzunguko wetu ni f = 31372Hz kipindi cha kila kunde ni T = 1/31372 = 31.8 sisi, kwa hivyo idadi ya kunde kwa mzunguko wa nusu ni N = 10ms / 31.8us = 314 kunde. Sasa kuhesabu mzunguko wa ushuru kwa kila kipigo tunacho y = sinx, lakini katika equation hii tunahitaji digrii kwa hivyo mzunguko wa nusu una digrii 180 kwa kunde 314. Kwa kila mpigo tuna 180/314 = 0.57g / pigo. Hiyo inamaanisha kwa kila pigo tunasonga mbele na 0.57g.

y ni mzunguko wa ushuru na x thamani ya nafasi katika mzunguko wa nusu ya ushuru. mwanzoni x ni 0, afetr kwamba x = 0.57, x = 1.14 na kadhalika hadi x = 180.

tukikokotoa maadili yote 314 tunapata safu ya vipengee 314 (chapa "int" ili kuhesabiwa rahisi na arduino).

Safu kama hiyo ni:

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, 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, 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, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 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, 199, 198, 196, 195, 193, 192, 190, 188, 187, 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, 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};

Unaweza kuona kwamba kama wimbi la sine mzunguko wa ushuru ni wa chini kabisa kwa kipengee cha kwanza na cha mwisho na cha juu katikati.

Hatua ya 2: Programu ya Arduino ya Mzunguko wa Ushuru Mbalimbali

Programu ya Arduino ya Mzunguko wa Ushuru Mbalimbali
Programu ya Arduino ya Mzunguko wa Ushuru Mbalimbali

Katika picha hapo juu tuna ishara za mizunguko ya ushuru wa kutofautisha na maadili kutoka kwa safu.

Lakini jinsi ya kutengeneza ishara kama hiyo?

sehemu ya programu hapa chini inakatisha kubadilisha maadili ya mizunguko ya ushuru

// (); uwezesha usumbufu

}

ISR (TIMER1_COMPA_vect) {// kukatisha wakati kipima muda 1 kinapolingana na thamani ya OCR1A

ikiwa (i> 313 && OK == 0) {// thamani ya mwisho kutoka kwa vector kwa pini 6

i = 0; // nenda kwa thamani ya kwanza ya vector (safu)

OK = 1; // kuwezesha pin 5

}

x x sinPWM ;

i = i + 1; // nenda kwenye nafasi inayofuata

}

Hatua ya 3: Kubadilishana kwa Pini za Arduino 50Hz

Kubadilisha kwa Pini za Arduino 50Hz
Kubadilisha kwa Pini za Arduino 50Hz

Kwa sababu kila pini hutengeneza tu mzunguko wa ushuru wa nusu kufanya wimbi kamili la sine tunatumia pini mbili ambazo hubadilishana moja baada ya nyingine baada ya 10mseconds halisi (kwa 50Hz). Mabadiliko haya ya pini hufanywa mwishoni mwa safu- baada ya kusema sekunde 5 imetengeneza kunde 314 pini hii imezimwa na kuwezeshwa kwa siri 6 ambayo hufanya kitu kimoja lakini kwa mzunguko mbaya wa ushuru.

Kwa sababu arduino inaweza kutoa ishara chanya tu mzunguko mbaya wa ushuru unafanywa kwa daraja- unaweza kusoma hapa juu yake

Programu ya kubadilisha pini:

jinsi (); // kuwezesha usumbufu

}

ISR (TIMER1_COMPA_vect) {// kukatisha wakati kipima muda 1 kinapolingana na thamani ya OCR1A

ikiwa (i> 313 && OK == 0) {// thamani ya mwisho kutoka kwa vector kwa pini 6

i = 0; // nenda kwa thamani ya kwanza ya vector

OK = 1; // kuwezesha pin 5

}

ikiwa (i> 313 && OK == 1) {// thamani ya mwisho kutoka kwa vector kwa pini 5

i = 0; // nenda kwa thamani ya kwanza ya vector

OK = 0; // kuwezesha pin 6

}

x x sinPWM ;

i = i + 1; // nenda kwenye nafasi inayofuata

ikiwa (sawa == 0) {

OCR0B = 0; // fanya pini 5 0

OCR0A = x; // kuwezesha pini 6 kwa mzunguko wa ushuru unaofanana

ikiwa (sawa == 1) {

// OCR0A = 0; // fanya pini 6 0

OCR0B = x; // kuwezesha pini 5 kwa mzunguko wa ushuru unaofanana

}

}

Hatua ya 4: Kuendesha Daraja la H na Kuchuja Ishara ya Pwm

Ishara zinazopatikana kutoka kwa arduino ni sehemu ya kudhibiti matumizi ya inverter kwa sababu zote mbili ni chanya. Ili kutengeneza wimbi kamili la sine na inverter inayofaa tunapaswa kutumia daraja h na kusafisha pwm kichujio cha kupita cha chini.

Daraja la H limewasilishwa hapa.

Kichujio cha kupitisha chini kilichojaribiwa na motors ndogo za Ac-hapa.

Ilipendekeza: