Музыкальная шкатулка или шарманка
Устройство представляет собой плеер MOD (музыкальный файл компьютера Amiga), совмещенный с ручным электрогенератором. Устройство предназначено для развлекательных целей, а так же изучения основ ЦОС (цифровой обработки сигналов) на микроконтроллерах семейства STM32F100 в процессе создания.
- Объем энергонезависимой памяти для хранения мелодии – 120 кБайт (зависит от типа примененного МК)
- Частота дискретизации – 36.5 кГц
- Разрешение ШИМ – 3072 такта (около 11.5 Бит)
Примечание: тут может возникнуть вопрос о тактовой частоте МК. Да, он разогнан, подробности далее по тексту.
Схема состоит из 3-х функциональных узлов: источника питания; процессорного блока; и усилителя мощности.
Источник питания выполнен на базе двухфазного генератора переменного тока G1, в роли которого выступает шаговый двигатель и редуктор от старого МФУ, двух удвоителей напряжения на диодах VD1-VD4 и конденсаторах C2 и C3, включенных параллельно для увеличения выходного тока. Это вариант для двухфазного шагового двигателя. При применении трёхфазного генератора устанавливаются диоды VD5 и VD6, а конденсаторы C2 и C3 исключаются из схемы. Три фазы генератора подключаются к средним точкам соединения диагоналей моста.
Конденсатор C1 является фильтрующим и сглаживает пики потребления тока усилителем мощности от генератора.
Основанием редуктора служит отрезок шины из электротехнического алюминия толщиной 10мм, в который при помощи компонентного клея вклеен игольчатый подшипник от привода головок старого винчестера. Применение такого подшипника обусловлено высокими радиальными нагрузками при вращении ручки привода, и второй причиной такого решения было наличие самого подшипника под рукой. Сквозь внутреннюю обойму подшипника проходит вал, с одной стороны которого приклеена ведущая шестерня, а с другой нарезана внешняя резьба для установки приводной ручки. Приводная ручка изготовлена из ручки от катушки для спиннинга, в центре вращения которой вклеена стальная втулка с внутренней ответной резьбой. Это сделано с целью возможности снятия ручки для удобства транспортировки и разборки устройства. Промежуточная шестерня свободно вращается на оси, закрепленной на резьбе к основанию. Шаговый мотор при помощи стоек так же закреплен на основании, и при помощи монтажного провода присоединяется к плате. В основании имеются три отверстия с резьбой для крепления редуктора с внутренней стороны корпуса устройства.
Крепление приводной ручки.
Генератор в сборе
Процессорная часть устройства содержит микроконтроллер D2 — STM32F100RB и линейный стабилизатор напряжения D1 — 1117-3.3. Цепи обвязки МК урезаны до минимально необходимого уровня – только фильтрующие керамические конденсаторы C5-C9 на шинах питания, подтягивающий резистор R2 для линии NRST (сброс). Кварцевый резонатор для стабилизации тактовой частоты отсутствует, используется синхронизация от встроенного RC-генератора. На входе стабилизатора напряжения D1, в непосредственной близости, установлен танталовый конденсатор C4 для фильтрации коммутационных помех и всплесков напряжения.
Резистор R1 ограничивает ток, приходящий с одной из фаз генератора в порт PA8 микроконтроллера. С помощью этого сигнала управляющая прошивка МК отслеживает скорость вращения генератора и пропорционально изменяет скорость воспроизведения мелодии, что несколько «оживляет» характер звучания.
Разъём X1 предназначен для подключения программатора типа ST-Link или аналогичного для прошивки ПО или мелодии. На него выведены сигналы внутрисхемного отладчика Serial Wire Debug фирмы STMicroelectronics, а так же общий провод и шина питания. Механически разъём посажен на клей и находится на нижней стенке корпуса устройства.
Выходы микроконтроллера PA2/TIM2_CH3 и PA3/TIM2_CH4 – выходы внутреннего таймера TIM2, работающего в режиме шим-модулятора, идущие на входы драйверов усилителя мощности D3 и D4. Драйверы прямые, то есть когда на входе лог. 1 – на выходе напряжение питания (почти), соответственно при лог.0 на входе – на выходе уровень напряжения около GND. Усилитель мощности работает в классе Д и изначально был выполнен на микросхемах драйвера затвора МОП-транзисторов производства фирмы IR. Такая схема включения не является стандартной, и амплитуда выходного тока микросхем IR4427 не позволяла добиться приемлемых результатов. Затем при дальнейших экспериментах было установлено, что данные микросхемы деградируют при работе на индуктивную нагрузку, что выражалось в хриплом и шипящем звучании устройства спустя некоторое время. Было принято решение замены на более мощные драйверы фирмы IXYS IXDN614SI, отдающие согласно даташита длительный ток порядка 4 Ампер и имеющие выходные каскады на полевых, а не биполярных, транзисторах. Это позволило уменьшить статические потери на открытых выходных ключах данных микросхем и несколько поднять уровень громкости устройства. Применение мощного драйвера затвора в такой нестандартной роли имеет свои преимущества перед решениями на дискретных компонентах – простота схемной реализации и минимум навесных элементов, широкий диапазон питающих напряжений, низкий ток потребления, высокую скорость нарастания/спада выходного напряжения и, как следствие, минимальные потери на переключение.
Печатная плата была переделана на лету с помощью ножа и проволочных перемычек, так как у микросхем IR4427 и IXDN614SI различается цоколёвка. Резисторы R3 и R4 – подтягивающие, предотвращают щелчок при подаче питания, пока МК проходит этап сброса и инициализации. Конденсаторы C10 и C11 – керамические, шунтирующие шины питания драйверов на высоких частотах. Второй вариант платы был разведен сразу под применение микросхем IXDN614SI и имеет меньшие габариты. На плате есть две перемычки, это отражено в проекте Sprint Layout. Плату при ЛУТе и подобных технологиях надо зеркалить, так как то, что видно на экране в Sprint Layout, то же должно быть видно на стороне меди. Проверочный прототип второго варианта платы получился ужасного качества в силу изношенного фотобарабана, отсутствия правильной бумаги и прямых рук. Многочисленные протравы были пропаяны проволочными перемычками.
Выходные LC-фильтры, применяемые в «классических» усилителях мощности класса Д, в данном устройстве отсутствуют в силу специфики алгоритма управления выходными каскадами УМ, позаимствованными у фирмы производителя микросхем Texas Instruments. Это интересная технология Filterless, которая за счёт несимметричной длительности импульсов модулирующего сигнала для каждого полумоста не требует выходных фильтров, а размах амплитуды несущей частоты ШИМ на выходе ключей вдвое ниже, чем у обычных усилителей класса Д.
Собранная плата. Вариант 1
Собранная плата. Вариант 2. Без конденсаторов C1-C3 и диодов VD5, VD6
Нагрузкой усилителя мощности служит динамическая головка BA1 сопротивлением 6 Ом, у которой был удален магнитный экран для облегчения компоновки внутреннего пространства устройства. Головка расположена на нижней стенке устройства и закрыта декоративной решеткой типа «гриль» от 80-мм компьютерного вентилятора.
Все отклонения от рекомендаций производителей электронных компонентов (D2, D3, D4) и нестандартные решения были использованы с целью максимально упростить конструкцию, к которой не предъявляется особых требований по надёжности и стабильности. Тем не менее, в результате испытаний, в том числе стресс-тестов на повышенных напряжениях питания (18 Вольт), низких сопротивлениях нагрузки, в том числе «тяжелой» (реальные акустические системы сопротивлением 4 Ом) и т.д., каких-либо отклонений или «глюков» в работе устройства обнаружено не было.
P.S. На первой версии печатной платы слева можно увидеть 4 smd светодиода и резистор. Эти элементы устанавливались для отладки и в текущей версии платы они отсутствуют.
Шаговый двигатель можно применить практически любой, желательно, что бы сопротивление обмоток постоянному току было возможно ниже. У мотора, примененного в устройстве, сопротивление обмоток около 14 Ом каждая. Эксперименты с двигателями от старых сканеров (с питанием от внешнего блока на 12 Вольт), а так же с двигателями привода шпинделя от 5.25 дюймовых дисководов дали положительный результат.
От такого «экзотического» источника питания можно отказаться вовсе, используя иной любой с выходным напряжением в пределах 5-9 Вольт, при этом потребуется установить выключатель питания и немного изменить прошивку для корректной скорости воспроизведения мелодии. Это отражено в проекте для CooCox, требуемый вариант необходимо раскоменнтировать, а ненужный закоментировать.
Микроконтроллер D2 подойдёт любой из серий F100, F101, F103. Основной критерий выбора – объём flash-памяти. Но, из-за специфики работы встроенного контроллера памяти, для серий F101 и F103 необходима модификация процедуры инициализации в прошивке. Сам плеер занимает 8кБайт flash- памяти с адреса 0x08000000 по 0x08001FFF. С адреса 0x08002000 и до физического конца flash находится файл мелодии. Если музыкальный файл не помещается в память МК полностью — возможны зависания по ошибке защиты памяти STM32.
Микросхемы драйверов D3 и D4 могут быть заменены на любые аналогичные с соблюдением цоколёвки. Возможен вариант применения дискретного ключевого усилителя, но это выходит за рамки данной статьи.
Микросхему D1 и всю остальную мелочевку можно найти на материнских платах от ПК и ноутбуков.
Динамическая головка BA1 может быть любой, с сопротивлением катушки постоянному току 4 – 16 Ом. Желательно выбирать головку с высокой чувствительностью – это повысит громкость воспроизведения.
Корпус устройства изготовлен из 10мм фанеры и имеет форму куба с внешним ребром длинной 120мм. Соединение частей корпуса выполнено встык с помощью клея ПВА, смешанного с мукой для придания ему большей вязкости. На правой боковине имеется одно отверстие для приводной ручки и три для крепления редуктора. На нижней стенке корпуса имеется фигурный вырез для крепления динамика. Там же расположены защитная решетка и сервисный разъём для прошивки устройства. Снаружи на корпус нанесён рисунок по мотивам компьютерной игры «Stalker», соответственно мелодия, прошитая в устройство это вариация на тему композиции группы FireLake «Dirge for the Planet» (эта мелодия играет в подвале у торговца в начале игры).
Внешний вид и вид изнутри. В левом нижнем углу видно прошивочный шнур и китайский вариант ST-Link.
Файл мелодии или что такое MOD?
Компьютер Commodore Amiga имел в своём составе звуковой чип Paula (MOC 8364), который представляет из себя полноценный цифровой семплер. Эта микросхема позволяет одновременно воспроизводить 4 ИКМ (PCM) семпла с разрядностью 8 бит каждый и возможностью на ходу менять скорость и громкость воспроизведения, зацикливать семпл на определенных точках. В результате начали появляться программы для написания музыки – так называемые трекеры. В них музыка не имеет привычного представления и более походит на программирование на ассемблере. Ноты записаны латинскими буквами C,D,E,F,G,A,B, октавы проставляются через черточку цифрами, а эффекты и параметры воспроизведения записываются рядом в шестнадцатеричном виде. Каждый из четырёх каналов представляет собой столбик из нот, октав и эффектов. В результате воспроизведения этот «конвейер» двигается вверх, и программа-плеер передаёт управляющие команды в звуковой чип, который воспроизводит звук, находящийся в оперативной памяти. Далее появились трекеры и на IBM совместимых компьютерах, где формат получил стремительный рост и вылился в несколько независимых форматов: S3M, XM, IT, и т.д.
Формат MOD привлекает своим малым объёмом при относительно высоком качестве и скромными вычислительными ресурсами требующимися при воспроизведении. Программное обеспечение используемое при создании мелодии – OpenMPT для ПК на платформе Windows. Существует несколько версий MOD-файлов; устройство поддерживает только 4-х и 8-ми канальные. Есть функция автоопределения.
Микроконтроллер за счет программного обеспечения эмулирует сразу два чипа MOC 8364 (Paula), и способен одновременно воспроизводить 8 семплов, находящихся во внутренней flash-памяти. Принцип воспроизведения основан на аккумулировании фазы записанного сигнала для возможности проигрывать каждый семпл с произвольной частотой. То есть положение воспроизведения семпла не целое, а дробное число. При частотах оцифровки и воспроизведения кратных друг другу никаких проблем не возникает; но стоит им стать дробными – появляется шум из-за неточностей восстановления исходного сигнала. И в этом случае на помощь приходит интерполяция, которая позволяет вычислить с необходимой точностью амплитуду сигнала в текущий момент времени, а не только те, которые есть в исходном семпле. В прошивке реализован алгоритм кубической интерполяции который успешно выполняет функцию передискретизации при незначительном уровне шума.
В некоторых композициях присутствует значительный уровень низкочастотной составляющей, которая за счет малого объёма корпуса и конструктивных особенностей динамической головки не может быть эффективно воспроизведена, но при этом расходует энергию источника питания и вносит искажения. Для уменьшения уровня НЧ в выходном сигнале применен цифровой БИХ-фильтр ВЧ 2-го порядка с частотой среза 100 Гц, что положительно сказалось на общем качестве звучания.
Возвращаясь к вопросу о тактовой частоте. За счет встроенной в МК системы ФАПЧ (PLL) тактовая частота ядра повышена с 24 МГц (штатно) до 56 МГц., что при коэффициенте пересчёта таймера TIM2 N=1536 и выключенном предделителе даёт частоту несущей ШИМ примерно 36.5 кГц, которая лежит за границей слышимого диапазона и дополнительно отфильтровывается не слишком широкополосным громкоговорителем. Согласно теореме Котельникова, максимально возможная воспроизводимая частота составляет около 18 кГц, чего с запасом достаточно для данного устройства.
Период счетчика ШИМ 3072 при коэффициенте пересчёта таймера TIM2 N=1536 обусловлен использованием для первого модулятора полумоста частного от деления сигнала на 2, пришедшего с микшера; а для второго модулятора полумоста – разности периода таймера TIM2 и частного. Результирующее разрешение увеличивается на один бит, который при обычном делении на 2 (побитном сдвиге вправо) отбрасывается. В итоге имеем Log23072 = 11.58 бит разрешения выходного сигнала.
Прошивка устройства разработана в среде CooCox IDE, и блок основных вычислений с фиксированной точкой написан на ассемблере для повышения производительности, так как только кубическая интерполяция 8-ми каналов с частотой 36.5 кГц требует порядка 2.3 Млн операций умножения в секунду, не считая операций сложения и других, не менее важных вычислений, в которые входит микшер, БИХ-фильтр ВЧ, декодер формата MOD.
Устройство не требует наладки и при правильном монтаже начинает работать сразу после прошивки. Фьюзы установлены по умолчанию в утилите STM32 ST Link Utility. Для примера можно порекомендовать прошить отладочную плату STM32VLDiscovery, подключив динамическую головку к выводам PA2 и PA3 через токоограничивающий резистор сопротивлением около 200 Ом.
Оба варианта печатной платы устройства были разведена и откатаны ЛУТом за один вечер, а исходники первого варианта печатной платы, к сожалению, утеряны. Версий второго варианта 2; полная и обрезанная. В обрезанной версии удалены площадки под неиспользуемыми выводами микросхем для облегчения монтажа.
Используемые интернет ресурсы:
Источник