В данной статье рассмотрен один из способов воспроизведения звука на 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 и примеры звуков вы можете ниже
Прикрепленные файлы:
- sound_pic.rar (182 Кб)