Шарманка, XXI век (продолжение)

(начало смотри здесь )

Дополнения к предыдущей статье. Новый генератор.

Номера мелодий, «зашитых» в микроконтроллер.
В случае отсутствия SD-карты мелодии считываются из внутренней памяти микроконтроллера. В проекте мелодиям соответствут файлы track0.inc ... track9.inc, из которых только track1.inc, track2.inc и track3.inc – непустые. Это связано с ограниченным объемом памяти микроконтроллера. Указанные мелодии соответствуют положениям переключателя «001», «002» и «003», причем для упрощения программы опрашивается только младшая цифра, а остальные могут быть любыми.

Не воспроизводит файлы с SD карты.
Скорее всего, у вас одна из современных карт, не поддерживающих старый протокол обмена. Потрясите ваших знакомых на предмет ненужных карт объемом до 2 Гб. Здесь также уместно заметить, что и слишком древние карты тоже не будут воспроизводиться – во первых, они будут отформатированы в файловой системе FAT12 (из-за малого объема, но это можно обойти), а во-вторых – из-за другого алгоритма инициализации.

Другая возможная причина – не находятся файлы из-за неправильного написания имени папки "muzdata". Понять, что послужило причиной можно, если уставновить переключатель в положение "001"..."003": если появилась мелодия, зашитая в микроконтроллер – то карта несовместима по протоколу обмена, если тишина – то карта в принципе читается, но файл или каталог (или вообще файловая система) не найдены.

Формат музыкальных файлов *.bor.
Описание байтов (в виде коментариев) можно найти в файле Synth.asm, но для удобства описание этого формата привожу отдельно. Такую же структуру имеют и файлы trackN.inc, входящие в проект, причем информацию о длине записи, якобы «необходимую для правильной работы алгоритма поиска» включать не надо – это моя ошибка, связанная с наличием других проектов, где такой алгоритм используется! Впрочем, если длина записи все же будет присутствовать – это практически никак не скажется на воспроизведении.

Почему не midi?
Изначально предполагалось, что файлы будут храниться во внутренней памяти микроконтроллера, а чтобы туда их побольше поместилось, формат хранения должен быть достаточно емким (помимо компактного кодирования планировалось использовть специальные команды повторения участков мелодии и разбиение ее на повторяющиеся фрагменты). Кроме того, хотелось упростить алгоритм интерпретации данных, тем более, что файловый стандарт midi предполагает существование двух разновидностей – формата MIDI 0 и MIDI 1.

В любом случае, исходные midi-файлы все равно нельзя напрямую "скармливать" инструменту – они содержат избыточное количество одновременно звучащих нот и прочей информации, а значит небходимо "прореживание" исходного материала.

Темп проигрывания.
Команда «новый темп» (шестнадцатиричный код 0E) действует только при проигрывании по кнопке «Play». При проигрывании от ручки эта команда игнорируется. Возможно, это не очень хорошо, поскольку разные песни могут потребовать разных скоростей вращения ручки. Для выравнивания потребуется дополнительная обработка исходного материала. Она заключается в установке стандартного темпа 120 bpm (ударов в минуту) и корректировке таймингов всех музыкальных событий путем их растягивания или сжатия по времени (чтобы восстановился исходный темп). В Cakewalk это команда Edit–>Length.

Размеры инструмента и его частей.
Ширина ящика – 430 мм, высота – 300 мм, глубина – 220 мм. В передней стенке с шагом 55 мм сделаны прорези 150 х 17 мм под рупорные каналы и овальные отверстия 25 х 35 мм для вклеивания трубок резонаторов. Трубки – пластиковые диаметром 25 мм и длиной 85 мм, толщина стенок 1 мм. Срез, которым трубка приклеивается к корпусу, выполнен под углом 45о. Глубина резонансных камер – около 65 мм (эффективный объем каждой составляет около 0,4 л).

Получившиеся отклики излучателей на расстоянии 1 м от передней стенки (зависимость относительной отдачи [дБ] от высоты ноты [Гц]) показаны на рисунке. Основная идея – резонансые камеры должны улучшать отдачу в области низких частот (первый горб на характеристике), как это повсеместно делается в струнных музыкальных инструментах.

7-ое отверстие.
Это отверстие чисто декоративное и не соответствует никакой резонансной камере – в него вклеен отрезок трубы со «слепым» концом. Восстанавливает симметрию передней стенки и, если хотите, навязывает непосвященному мысль «семь труб – семь нот».

Крепление динамиков.
Под каждый динамик проделаны два крепежных отверстия – одно с резьбой М3 под винт со стороны камеры и одно гладкое с зенковкой под винт со стороны рупора. Об отверстиях надо позаботиться заранее, иначе после склеивания корпуса их выполнить будет просто физически невозможно. Второй винт имеет потайную головку и гайку, накручивающуюся со стороны динамика. Для закручивания винтов понадобится Г-образная отвертка. Щель между динамиком и стенкой устраняется прокладкой из мягкого материала или слоем герметика. Если вас не волнует разборность конструкции, динамики можно просто приклеить.

Дополнительные механизмы:
– складная ручка позволяет избавиться от выступающих частей при транспортировке и сократить длину футляра.
– дно усилено металлической накладкой 80х100 мм с центральным резьбовым отверстием М6. Служит для прикручивания стойки-опоры.
– съемный пюпитр устанавливается на верхнюю плоскость корпуса.
– запорный механизм задней дверцы, имеющий два выступающих язычка и соответствующие им скобы на ответной части, создает дополнительную жесткость при закрытой дверце (скобы фиксирует язычки в горизонтальном направлении).

