Software PWM naraštaj?

E

emax0198

Guest
Kako softver baziran generaciju od 8 PWM izlaza mogu biti implementirani?

Zapravo želim provesti 8 PWM izlaza voziti 8 servos kao hardverski PWM generator.Dovoljno je staviti vrijednosti u 8 16-bitnim registrima te će ažurirati pulse width pojedinih PWM output.Ima li bilo koji standardni tehnika za to?

 
Hi emax0198,
PWM mogu učiniti pomoću softvera vremena (a).Ali u vašoj prijavi, postoji mnogo PWM kanali moraju biti kreiran.To
je gotovo nemoguće, jer opće namjene MCUs obično imaju više vremena.Mislim da je bolji izbor određene namjene MCU koji pruža mnoge PWM kanale na čip.Oni su često motorne kontrole orijentirana MCUs.
Pozdravi.

 
Može li bilo koji naziv sklop koji može imati ovu funkciju!

 
NEKE 51 imaju PCA modul za napraviti ovaj tip stvar u particuliar u SILAB motivacija.
Isto tako vidio sam ga na Philips ruka LPC2xx
Ali to može biti učinjeno u soft ..Samo otvorite tablicu s vrijednostima u program vremena i korištenje prekinuti.
U svakom vremena prekinuti izlazni stupanj potrebne na PWM vodova i reprogram vremena s novim vrijednost na stolu ..Na kraju tablice start again!

 
Bok

vi svibanj također uzeti u obzir PIC18F serije, neke imaju 8 kanala PWM.

Pozdravi

 
eltonjohn

Već sam to učinio s prekine, ali problem je u tome da ste na vrijeme od vrijednosti koje ovih 8 PWM izlazima moraju biti generirani, dodatne prekine se trebaju koristiti i sa toliko prekine tu je neznatno podrhtavanje u svakoj servo ...pa mi to nije rješenje!

metal

PIC18F ima samo 4 resgisters dopunjena sa 8 izlaza, tako da se može voziti samo 4 servos u ovom slučaju.

 
Jeste li koristite drugu "Razdoblje" za svaki od osam PWM izlaza?

 
emax0198 wrote:

Može li bilo koji naziv sklop koji može imati ovu funkciju!
 
hi
ja sam jabarok

Ako ste cpld
to vrlo lako da bude
JA naviknut cpld napravio PWM kontrolom 32 kanala

 
Imam ideju PWM generaciju uspoređivati sa 6 jedinica svakog drviving dva PWM output kočiće ne s mikro ali ti konkretno iz DSP značilo za motorna kontroler applications.the procesor je TMS320F28xx.my application program je prekid temelji.
ovo je DSP allthe resorces učiniti thate.g.timers itd.
možete odlučiti na frekvenciji (PLL za to), zadatak ciklusa želite može se izravno učitava u usporedbu registara.posjetite www.ti.com
Za više pojedinosti, podaci listova.Added nakon 2 minute:Nisam radila sa microcontrollers ali intels-i960 ugrađen jedan procesor je korišten od strane mojih kolega servocontroller za aplikacije.

 
U članku "Balansiranje D / A pretvorbu na Jedan Pin" Krug podrum # 140, vas naučiti kako proizvesti osam 8-bita rezolucije PWM izlaza (ili 8 delta-sigma izlazima) s mikro, koristite vremena prekinuti.

S poštovanjem, svicent

 
Ako je Vaš PWM frekvencija niska, možete to učiniti sa prekine.(Na primjer, ako je želio PWM rezolucijom od 8 koraka s prikazivanjem PIC 20 MHz najbrľi PWM možete učiniti je 2,441 kHz).Osam nije puno teža od jednog.Koristite brojač za svaki ulaz i imati prekinuti rutinu da izvršava sve overflows vremena.Prilagoditi svaki izlaz u skladu s tim (budite pažljivi o svom vremena i morate završiti prekinuti izvršenje prije Vašeg sljedećeg prekid).

Ako je Vaš PWM je viša frekvencija, možete koristiti namjenski timing petlji (mikro i vaš će se dobra za vrlo malo drugih stvari).Ako koristite pridijeljeni vremena petlja, ali kao dio petlji želite napraviti nekoliko drugih stvari, morate biti pažljivi o vrijeme ako ne želite biti nervozan.

