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 promjena: 2024-01-30 09:37
U ovom projektu generirao sam SPWM (sinusno valno široko 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 izrač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 vremensko razdoblje 20 ms. Dakle, 10 ms je razdoblje polu ciklusa. U tih 10 ms moramo imati mnogo impulsa s različitim radnim ciklusima koji počinju s malim radnim ciklusima, usred 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 Timer 0.
Za glatki signal odabiremo fazno ispravan pwm na frekvenciji 31372 Hz-vidi prethodni post. Jedan od najvećih problema je u tome kako izračunavamo potrebni radni ciklus za svaki impuls. Dakle, budući da je naša frekvencija f = 31372Hz, razdoblje 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čun radnog ciklusa za svaki impuls imamo y = sinx, ali u ovoj jednadžbi potrebni su nam stupnjevi pa poluciklus ima 180 stupnjeva za 314 impulsa. Za svaki impuls imamo 180/314 = 0,57deg/impuls. To znači da se za svaki puls krećemo naprijed s 0,57 stupnjeva.
y je radni ciklus i x vrijednost položaja u pola radnog ciklusa. isprva x je 0, a zatim je x = 0.57, x = 1.14 i tako dalje sve dok x = 180.
ako izračunamo sve vrijednosti 314 dobivamo niz 314 elemenata (tip "int" koji će se 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 na 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 s 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 mjerač 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 koji odgovara položaju i (i je indeksirano nulom) -vrijednost radnog ciklusa
i = i+1; // idite na sljedeću poziciju
}
Korak 3: Naizmjenično na 50Hz Arduino pinovi
Budući da svaki pin generira samo pola radnog ciklusa za stvaranje punog sinusnog vala, koristimo dva pina koji se izmjenjuju jedan za drugim nakon točno 10 ms (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 je napravljen 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 mjerač 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 uzima vrijednost iz vektora koja odgovara položaju i (i je indeksirano nulom)
i = i+1; // idite na sljedeću poziciju
ako (U redu == 0) {
OCR0B = 0; // napravite pin 5 0
OCR0A = x; // omogući pin 6 odgovarajućem radnom ciklusu
ako (U redu == 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čan pretvarač, moramo upotrijebiti h most i očistiti niskopropusni filtar pwm.
Ovdje je predstavljen H-most.
Niskopropusni filter testiran ovdje s malim AC motorima.
Preporučeni:
Arduino Uno hranilica za ribe u 6 jeftinih i lakih koraka !: 6 koraka
Arduino Uno hranilica za ribe u 6 jeftinih i lakih koraka !: Stoga će za ovaj projekt možda biti potrebno malo pozadine. Ljudi s kućnim ljubimcima vjerojatno su imali isti problem kao i ja: 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
Akustična levitacija s Arduino Uno Korak po korak (8 koraka): 8 koraka
Akustična levitacija s Arduino Uno Korak po korak (8 koraka): ultrazvučni pretvarači zvuka L298N Dc ženski adapter za napajanje s muškim dc pinom Arduino UNOBreadboard Kako to funkcionira: Prvo učitavate kôd na Arduino Uno (to je mikrokontroler opremljen digitalnim i analogni portovi za pretvaranje koda (C ++)
Čisti sinusni pretvarač: 8 koraka
Čisti sinusni pretvarač: Moje istraživanje
Generirajte PWM val pomoću PIC mikrokontrolera: 6 koraka
Generirajte PWM val pomoću PIC mikrokontrolera: ŠTO JE PWM? PWM STOJCI 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 kvadratni valni signal koji ima 50% radni ciklus što znači da su razdoblje Ton i Toff isto
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 videa ……. .Ovaj projekt govori o tome kako spojiti najmanji i najjeftiniji arduino ikada. Najmanji i najjeftiniji arduino je arduino pro mini. Slično je arduinu