AVR Възпроизвеждане на PCM аудио от SD карта, живот на Embedder

Живот в технологиите

Всъщност пускам статията, която обещах по-рано. Трябва да кажа, че този проект се оказа изключително търсен (аз самият съм изненадан) - разработените модули влязоха в две устройства и изглежда, че ще се случи третото. Така че да не ги показваме в блога би било двойно погрешно.

Аудио изходът е същността на цифрово-аналоговото преобразуване. Това може да стане по различни начини - поставете R-2R матрица, вземете готов DAC чип, използвайте PWM изход. Ние се интересуваме от последното, защото ни позволява да се справим с най-малко количество външни компоненти и в същото време създава някои предпоставки за получаване на висока ефективност на AF усилвателя (ако целта е да свържете високоговорител, а не изход към линеен изход, например).

Вече писах за ШИМ (по-специално по отношение на AVR). Накратко, забележително е, че ефективната стойност на такъв сигнал е пропорционална на неговия работен цикъл. Съответно, ако със скоростта на вземане на проби от дигитализирания сигнал, представляващ интерес, стойностите на работния цикъл са пропорционални на действителните стойности на извадката, ефективната стойност на ШИМ сигнала спрямо времето ще представлява възпроизведения сигнал. Остава само да филтрираме носещата честота на ШИМ (и в същото време честотата на дискретизация), а на изхода получаваме аналогов сигнал от цифров. В случай на високоговорител можете да не филтрирате нищо - инерцията на механиката ще направи всичко сама. Тогава усилвателят може да работи в ключов режим и съответно да има висока ефективност.

  1. Теорема на Котелников-Найквист: честотата на дискретизация трябва да бъде най-малко два пъти максималната честота на възпроизвеждания сигнал.
  2. Основно правило: Носещата честота на ШИМ трябва да бъде най-малко два пъти честотата на дискретизация.

Както вече споменахме по-горе, красотата на избрания метод е, че от външни компоненти не се изисква нищо - почти всички контролери имат вграден PWM блок за генериране. Ако искаме линеен изход, поставяме RC филтър с гранична честота, определена от теоремата на Котелников-Найквист. По-добре би било, разбира се, да се постави филтър от втори ред, но по отношение на слушането на звука ще свърши проста RC схема. Ако искаме мощен изход към високоговорителя, поставяме ключова сцена. Според TK имах нужда точно от високоговорителя, затова поставих ключовия етап (схемата с най-добро качество е в файловете на проекта):

аудио

Веригата е проектирана с перспектива за монтаж в различни конфигурации. Без промяна на печатната платка е възможно да се получат следните опции:

1. Основната схема, която отиде при клиента.

  • не е инсталиран: C2, DA1, Q5, Q6;
  • монтиран е джъмпер R2;
  • R5, R6, R7 заменени от джъмпери, сигналът се отстранява от PWMA изхода.

В тази конфигурация той се захранва от 3V батерия (изискване за SD карта) и теоретично е в състояние да доставя мощност на товар до ват. В действителност измереният среден ток в работен режим е 30 mA (натоварване 16 Ohm).

2. При желание схемата може да бъде подобрена:

  • задайте Q5 и Q6, R5/R6/R7 на посочените стойности, премахнете сигнала от ШИМБ;
  • вдигнете захранващото напрежение, извадете джъмпера R2 и монтирайте стабилизатора и C2. В този случай максималната мощност в динамика ще се определя изключително от товароносимостта на изходните транзистори и може да бъде десетки ватове. Може да се наложи да изберете R6, за да осигурите оптималната работа на изходния етап (този резистор задава защитния интервал, без него каскадата ще излъчва дим при сериозно натоварване).

Силно се препоръчва да свържете горния щифт на R3 към земята чрез резистор от около 10K. Това ще спести Q2 от работа в откъснат основен режим, докато контролерът все още не е конфигурирал крака OC0B за извеждане. Съжалявам, първоначално го пренебрегнах, проектът беше направен набързо. По принцип ще работи по този начин, но е по-добре да бъдете застраховани.

Високоговорителят е свързан чрез кондензатор с капацитет около 22 μF, монтиран с навес. Това е достатъчно.

Към щифта RDSW първоначално е бил свързан тръстиков превключвател. Когато щифтовете RDSW са затворени, веригата е деактивирана.

Пинът на конектора за SD карта не е показан на диаграмата, тъй като се определя програмно - в този проект използвах драйвера на SD картата си в оригиналната му форма, със софтуер SPI. Да, ATmega48 има хардуерен SPI, но софтуерът е по-удобен и скоростта му е напълно достатъчна, затова го използвах.