Mislim Circuit podrum reći će vam istu stvar kao svicent says.Oni
će vjerojatno objasni mu još elloquently as well.

 
emax0198 wrote:

eltonjohnVeć sam to učinio s prekine, ali problem je u tome da ste na vrijeme od vrijednosti koje ovih 8 PWM izlazima moraju biti generirani, dodatne prekine se trebaju koristiti i sa toliko prekine tu je neznatno podrhtavanje u svakoj servo ...
pa mi to nije rješenje
 
Hvala momci, sve što je rekao je ispravan.

Ali moj uvjet je da PWM bi trebala biti 10 zalogaj.A zapravo, postoje dvije stvari jedan kontroler ima veze; fisrt dohvatit PPM tiiming za svaki kanal, a zatim generirati 10 bitni PWM.

Znam da to nije moguće bez prekine.Jedan prekid je potrebno za hvatanje vremena između impulsa za PPM i drugi prekid je potrebno za generiranje PWM output (timer pretočni prekid).U toj situaciji teško je sinkronizirate prekine prikazivati ako su slobodni i CPU je napraviti dual poslove.

 
A moguće rješenje je korištenje integrirani sklop da ostvari samo tu funkciju i da vaša samo ti mogu kontrolirati s mikro.

Uređaj primjer je DS1050.Kao što je kontrolirana s I2C bus možete dogovoriti do 8 u vašoj aplikaciji.Postoje mnoge uređaje ovog stila koji sigurno bolje prilagoditi Vašim potrebama.<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
JA je napravio 8-bit 8-Chanel servo kontroler na 89C2051 UC prikazivati @ 24MHz.
Koristim je u moj robot arm.Otkrio sam da je 8-bitna razlučivost PWM je čak previše dobro za standardne R / C servos hobi.I šta servos odlunjati potražnja 10 bita rezolucije.
Sa 256 PWM korake za potpuni moždani udar gotovo svim servos zahtijevaju najmanje dva koraka u smislu bilo kakve promjene na sve.
Moj servo kontroler ne mnoge druge stvari kao serijski zapovijedanja i podatkovnu komunikaciju s Ring tampon rukovanje i Xon / Xoff protokol, interne obrade podataka, i tako dalje.Svaki od tih osam servo kanali mogu biti ravne ili preokrenuti robovsku drugog kanala, može biti gospodar kanala, može se postaviti kao konstanta'1 'i'0', te je neovisna balistika kontrole.Tako da je puno posla za napraviti regulaciju osim onih osam servos.
Preko tri godine koristeći ovaj uređaj nisam primjetio probleme performansi.
Bio sam previše lijen za pisanje softvera u zboru, pa sam koristio C za sve servo kodiranje kontrolera.Ako sam se asemblerski jezik Umjesto toga, UC bi umro s dosade.
Pa ne mi reći da je ovaj mali UC ne može rukovati zadatak.
Ja prodao nekoliko kontrolera s ovim sklop i čuo ni jednog prigovora vezana uz performanse ili izlazna buka ili nestabilnosti.
IMHO Što možete dobiti od vašeg uređaja ovisi o vašem stilu i vještina programiranja naravno.

Smislu, yego

 
Imam 842 i UC ADuC Trebam primjer koda za generiranje PWM je.Želim također generirati PWM signal za dvije sinusni valovi amplitudno modularni.

 
Hej, dugo vremena nijedan post za mene ...

Molimo pogledajte moj thread na više generacija PWM za PIC ...

http://www.edaboard.com/viewtopic.php?t=133711

Njegov mali algoritam za generiranje PWM koristeći interupts i koristeći nekoliko izvora.Ali, to sve ovisi o vašem apartmanu, PWM razdoblju, max / min marku / prostor ratio, rezolucija itd..Moj dizajn je samo značilo za 3 PWM
je pokrenut do 2Khz, s 8-bitnom rezolucijom, a koristi samo jedan sat (i oko 5% CPU vremena u sekundi).

