Воспроизведение звука на PIC

В данной статье рассмотрен один из способов воспроизведения звука на PIC-микроконтроллере с использованием PCM-модуляции. Импульсно кодовая модуляция (PCM) — это цифровое представление аналоговых сигналов, где через каждые равнозначные промежутки времени, измеряется мгновенное значение амплитуды сигнала и представляется в цифровом (как правило двоичном) виде.

В качестве микроконтроллера был выбран PIC18F1320 (Даташит) с 8кБ Flash-памяти и модулем ECCP. В память размеров 8 кБайт помещается приблизительно одна секунда звука с частотой сэмплирования 8000Гц. 1 секунда звука это конечно не идет ни в какое сравнение с современными устройствами воспроизведений, но целью статьи в первую очередь является возможность показать работу с звуком PCM на PIС.

Ауио-сэмплы WAV могут быть свободно найдены в интернете или могут быть самостоятельно сконвертированы в формат PCM 8000 Гц, 8 бит, моно b продолжительностью не более 1 секунды.

Помимо микроконтроллера в схеме используется стабилизатор напряжения 78L05 (КРЕН5), конденсатор 100нФ, динамик и ФНЧ. Фильтр нижних частот настроен на обрезку 3.3 кГц.

PIC-микроконтроллер сконфигурирован на работу без внешнего кварца. Т.о. экономя кварцевый резонатор и пару конденсаторов. Частота внутреннего 8 МГц.
Для динамика можно использовать УНЧ.

Программное обеспечение было написано на C (HI-TECH). В программе задействован ECCP-модуль для генерирования аппаратного ШИМ-сигнала. Timer 2 задействован для разделения ШИМ-периодов. Для создания пауз, прерывание Timer 2 работает как декрементный счетчик.

Цифровое представление звука сохраняется в H (header) файлах. Утилита pcm2h была создана для чтение PCM файлов и создания H-файлов.
Программа для создания РСМ-файлов из WAV: Linux Mplayer
Пример конвертации: mplayer myfile.wav -ao pcm:nowaveheader:file=myfile.pcm

Первые тесты показали, что данного ФНЧ не достаточно для уменьшения модуляционных шумов 8 кГц. Потому, возможно понадобится установить ФНЧ второго порядка.

Т.к. динамик напрямую подсоединяется к PIC, то мощности контроллера явно не достаточно, звук еле слышно, поэтому, чтобы услышать нормальный звук, потребуется какой-нибудь простенький усилитель НЧ.

Скачать прошивку, исходники, проект в MPLAB и примеры звуков вы можете ниже

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.