ESS - Engine sound simulator

Что это такое

Примерно 3 месяца назад узнал что есть Ram Gas/Diesel Engine Sound. Было решено сделать аналогичную, правда только по назначениию, т.к. о той схеме знаю только то, что она умеет воспросизодить звук, ее характеристики и каким образом она это делает мне не известно.

С помощью этой схемы вы сможете к своей копии, полукопи или просто модели добавить желаемый звук. Скорость имитируемого звука НЕ синхронизируется со скоростью модели (не изменяется с измененеим положения ручки газа). А скорость воспроизведения зависит от настроек, которые хранятся в EEPROM микроконтроллера mega8. Частота кварца 16.9344MHz. Сам звук дожен быть записан во внешнюю EEPROM (24cXXXX). При выборе EEPROM столкнулся с тем, что фирма ATMEL выпускает их с максимальной частотой интерфейса I2C до 1MHz, а Microchip как 1MHz, так и 400KHz. Поэтому если будете брать память от MIcroship буквы на маркировке мосле "24" должны быть "FC". Т.е. память от Atmel должна быть с маркировкой 24CXXXX, а от Microship 24FCXXXX, где XXXX задают объем памяти.

Для того чтобы было проще представить что получается в результате, вот фотографии макета:

P2220011.JPG
P2220012.JPG

Краткое описание схемы

Оранжевый провод 1- +9..+25В, зеленый - земля аккумулятора. Чем больше напряжение питания, тем громче будет воспроизводимый звук. По документации усилителя (TDA2003) максимальное рабочее напряжение 28В, минимальное 8В. Два белых - звуковой выход - подключаются к динамику. Рекомендуется брать динамик 4 Ома в импедансе, мощностью от 1 до 6 Ватт (в зависимости от желаемой громкости). Микросхема TDA2003 может работать и с 8ми омными динамиками, только будет звук потише.

Этот макет весит 25граммов, но на нем припаяны SCS под микроконтроллер (DIP-28) и EEPROM (DIP-8) для удобства замены. Так же для того чтобы подобрать оптимальные конденсаторы (в поисках меньшей массы) на плате установлены разъемы для удобного перебора. Три провода (недалеко от кварца) подключаются к каналу, с которого управляется схема: черный - земля, красный - питание (нужен для проверки на столе), белый - серво. Если питание на приемник подается от контроллера двигателя, то красный провод не нужен.

Подготовка звука

Чтобы ESS мог работать должным образом, в память нужно прошить файл приведенный к пригодному виду для воспроизведения.

  1. Для этого следует выполнить следующие шаги (Описан способ которым пользовался я на примере файла mig-15.wav): Взять файл mig-15.wav из папки симулятора FMS у него по умолчанию параметры 22.050KHz, 16bit mono Открыть через Total Recorder, в нем это наглядно

  2. Сконвертировать в файл с частотой дискретизации 8KHz и 8bit mono (частотй можно выбрать и больше, от этого зависят настройки и качество звука), для этого выбирать File->Save As, в появившемся окне нажмать кнопку Change, в появившемся окне выбирать как показано на рисунке, далее нажмать ОК

    Выбирать имя файла и сохранить mig-15_8k.wav
  3. Удалить всю ненужную информацию (чанки, число каналов, частоту дискретезации, скорость считывания, и т.д. пока не встретится слово data, после которого надо удалить еще 4 байта) в начале файла Для удобства можно открыть полученный файл mig-15_8k.wav в HEX редакторе, в поле ASCII найти слово "data" (на картинке я его обвел зеленым). Последние 4 байта - длина звуковой части в 16-ти ричной форме.

    Первй байт 04 - LSB (самый младший байт). Т.е. Длинна звуковой части в шестнадцатиричном виде: 00006F04 (максимальная длина зависит от выбранной внешней памяти EEPROM, для 24с512 это будет FFFF). Лучше ее запомнить, она пригодится при настройке. Удалив данные, сохраняем файл с расширением .eep(для удобства) mig-15_8k.eep Если забыли посмотреть длину звуковой части, то ее можно получить следующим образом: открываем полученный файл в HEX редакторе и к смещение последнего байта прибавляем 1. На картинкечисла над черной чертой написаны мной для наглядности. Числа обведенные красным составляют размер.

    Или подругому, когда будете прошивать этот файл в память, посмотреть в программаторе.
  4. Осталось прошить полученный звук во внешнюю EEPROM, выбранную на ваше усмотрение. Это может быть память любого объема (в который вместится ваш звук), с интерфейсом I2C. Главное не запутаться в объеме памяти. Т.е. если на микросхеме маркировка at24c512, это не значит что в ней 512 килобайт, это всего лишь 512 килобит = 64 килобайта, следовательно максимальный размер звука который вы можете туда записать - 64 килобайта. Рекомендую использовать память не меньше 16ти килобайт. Хотя все зависит от файла звука и желаемого результата.

Настройка ESS

Эти настройки прошиваются в EEPROM микроконтроллера, находятся в файле engine_sound_m8.eep.

Первые два байта, обведенные красным - объем внешней памяти EEPROM, в которой хранится звук. Первый байт - старший, второй младший (по умолчанию объем - 64кб).
Следующие два байта, обведенные синим - размер звука, для mig-15_8k.eep там должно быть 6f04 = 28.420кб. Два байта, обведенные фиолетовым цветом - период воспроизведения одного дискрета записанный в тактах микроконтроллера. Чтобы получить начальную частоту воспроизведения слудует разделить 16.9344MHz (частота микроконтроллера) на период 0644h.

0644h = 1604

169344000/1604 примерно 10563Гц

Эту частоту выставляйте в зависимости от желаемого звука при полете.

Файлы

Схема: EngineSound_v1_2_inet.sch

Печатная плата в формате PCAD 2002: EngineSound_v1.1_2_inet.pcb

Печатная плата в PDF: EssBottom.pdf

Расположение компонентов в PDF: EssArrange.pdf

Список элементов: EngineSound_v1.1_2_inet.bom

Прошивка микроконтроллера: engine_sound_m8.hex

Файл настроек(eeprom микроконтроллера): engine_sound_m8.eep

Первоначальный звук в wave: mig-15.wav

Звук в формате 8bit mono 8KHz: mig-15_8k.wav

Звук готовый для записи в EEPROM: mig-15_8k.eep

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

Если появились вопросы пишите на graham@pisem.net