Эффект эхо (echo) на микроконтроллере Atmega32

Эффект эхо (echo) на микроконтроллере Atmega32

Когда я учился в 10 классе, я усиливал аудио сигнал схемой на нескольких транзисторах bc547 – bc557. С помощью этой схемы я мог усиливать аудио сигнал, но не мог создать эффект эхо как в громкоговорителях. Я просто не мог себе представить, как реализовать такой эффект. Тогда это было за пределами моих знаний.

Сейчас я могу сделать это, просто произведя цифровую обработку сигнала с помощью микроконтроллера. Принцип работы очень прост – в кольцевом буфере применяется обратная связь с запаздыванием. Сделано это с помощью микроконтроллера ATmega32. Это простой, но очень интересный проект. По этому принципу мы можем сделать не только эхо, но и много других небольших DSP эффектов, если у микроконтроллера будет больше ОЗУ.

Принцип действия

В проекте я использовал микроконтроллер Atmega32. Он имеет 2КБ ОЗУ и АЦП, чего достаточно для реализации данного эффекта эхо.  Для захвата голоса используется электретный микрофон. Сигнал с него подается на АЦП с соответствующим усилением и смещением уровня, что важно для качественной работы. АЦП преобразует аналоговый сигнал в цифровой, с определенной настраиваемой частотой дискретизации. Используется кольцевой буфер на 1900 байт. Нам необходимо сделать задержку при входе и выходе звука. Таким образом, для получения задержки мы можем заполнить буфер в одной точке, а прочитать в другой. Как сделать эту задержку максимальной? Это хорошо объясняется диаграммой.

uint8_t buf[1900];

Теперь необходимо сделать эффект эхо. Для этого нам необходимо обеспечить обратную связь от точки чтения, к точке записи. Говоря простыми словами, мы должны добавить уменьшенную модель считываемого сигнала вместе с образцом записи. Коэффициент обратной связи всегда должен быть <1. Таким образом, цифровой сигнал в буфере обрабатывается путем добавления эффекта эха. Считаные данные выходят из микроконтроллера в виде ШИМ сигнала, который может быть демодулирован с помощью простого RC фильтра, и усилен при помощи УНЧ.

В программе я добавил 5 уровней эхо – от эхо 0 до эхо 4.

Наблюдения

Если увеличить частоту дискретизации, то время от основного звука до эхо и длительность эхо будет меньше, но качество звука увеличится.

Если уменьшить частоту дискретизации, то время от основного звука до эхо и длительность эхо увеличится.

Если увеличить коэффициент усиления обратной связи, объем эхо и количество его повторения увеличится.

Если увеличить коэффициент усиления обратной связи выше 1, то звук испортится за счет колебаний.

Чтобы получить очень хорошее качество звука с хорошим эффектом эха, должно быть много ОЗУ и частота дискретизации должна быть высокой.  Для этой цели лучше подойдет ATmega2560 с 8КБ ОЗУ.

Принципиальная схема устройства:

Схема микрофонного усилителя:

Схема фильтра:

Также необходим любой усилитель звука НЧ. Схему, подходящую к вашим колонкам можно легко найти в интернете, и я не стал давать её тут.

Видео работы устройства:

Скачать исходник и прошивку

Оригинал статьи на английском языке (перевод: Александр Касьянов для сайта cxem.net)


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 9

Добавить изображение

Последние статьи