Software PWM

V

vsmGuy

Guest
Guys

Jag är på jakt efter en all programvara PWM med kanske 8 bitars upplösning (256 stater).

Frekvensen är förstås sub kHz - definitivt runt 500Hz.

Vad jag ville veta är vad de olika PWM freq tillgängliga med hjälp av programvara metoder?Kommer den att förändras med klockfrekvens.

Dessutom, hur kommer det ekonomiska utfallet av kringutrustning - som USART, ADC, CCP, etc. påverkas med en sådan teknik.Och hur många kanaler med PWM jag kan få det här sättet?

Jag är benägen att tro att produktionen skapats med programvaran PWM är lika bra som den hårdvara PWM - iallafall för 8 bitars upplösning.

Hur sant är det?

Observera att jag inte är så intresserad av koden rightaway (jag ligger LOTS of soft PWM koden här och google) - Jag ville höra vad ni har att säga om detta.

Mitt behov är att generera sub kHz (cirka 100 till 500Hz - inte allt på samma gång) med justerbar Utskriftskapacitet (minst 10% till 90%) för att driva en likströmsmotor kontrollsystem.(Jag är inte på jakt efter DDS!)

Om möjligt skulle jag kunna lämna TIMER gratis eftersom samma IC kommer att användas för quadrature avkodning.

Jag kommer att vara starkt föredrar en teknik som inte använder 18F delar och kommer att fungera fint på en 16F som det 628a/877a.

4 / 8 kanaler med PWM blir trevligt eftersom jag kommer att kunna genomföra låst kontrollera anti fas istället för undertecknad omfattning.

Keep the suggestions flyter in!Oh - Självklart måste de vara i CCS C

Jag läste 00654a.pdf titeln "PWM, en mjukvarulösning för PIC16CXXX".

Det är definitivt en intressant läsning.

Någon kodade som redan i C?Koden behöver inte nödvändigtvis vara testade, eller ens kompilera för den delen.

Skål

 
Om jag förstår vad jag läst hittills, behöver du en tidsinställd avbryta och inga andra avbrott.

Första uppdatera PWM värden, sedan polla USART och allt annat som behöver underhåll.

Några rader av kod kommer att behövas för varje kanal för PWM, och det kommer att begränsas till låga hastigheter.Låt oss anta att du vill 500Hz och 8 bitars upplösning.Du kommer att behöva service det varje 7.8uS (2mS/255values).Med en 20MHz kristall du behöver göra allt i en 39 cykel instruktion loop.

Jag hoppas att detta hjälper.

 
Efter peta runt med motorer, ser jag att jag gör bra med 250Hz ...

Någon som har någon kod för att göra det?

 
Killar,

kommer det att vara möjligt att konstruera hårdvara med 74xx logik att dela frekvens med en känd faktor, men bevarad duty cycle.

Till exempel skulle en sådan krets dela en ingång på y Hz @ x% skyldighet att (y / k) Hz vid x% tull (vi har delat med k)

 

Welcome to EDABoard.com

Sponsor

Back
Top