Best-404-Error интересуется, можно ли получить результат компиляции длиной менее 512 байт, если исходник написан на языке высокого уровня. Можно, если упростить возлагаемую на прошивку задачу.
Программная реализация усилителя класса D позволяет менять его параметры (частоту ШИМ, скважность в режиме покоя) сменой прошивки.
Схема аппаратной части устройства:
Входные сигналы проходят через конденсаторы для отсечения постоянной составляющей, а затем — через резисторные делители, прибавляющие к ним новую постоянную составляющую порядка +0,55 В. Одновременно конденсаторы и нижние резисторы делителей образуют ФВЧ, отсекающие частоты ниже 28 Гц. Опыт показал, что частоту среза этих фильтров лучше ещё повысить, потому что небольшие искажения возникают всё равно.
Сигналы поступают на первый и третий АЦП микроконтроллера. Опорное напряжение АЦП выбрано равным 1,1 В. Коэффициент деления тактовой частоты составляет 16, поэтому АЦП работают на частоте в 500 кГц. Процедура обработки прерываний циклически переключает первый и третий АЦП. Одно из считанных значений записывается в OCR1A, второе — в OCR1B.
Таймер 1 настроен так, чтобы единица на выходах ШИМ появлялась при совпадении с этими значениями, а нуль — при сбросе в нуль таймера. Эта часть алгоритма после настройки выполняется аппаратно, но одновременно с амплитудой сигнала меняется относительно первоначально заданной и частота ШИМ.
Если скважность в режиме покоя выбрана 50-процентной (лучше качество, но меньше экономичность), перед динамическими головками нужны ФНЧ.
Файлы: исходник на C++, результат компиляции Atmel Studio 7.0 (получилось 495 байт), схема в формате Eagle, плата в нём же, G-код для прорезки рисунка платы, её сверления, вырезания в размер.
Плата односторонняя:
Динамические головки подключены через стандартный сдвоенный H-мост L293N:
Усилитель в действии:
Автор: Tormoz Edison