Sadržaj:
- Korak 1: Generiranje Pwm signala za 50Hz
- Korak 2: Arduino program za promjenjivi radni ciklus
- Korak 3: Naizmjenično na 50Hz Arduino pinovi
- Korak 4: Vožnja H mostom i filtriranje Pwm signala
Video: Arduino sinusni val za pretvarače: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
U ovom projektu generirao sam SPWM (sinusno valno široki impulsno modulirani) signal iz dva arduino pwm digitalna izlaza.
Budući da za izradu takvog programa moram govoriti o mnogim drugim funkcijama i svojstvima arduina, cijeli projekt, uključujući slike osciloskopa, a za različite frekvencije posjetite moju web stranicu:
eprojectszone
Korak 1: Generiranje Pwm signala za 50Hz
Za generiranje signala od 50Hz na većoj frekvenciji potrebno je napraviti neke proračune. Frekvencije iz arduina mogu biti na 8MHz, ali želimo signal s promjenjivim radnim ciklusom.
Da biste razumjeli vrste promjenjivih radnih ciklusa arduina, možete pročitati ova 3 dijela istog posta 1, 2 i 3.
Pretpostavimo da je naša frekvencija 50Hz, što znači da je vremenski period 20 ms. Dakle, 10ms je period polu ciklusa. U tih 10 ms moramo imati mnogo impulsa s različitim radnim ciklusima koji počinju s malim radnim ciklusima, u sredini signala imamo maksimalne radne cikluse i završavamo također s malim radnim ciklusima. Za generiranje sinusnog vala upotrijebit ćemo dva pina jedan za pozitivni poluciklus i jedan za negativni poluciklus. U našem postu za to koristimo igle 5 i 6 što znači Tajmer 0.
Za glatki signal odabiremo fazno ispravan pwm na frekvenciji 31372 Hz-vidi prethodni post. Jedan od najvećih problema je u tome što izračunavamo potrebni radni ciklus za svaki impuls. Dakle, budući da je naša frekvencija f = 31372Hz, period za svaki impuls je T = 1/31372 = 31.8 us, pa je broj impulsa za pola ciklusa N = 10ms/31.8us = 314 impulsa. Sada za izračunavanje radnog ciklusa za svaki impuls imamo y = sinx, ali u ovoj jednadžbi potrebni su nam stupnjevi tako da poluciklus ima 180 stepeni za 314 impulsa. Za svaki impuls imamo 180/314 = 0,57deg/impuls. To znači da se za svaki puls krećemo naprijed za 0,57 stepeni.
y je radni ciklus i x vrijednost položaja u pola radnog ciklusa. isprva x je 0, a zatim x = 0.57, x = 1.14 i tako dalje sve dok x = 180.
ako izračunamo sve 314 vrijednosti dobivamo niz 314 elemenata (upišite "int" koje će arduino lakše izračunati).
Takav niz je:
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, 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};
Možete vidjeti da je poput sinusnog vala radni ciklus najniži u prvom i posljednjem elementu, a najviši u sredini.
Korak 2: Arduino program za promjenjivi radni ciklus
Na gornjoj slici imamo signale promjenjivih radnih ciklusa sa vrijednostima iz niza.
Ali kako napraviti takav signal ??
donji dio programa koristi prekide za promjenu vrijednosti radnih ciklusa
sei (); // omogući prekide
}
ISR (TIMER1_COMPA_vect) {// prekida kada se tajmer 1 podudara s OCR1A vrijednošću
if (i> 313 && OK == 0) {// konačna vrijednost iz vektora za pin 6
i = 0; // idite na prvu vrijednost vektora (niz)
OK = 1; // omogući pin 5
}
x = sinPWM ; // x uzima vrijednost iz vektora koja odgovara položaju i (i je indeksirano nulom) -vrijednost radnog ciklusa
i = i+1; // prelazak na sljedeću poziciju
}
Korak 3: Naizmjenično na 50Hz Arduino pinovi
Budući da svaki pin generira samo pola ciklusa rada za stvaranje punog sinusnog vala, koristimo dva pina koji se izmjenjuju jedan za drugim nakon točno 10msekundi (za 50Hz). Ova promjena pinova vrši se na kraju niza- nakon što je recimo pin 5 generirao 314 impulsa, ovaj pin se isključuje i omogućuje pin 6 koji čini istu stvar, ali za negativni radni ciklus.
Budući da arduino može generirati samo pozitivne signale, negativni radni ciklus nastaje u h mostu- o tome možete pročitati ovdje
Program za promjenu pinova:
sei (); // omogući prekide
}
ISR (TIMER1_COMPA_vect) {// prekida kada se tajmer 1 podudara s OCR1A vrijednošću
if (i> 313 && OK == 0) {// konačna vrijednost iz vektora za pin 6
i = 0; // idite na prvu vrijednost vektora
OK = 1; // omogući pin 5
}
if (i> 313 && OK == 1) {// konačna vrijednost iz vektora za pin 5
i = 0; // idite na prvu vrijednost vektora
OK = 0; // omogući pin 6
}
x = sinPWM ; // x preuzima vrijednost iz vektora koja odgovara položaju i (i je indeksirano nulom)
i = i+1; // prelazak na sljedeću poziciju
ako (OK == 0) {
OCR0B = 0; // napravite pin 5 0
OCR0A = x; // omogući pin 6 odgovarajućem radnom ciklusu
ako (OK == 1) {
OCR0A = 0; // napravite pin 6 0
OCR0B = x; // omogući pin 5 odgovarajućem radnom ciklusu
}
}
Korak 4: Vožnja H mostom i filtriranje Pwm signala
Signali dobiveni od arduina upravljački su dio za aplikacije pretvarača jer su oba pozitivna. Da bismo napravili potpuni sinusni val i praktični pretvarač, moramo upotrijebiti h most i očistiti niskopropusni filtar pwm.
Ovdje je predstavljen H-most.
Niskopropusni filter testiran sa malim AC motorima-ovdje.
Preporučuje se:
Arduino Uno hranilica za ribe u 6 jeftinih i lakih koraka !: 6 koraka
Arduino Uno hranilica za ribe u 6 jeftinih i lakih koraka !: Tako da će za ovaj projekt možda biti potrebno malo pozadine. Ljudima sa kućnim ljubimcima vjerovatno se pojavio isti problem kao i meni: godišnji odmori i zaborav. Stalno sam zaboravljao nahraniti svoju ribu i uvijek sam to pokušavao učiniti prije nego što je otišlo u s
Čisti sinusni pretvarač: 8 koraka
Čisti sinusni pretvarač: Moje istraživanje
Generirajte PWM val s PIC mikrokontrolerom: 6 koraka
Generirajte PWM val pomoću PIC mikrokontrolera: ŠTA JE PWM? PWM STOJEVI ZA MODULACIJU ŠIRINE PULSA je tehnika pomoću koje se mijenja širina impulsa. Da biste razumjeli ovaj koncept, jasno razmotrite taktni impuls ili bilo koji signal kvadratnog vala koji ima radni ciklus od 50%, što znači da su period Ton i Toff isti
Najjeftiniji Arduino -- Najmanji Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 koraka (sa slikama)
Najjeftiniji Arduino || Najmanji Arduino || Arduino Pro Mini || Programiranje || Arduino Neno: …………………………. PRETPLATITE SE na moj YouTube kanal za više video zapisa ……. .Ovaj projekt govori o tome kako spojiti najmanji i najjeftiniji arduino ikada. Najmanji i najjeftiniji arduino je arduino pro mini. Slično je arduinu
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima