Zaslal: po červen 22 2009, 16:53 Předmět: sound pomocí PWM
Ahoj,
potřebuji ubastlit velice jednoduchý přehrávač wavu. Zvuk bude uložen ve flash paměti AVR procesu a pomocí PWM a RC filtru 1. řádu bych měl generovat zvuk.
Jelikož mám zvuk ve wavu vzorkovaný 8kHz, je mi jasné, že každých 1,25 ms bych měl změnit střídu PWM signálu podle daného vzorku v datovém souboru. Problém je, že perioda PWM v AVR je 320ms, takže počet period na jeden vzorek zvuku je pouze 4. To se ani nestihne ustálit stejnosměrná hodnota na konzátoru na PWM. Nebo by to mělo pracovat na jiném principu a mě něco uteklo. Za jakékoliv rady budu vděčný.
Jo a taky s 320ms periodou toho moc nepřehraješ, chtělo by to udělat si nejprve jasno v jednotkách.
Kromě vzorkovací frekvence je u signálu ještě důležitý parametr šířka pásma, od toho se dále odvíjí požadavky na rekonstrukční filtr. Předem se rozluč s tím, že bude stačit RC článek. Takže je potřeba, abys udal šířku pásma toho navzorkovaného signálu, tj. jakou maximální frekvenci ten signál před navzorkováním obsahoval, resp. jakou max. frekvenci chceš při tom přehrávání zachovat nepotlačenou.
S těma 320ms je to samozřejmě špatně, měl jsem si to po sobě přečíst, jedná se o 32us. Vzorky se mění každých 125us. Poměr je pořád stejný (4x).
Ohledně šířky pásma. Nároky na kvalitu mám minimální. Jedná se o dva kratičké příkazy, dlouhé cca 1s.
R-R2 převodník jsem již použil a přehrávání fungovalo. Momentálně však nemám k dispozici dostatek IO a tak jsem na netu našel přehrávání zvuku pomocí PWM. Nikde jsem však nenašel vysvětlení, spíše jen předvedení výsledku.
Díky
Na tento článek a projekt už jsem při svém hledání také narazil. Pořád ale nechápu princip. Když jsem to stavěl pomocí R-2R, tak to bylo jasné, každých 125us jsem na výstupu převodníku vytvořil požadované napětí podle daného vzorku a prohlal skrz rekonstrukční filtr. Zde mi je princip naprosto jasný.
Ale v případě toho PWM ne. Nechápu jak PWM může stihnout vytvořit na svém vystupu nějaký stejnossměrný vzorek, když na to má v případě AVR jsem 4 periody.
Kdyby mi to někdo vysvětlil, tak bych byl rád. Nechci stavět něco, čemu moc nerozumím.
Díky
Ale v případě toho PWM ne. Nechápu jak PWM může stihnout vytvořit na svém vystupu nějaký stejnossměrný vzorek, když na to má v případě AVR jsem 4 periody.
Kdyby mi to někdo vysvětlil, tak bych byl rád. Nechci stavět něco, čemu moc nerozumím.
Díky
No nějakou dobu trvá, než se kondenzátor na výstupu PWM nabije. Jestliže mám k dispozici jen 4 periody na jeden vzorek, nemusí se na kondenzátoru ustálit požadované napětí.
Podle mě tedy, neříkám ale, že mám pravdu. Kvůli tomu jsem založil toto vlákno.
No nějakou dobu trvá, než se kondenzátor na výstupu PWM nabije. Jestliže mám k dispozici jen 4 periody na jeden vzorek, nemusí se na kondenzátoru ustálit požadované napětí.
Podle mě tedy, neříkám ale, že mám pravdu. Kvůli tomu jsem založil toto vlákno.
Doba potřebná na nabití kondenzátoru snad závisí na časové konstantě, tj. na jeho kapacitě a odporu, přes který se nabíjí. Když vhodně zvolíš časovou konstantu, není důvod, aby to nefungovalo.
Tak na to mám zase námitku
Když mám chci rychlé nabíjení z důvodu nedostatku času na vzorek, tak zvolím malou T (podle R a C). Je pravda že kondenzátor se pak rychle nabije, jenže se také rychle vybije v době, kdy PWM výstup bude v nule. Když čas. konstantu zvětším, pak se zas nestihne nabít.
Nemám pravdu?
Tak na to mám zase námitku
Když mám chci rychlé nabíjení z důvodu nedostatku času na vzorek, tak zvolím malou T (podle R a C). Je pravda že kondenzátor se pak rychle nabije, jenže se také rychle vybije v době, kdy PWM výstup bude v nule. Když čas. konstantu zvětším, pak se zas nestihne nabít.
Nemám pravdu?
Ten RC článek funguje jako filtr, který slouží k získání střední hodnoty z PWM průběhu. Ale jak už jsem napsala na začátku, RC článek nestačí, je potřeba filtr vyššího řádu. RC článek by se dal použít, kdybys měl frekvenci PWM třeba 200kHz. Když máš frekvenci PWM jen 32kHz, budeš potřebovat strmější filtr.
Stejně tak když máš vzorkovací frekvenci 8kHz a chtěl bys přehrávat signál obsahující frekvence do 3kHz, potřeboval bys rekonstrukční filtr, který by na 3kHz ještě netlumil a na 8-3=5kHz už měl dostatečný útlum. To taky neuděláš RC článkem, na to potřebuješ filtr tak 8.řádu. Pokud bys ten signál převzorkoval na 32kHz (a použil PWM 64kHz), dosáhl bys stejného výsledku s filtrem 2. řádu.
Je to bráno pro dosažení kvality zvuku alespoň trochu připomínající analogový záznam. Pokud ti stačí, když mcu přehraje jakési polosrozumitelné sekundové "zachrochtání" smixované s 8kHz pískáním, možná si vystačíš jen s RC článkem se zlomem na 3kHz
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.