Аудио плеер на микроконтроллере AVR
Во время очередной ревизии радиоэлектронного барахла и распихивания по коробочкам мне попался контроллер AVR atxmega256a3u. Дабы развеять скуку было решено сделать некое подобие звуковой карты, а точнее ЦАП, подключаемый к компьютеру.
Линейка микроконтроллеров XMEGA является развитием знакомых большинству любителей электроники контроллеров MEGA, добавлено много интересных плюшек, но все описанное ниже можно реализовать на традиционной серии. Рекомендую лишь использовать те контроллеры, где побольше ОЗУ.
От слов к разработке, поразмыслив пришел к такой структуре устройства:
Буду воспроизводить музыку из WAV-файлов, моно, 8 бит с частотой дискретизации 44.1 кГц. Посылка последовательного порта состоит из 10 бод (стартовый и стоповый биты, 8 битов данных), значит требуется скорость не ниже 441 кБод/с. Аппаратура позволяет работать быстрее, беру с запасом скорость передачи данных 2000 кБод/с.
Внутри контроллера буфер FIFO, он же очередь «первый пришел — первый вышел». По таймеру с частотой 44.1 кГц запускается прерывание извлекающее из буфера очередной отсчет и передающее его цифро-аналоговому преобразователю, а также по необходимости выполняется запрос очередного пакета данных у ЭВМ. Размышляя обо всем этом трассирую и травлю «отладочную» плату для микроконтроллера:
Самым интересным в этой разработке пожалуй является ЦАП. В моем микроконтроллере есть встроенный ЦАП, но использовать его не спортивно, к тому же в большинстве микроконтроллеров такой роскоши нет. Ничего страшного, ЦАП можно сделать самому из горсти резисторов по схеме R-2R:
Такая схема позволяет получить на выходе напряжения в диапазоне от 0 В до уровня логической единицы, в моем случае это 3.3 В. Сделаю восьмибитный ЦАП, у меня под рукой лишь резисторы с допустимым отклонением 5%, а значит точность потеряется с пятого разряда поскольку (1/2^5)<0.05. Тем не менее, надеюсь, что младшие разряды позволят озвучить слабые спектральные составляющие сигнала. Собираю из резисторов номиналом 5.1 кОм вот такого монстра:
Тут же ставлю усилитель TDA2822M, подключаю по мостовой схеме из даташита:
И делаю акустическую систему с фазоинвертором:
Пора послушать:
Схемами, исходниками и посильной помощью готов поделиться со всеми желающими, пишите!