Microchip je tablični softvera za PWM, nekoliko algoritama prikazani su, ovisno o zahtjevima (peroid, označite / prostor, yada yada yoda).
http://microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011070microchips forum ...
http://forum.microchip.com/tm.asp?m=124387

Dakle, moj savjet
je (vjerojatno ne vrijedi ništa, ali je ne povrijediti).
Dug kao JA znati, morate 8 PWM-a, svaki se 10 bitova Res.

1.Zatim, tu su neke međunarodne zajednice koje možete učiniti, specifične za ovu namjenu.Oni svibanj biti smišljen da bi LED-a, ali sve to znači da vam je potrebna za svakog vozača MOSFET servo, no biggie.

2.Im 'ljepušan siguran da su zaista neki microcontrollers koje su hardverske 8 PWM-a, od 10 bitni Res.Nažalost, ovi imaju tendenciju da se u 'gornji kraj', 16-bitni uređaje, prilično skupo (osim možda Philips, i dsPIC čipovima).Uglavnom, kao što pođem u rasponu uređaja, oni početi dodavanjem više i više stvari (kao PWM-a, više UART's, I2C, itd..) I cijena ide gore.Ovisi o vašem 'ograničenja'.Možete li napisati programe za bilo koji sklop?ili ste 'vjeran' na jednu određenu obitelj?Što mikro su vam dostupne?Programiranje, sve cijene moraju biti uzeti u obzir.

3.The varalički opciju.Napišite vlastitu pametan šifra za jeftine, lako za dobiti mikro.
Sada,
koliko mogu vidjeti, ne spominje što drugo mikro će ovaj događaj, osim generiranja PWM-a.Dakle, zašto ne pravedan posvetiti jedan jeftini mikro za ovu namjenu?To može biti interfaced s SPI/I2C, ili čak i paralelno sučelje koje neće ometati vaše PWM previše.Dakle,
recimo da ste je dobio PIC16F628A, punom parom, to teče na 20MHz (28Mhz sa nekim moguće glitches).Sad, jedina stvar čini se generirati PWMs, uz brzinu sam da biste mogli računati na to da pikova boja, sa boravkom na pretek.Unfortuneately, želite> 10 bita - prepreden.(možeš uvijek dobiti dsPIC, koji su 16-bitni uređaja, tako da svaki register je 16 bita,
što znači, jedan za svaku registrirati PWM, čini život puno lakši).Algoritam Theres zajednički koristite registar za svaku PWM, i 'counter' register.Sve što radimo je na prekid, svaki od tih uzroka registre, kada dostigne registrirati 0, vas isključiti njegova dodijeljen PIN.Kada brojilo (određuje vaše PWM period) dosegne nulu, ti vratiti sve igle, i ponovno učitati u PWM vrijednosti.Ja sam to učinio, sa i bez prekinuti, najbolja stvar o tome je, dodavanjem više PWM kanali ne stvarno razlika u veličini broj, ti si jednostavno ograničena dostupnih kočiće imate.8 ne bi trebao biti problem.

U rezoluciji, međutim, bit će.za 8-bitni mikro, trebat će vam dvije registre za 10 bita Res.I raskri postaje TAD teže (smanjenje jednom registru, sve dok ne dosegne 0, a zatim početi na raskri LSbyte dok se ne dosegne nulu.
Budući da ste to učinili (2 ^ rezoluciji) po periodu, svaki put kad 'Dodaj' linije koda na njega, ti si efektivno dodavanjem (2 ^ rezolucija, 1024 za 10 bita)) upute po razdoblju.Sada, ako tvoj PWM je 2Khz, taj 2000 * 1024 = 2048000 extra upute pogubili po sekundi.

OK, dobro sam ranting, njegove jedan varljiv tihng napraviti, a Vi ćete vjerojatno biti bolje jednostavno potrošiti više novca na čip koji ima sve za tebe.Ali sam uvjeren da postoji jednostavan i učinkovit način za napraviti stvari.

Sretno,

BuriedCode.

 
Hvala vam dragi, ali ja sam tražeći ADuC842 jedna jezgra 8051 PIC-bazirane ne

 

Welcome to EDABoard.com

Sponsor

Back
Top