Потребляемый ток.
При отсутствии звучащих нот ток потребления от источника Ucc составляет 25 мА, в среднем – 40 мА, в пиках – до 50 мА. Параллельно конденсатору С5 (см. Рисунок 4) можно подключить «подхватывающую» батарейку или аккумулятор напряжением 3,6 ... 6 В. В этом случае остановка ручки не будет приводить к сбросу песни на начало, и воспроизведение продолжится с остановленного места. Для принудительной установки песни в этом режиме служит кнопка B1 «Set».

Новый генератор.
Шаговый двигатель хотя и позволяет на малых оборотах вырабатывать напряжение, достаточное для питания микроконтроллера, но его эффективность при питании излучателей оказывается низкой. Кроме того, неоднородность вращения вала, вызванная взаимодействием магнитных систем ротора и статора, приводит к ощутимым вибрациям корпуса в виде гула. Использование амортизаторов частично решает проблему, но не приводит к полному подавлению нежелательных звуков.

Был опробован генератор на основе BLDC мотора, взятого с того же 5-дюймового дисковода. BLDC – это бесколлекторный двигатель привода шпинделя, имеющий на статоре три обмотки, соединенные звездой и распределенные по 24-м полюсам так, чтобы увлекать своим магнитным полем ротор – многополюсный кольцевой магнит. Распределением токов по обмоткам занимается специальная микросхема, расположенная здесь же, но поскольку мы будем использовать привод в качестве генератора, то ничего, кроме обмоток и магнита нам больше не понадобится.

Для разборки откручиваем винт тарелки, на которую кладется гибкий диск (резьба левая!), снимаем тарелку, а потом и сам магнит-ротор. Открывшееся место позволяет отпаять концы обмоток и отделить их вместе с магнитопроводом от платы. Тарелку заменяем на шкив, а выводы обмоток удлиняем и изолируем, не забывая сделать отвод от средней точки.

Мой экземпляр имел такие характеристики: сопротивление каждой из обмоток 11 ом, при вращении вала со скоростью 8 оборотов в секунду амплитуда переменного напряжения на одной обмотке доходила до 3 В. Так как количество полюсов 24, а обмоток – три, то один оборот вала соответствует восьми периодам генерируемого напряжения. Это гораздо меньше, чем у использованного ранее шагового двигателя, поэтому для сохранения прежнего темпа исполнения песни пришлось немного подкорректировать программу.

Чтобы еще больше снизить шум, была применена ременная передача. Передаточное число выбрано около 10 (при диаметре большого шкива 80 мм, малого – 8 мм), а натяжение ремня предполагалось регулировать дополнительным роликом, сделанным из шарикоподшипника. Впоследствии оказалось, что такая конструкция ненадежна – плоский ремень норовил соскочить с ролика, а чтобы он не соскакивал со шкивов, последние должны иметь либо высокие буртики, либо бочкообразную рабочую поверхность. Применение круглого в поперечном сечении резинового кольца, надеваемого с большим натягом, решило проблему и позволило отказаться от прижимного ролика.

Схема нового узла питания показана на рисунке справа. Переменное напряжение с генератора G1 выпрямляется 3-фазным мостом на диодах Шотки VD1…VD6. Диоды VD4…VD6 использованы более мощные, поскольку выпрямляют напряжение не только для микроконтроллера, но и для излучателей (по однополупериодной схеме). Питание излучателей («Ud») – нестабилизированное, пульсации сглаживаются конденсатором C1.

Для питания микроконтроллера используется повышаающий преобразователь на основе микросхемы DA2 MAX1674, поскольку при медленных вращениях ручки генератор вырабатывает недостаточное напряжение (менее 3,3 В). Пульсации напряжения сглаживаются конденсатором C2 и ограничиваются стабилитроном VD7 на случай, если ручка будет вращаться чересчур энергично. Схема включения микросхемы типовая, за исключением, может быть, увеличенной индуктивности L1, которая совместно с «суперемкостью» C7 (у меня стоят два обычных конденсатора по 10 000 мкф) позволяет микроконтроллеру (в связке с MAX1674) более надежно стартовать.

Резисторы R1 (токоограничивающий) и R2 (подтягивающий) совместно с защитными диодами микроконтроллера формируют импульсы для задания темпа исполнения, как это сделано на старой плате.

Меньшие размеры (24 х 51 мм) и неизменившееся расстояние между крепежными отверстиями делают замену платы легкой. Конденсатор C7 закреплен отдельно, а разъем J7 на плате не показан, т.к. добавился позже. Как уже отмечалось, частота сигнала, задающего темп исполнения, понизилась и стала соответствовать примерно 80 импульсам на один оборот ручки. Это потребовало соответствующей коррекции программы. Коррекция заключается в смене инициализирующего значения c 9 на 2 в команде mov [cnt],9 (файл Synth.asm). Новая версия прошивки доступна по ссылке ниже.

Громкость звука с новым генератором стала ощутимо выше, посторонние призвуки практически исчезли, а магнит генератора оказался хорошим маховиком, сглаживающим неравномерности вращения ручки, что вдобавок привнесло (ведь теперь разгон и торможение получаются дольше!) ощущение работы с большим механизмом.

Sharmanka26.zip (10 кБ) – файл прошивки для версии с новым генератором. Напряжение старта микросхемы выбрано 3,25 В. Встроенные мелодии теперь расположены на позициях «000», «001» и «002», что удобно при тестировании с отсутствующей панелью управления, поскольку трек, который вызывается в этом случае («000») – непустой, а замыкание контактов 3 и 7 разъема J1 процессорной платы позволяет осуществить проигрывание без вращения ручки.

Example01 (838 кБ) – образец звучания.


antiradio.narod.ru/psoc
Дата создания документа: 14.09.2012. Последнее обновление: 28.08.2017.