имитатор звука ДВС

usup

так как основная тема по имитатору звука закрыта,решил накатать новую тему,долго искал по форуму что нить рабочее,так и не нашел,но далеко ходить не пришлось,на паркфлае нашел отличный блог по данному вопросу,но так как форум не пропускает название этого сайта,с разрешения автора решил скопировать текст сюда,тема для меня полностью не раскрыта,есть кучу вопросов,общаться в той теме очень не удобно,и народу там мало ходит,думаю тема будет актуальной,да и сам автор обещал отвечать на вопросы и готов развивать продукт.вобщем у кого есть вопросы-велком)))

Имитатор построен на использовании 2-х микроконтроллеров ATtiny2313 и ATtiny13.

На ATtiny2313 собран плеер wav файлов, которые записаны на SD карте.
Особенности работы этого плеера можно (нужно) посмотреть на странице его создателя getchip.net/…/087-attiny2313-sd-card-talking-devic…. Выражаю огромную благодарность GetChiper’у за данный плеер и доступный открытый код, который я немного того… поэтому если что будет глючить, все шишки на меня 😃

02.1416177089514.jpg на http://fotkidepo.ru:

Основные принципы работы плеера остались без изменений.
Изменения:

  1. отсутствие управления кнопками, управление плеером происходит только через UART;
  2. отсутствие переключателей Monster, Helium, Repeat (функция Repeat включена по умолчанию)
  3. к переключателю DIR1 / DIR2 добавлен переключатель DIR3 / DIR4 (количество папок для звуковых схем увеличено до 4-х);
  4. Сделан выход для включения усилителя, на котором появляется лог ”1” при проигрывании звукового файла;
  5. Т.к. освободились ножки контроллера, переделана цепь светодиодной индикации.
    На ATtiny13 собран RC-Switch с 2-я входами, который управляет работой плеера в зависимости от входных сигналов.

1 вход подключается через Y разъём к каналу газа (3 канал) и в зависимости от длительности канального импульса идёт передача по UART в плеер первой буквы названия файла и происходит его запуск, который должен соответствовать текущим оборотам двигателя.
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
A – холостые обороты, B, C, D, E, F, G, H, I, J, K
Особняком стоит файл с буквой “Z” это звук старта двигателя. Он при старте проигрывается 1 раз и далее запускается файл соответствующий ширине канального импульса.
Если какой-либо файл будет отсутствовать, плеер автоматически будет проигрывать предыдущий.
2 вход подключается к крутилке или 3-х позиционному тумблеру. (возможно его никуда не подключать, при отсутствии надобности в данной функции)
Этот канал управляет включением звука оружия и световых эффектов на соответствующих ножках контроллера RC-Switch.
Плеер способен одновременно воспроизводить только 1 файл, поэтому микшера нет, и звук оружия перекрывает звук двигателя. При выключении оружия, звук двигателя восстанавливается (звук оружия как бы имеет больший приоритет при воспроизведении).
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
“1” – первое оружие (пулемёт, быстрое мигание пина 2);
“2” – второе оружие (пушка, умеренное мигание пина 3);
“3” – первое + второе оружие (пушка + пулемёт, одновременное мигание пина 3 и 2).
Замечание:
При использовании 3-х позиционного тумблера, будут возможны только 2-а включения: “1” первое оружие и “3” первое + второе оружие (либо микшировать 2-а тумблера).

Схема RC_Sound0.1416176699545.jpg на http://fotkidepo.ru:

При первом включении устройства, первый канал RC-Switch необходимо откалибровать (второй канал настраивается по первому). Для этого надо установить стик в максимум и включить питание. (Чтобы не вызвать возможный запуск программирования регулятора, устройство для калибровки подключаем на любой канал).
После подачи питания (если канальный импульс в канале больше 1,5ms) одновременно начнут мигать пины (оружие 1 и оружие 2). После движения стика, мигание ускорится и в течении 6 секунд (время калибровки) надо перевести стик несколько раз в положение MIN и MAX. Прекращение мигания пинов оружия – калибровка завершена.

При прошивке плеера, фьюзы ставятся, как в описании на странице автора. (все фьюзы оставляются исходные, только отменить деление частоты на 8 – CK DIV8, по умолчанию включено деление, надо просто считать исходные фьюзы и инвертировать состояние фьюза CK DIV8)
При прошивке RC-Switch (ATtiny13), фьюзы оставляются исходные.
Было пару случаев, когда при работе плеер вдруг затихал, переставал на всё реагировать и начинал моргать красный светодиод. Причину я пока не откопал (может SD карта глючила), спасает кнопка Reset.

Даю наводку, где можно взять звуки. Есть такая игра IL-2, и к ней существуют звуковые моды, поискав по интернету, можно найти. Для примера я оттуда взял звук двигателя M-105 и звук пушки ШВАК и пулемёта УБ. Конечно, пришлось ещё повозиться в звуковом редакторе, чтоб сделать больше переходов (в игре как-то всё микшируется автоматически).
Чтоб было громко, необходимо ещё собрать усилитель мощности и взять соответствующий динамик, но без фанатизма, а то весь пар уйдёт в свисток динамик и вместо самолёта получится кирпич 😃
Все исходники и файлы прошивки в архиве (RC_Sound.rar)
(также в архиве рисунок платы в Sprint Layout и звуковой пример - папка “1”)

SDC_Talking_DimaMode4.hex - прошивка для Tiny2313

прошивка для Tiny13:

RC_2IN_ATtiny13_UART_1_inv_12.hex - диапазон разбивается на 12 отрезков (11 букв - A,B,C,…K + отрезок “выключено”)
RC_2IN_ATtiny13_UART_1_inv_18.hex - диапазон разбивается на 18 отрезков (17 букв - A,B,C,…Q + отрезок “выключено”)

Всё тоже самое, только сигнал UART (звязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора))
RC_2IN_ATtiny13_UART_1_no_inv_12.hex
RC_2IN_ATtiny13_UART_1_no_inv_18.hex

Первый вариант для работы, как на схеме. Два контроллера звязаны по UART, но 2313 работает от 3.3 вольт. Для согласования уровней сигнала я использовал транзистор (их везде навалом). Но данное включение инвертирует сигнал, поэтому выход UART надо инвертировать, что и делает парвая прошивка.
Второй вариант для более простого согласования уровней стабилитроном (у кого он есть), тогда инвертировать ничего не надо.
Все элементы кроме контроллеров и мосфетов на светодиоды, выпаяны из разного старого компьютерного хлама.
Вроде всё, если что упустил, отвечу в комментариях. (Заходить буду не очень часто, но постараюсь ответить всем).

А тут немного видео как это работает, извиняюсь за качество съёмки.

Звуковой модуль для автомобилистов (RC_Sound_Auto_v2.rar)

Сам я нисколько не автомобилист, но по просьбе читателей сделал данную вещь.
Постарался сделать её как можно более универсальной, возможно некоторые фишки надуманы и никому не будут нужны.

Принцип наименования файлов и логика их запуска, думаю, понятена из рисунка.

img.1422998982881.jpg на http://fotkidepo.ru:

  • На 3 ножку Tiny13 выводится лог. “1” при запуске двигателя (включение канал2) и держится во время работы. Выводится “0” при глушении двигателя.
    (Например туда можно подключить фары.)

  • Сделан ещё один (по сравнению с RC_Sound) входной канал3 (2 ножка Tiny13) для включения (бибикалка, сирена, крякалка) любого звука (логика работы, как оружие на звуковом модуле для самолёта).

Этот канал разбит на 3-и диапазона: |-- выкл. --|-- сигнал"1" --|-- сигнал"2" --|

При включении сигнала “1” на 8 пине Tiny2313 появляется лог.“1” (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала “1”)

При включении сигнала “2” на 9 пине Tiny2313 появляется лог.“1” (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала “2”)

Соответственно при подключении к дискретному каналу возможно только состояние - выкл. и сигнал “2”

  • Калибровка запускается как обычно, только под конец светодиод (3 ножка Tiny13) начинает ускоренно мигать, приглашая перевести стик в нейтраль
    (можно и раньше, главное чтоб по окончании ускоренного мигания стик был в нейтрали).

  • Индикация потери сигнала: т.к. 3 ножка постоянно включена при “работе” двигателя. Теперь при потере сигнала следуют периодические двойные короткие вспышки на 3 ножке.

Схема фактически идентична схеме RC_Sound, за исключением добавленного канала3, вместо одного выхода на световую индикацию (оружие1). Кому он не нужен, прошивка будет работать и на старой схеме.ищутся звуки для имитации звука,был бы рад кто запишет файлы со своего двс

RC_Sound.1419164567552.rar

usup

Проект получил дальнейшее развитие.

Сергей КСВ 45 предложил одну идею:

начиная с 1.28 мин на нем при перегазовке слышны ступенчатые изменения оборотов турбины, в нашем случае так же идет эта ступенька, а вот если бы сделать алгоритм такой:

Разбиваем сэмплами полностью по звуковым отрезкам всю работу турбины (самый короткий алгоритм)

1- запуск
2- малые обороты
3- увеличение с малых до средних
4- средние
5- увеличение со средних до максимальных
6- максимальные
7- уменьшение с максимальных до средних
8- уменьшение со средних до малых
9- глушение

в чем изюминка реалистичности звука - так в полной имитации проигрывания всех сэмплов поочередно без ступеньки.
Сложность заключается в том что пока например после увеличения стика газа полностью не воспроизведется трек “3” в нашем случае, не включится трек 4
так получится плавный переход - малые обороты трек “2” добавили газу проиграется трек “3” и за ним будет в повторе играть трек “4” пока стик газа в 50%

если стик газа сразу с мин перевести на макс - воспроизводится “2” далее “3” потом “5” и трек “6” макс обороты.
Вот что получилось:

(RC_Sound_New.rar)

Диапазон газа разбивается на равные отрезки, каждому соответствует свой звуковой файл + отрезок “выключено”.
Файлы (первая буква) именуются по очереди начиная с “С” и через 2: C, F, I, L, …

Файлы соответствующие промежуточным буквам: A,B,D,E,G,H… определяют звук изменения оборотов.
А - нарастание (пуск двигателя), B - спадание (выключение)
D - нарастание с “С” до “F”, E - спадание с “F” до “C”
и.т.д. см. приложенный рисунок.

0001.1418240176775.jpg на http://fotkidepo.ru:

SDC_Talking_DimaMode5.hex - прошивка для Tiny2313

прошивка для Tiny13:

RC_2IN_ATtiny13_UART_2_inv_6.hex - диапазон разбивается на 6 отрезков (5 букв - C,F,I,L,O + отрезок “выключено”)
RC_2IN_ATtiny13_UART_2_inv_10.hex - диапазон разбивается на 10 отрезков (9 букв - C,F,I,L,O,R,U,X,[ + отрезок “выключено”)
Всё тоже самое, только сигнал UART (cвязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора)
RC_2IN_ATtiny13_UART_2_no_inv_6.hex
RC_2IN_ATtiny13_UART_2_no_inv_10.hex

В архиве есть пример звуков для 6 диапазонного разбиения.

RC_Sound_New.1434784558070.rar

usup

Собственно вопросы к автору.
1.для чего,к примеру в авто прошиве,нужны звуковые файлы C,F,i ведь они такие жепо тембру как и B,E,H да и звуки для зх тоже вроде такие же как и для переднего.
2.немного не понятно по длительности звуковых файлов,я так понял пока не отыграет один звук переключение на второй трек невозможно?в таком случае я так понял для быстроты реакции на стик,звуки лучше записывать длительностью 1 сек,или я что то не так понял?
3.не пойму зачем так много файлов для прошивы разве не достаточно одного хекса для тини13 и одного для 2313?в архивах еще кучу непонятных файлов,хорошо бы если еще была инструкция как,что и чем шить.

Dimac
    • Схему переключения звуков делал по просьбе (именно так предложили), просто у вас они одни, кто-то захочет другие (у меня Нива при езде задним ходом завывает 😃 ).
    • да звуки нужны короткие по длительности. Причем если резко перевести стик, то воспроизводиться будут только звуки нарастания (убывания) например (авто) с положения G перевели стик в положение P - будут воспроизводиться последовательно H, K, N и только потом P в цикле.
      Переходы хорошо получается делать в SonyVegas (просто я видео там монтирую и удачно под руку подвернулся для данной цели, возможно это можно делать и в SoundForge, но так просто как в Вегасе я не смог), там можно просто 2-а семпла перетащить накладывая друг на друга (автоматически создастся переход) и результат перехода сохранить.
    • Для прошивки достаточно одних хексов (как Вы и написали). Просто я выкладываю полностью исходники (для тини 13 в AVR Studio, для тини 2313 в Algorithm Builder) если кто захочет покопаться и что-то подправить.
      По поводу как и чем прошивать, это лучше смотреть в интернете т.к. существуют разные программаторы и под них есть свои программы-прошивальщики. Я сейчас пользуюсь самоделным AVR 910 prottoss.com/…/avr910_usb_programmer.htm (аналог USBasp, который можно везде купить) но перед этим собрал stk 200/300 easyelectronics.ru/programmator-stk200300-dlya-mik… т.к. его сперва надо было чем-то прошить.
alfa_2bbs
Dimac:

Схему …

вопрос по схеме
Ситуация:
подключение на выход имитатора любого усилителя, от простого на LM386 до более сложного и питании последнего от отдельного питания (аккумулятор или б/п) при подачи питания на плату имитатора, усилитель возбуждается (слышется небольшой гул, щелчки), при подключении питания усилителя через ключ Q4 на плате все нормально, эт и понятно нет питания на усилителе.

установкой данного ключа была решена проблема возбуда усилителя?

прошивка RC_Sound_Auto_v2.1438792751148.rar‎

usup

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

парни у кого есть двс,запишите звуки на разных оборотах,плииззз.

Dimac

Фильтр HЧ поставьте на вход. На выходе при отсутствии сигнала идёт постоянный ВЧ сигнал ШИМ (32768 Гц , а может и в 2-а раза ниже, можно осцилом посмотреть) 50% скважности .
Я такую схему собирал, там на входе RC фильтр (сам подбирал). Уменьшает ВЧ фон.

Я ещё одну ПДФ-ку вложил (тут на русском www.gaw.ru/html.cgi/txt/app/…/at45_to_avr.htm), посмотрите схемотехнику. Там для уменьшения ВЧ применяется фильтр Чебышева на ОУ.

at45_to_avr.rar

usup

впринципе я так понимаю этот шум не слышен при воспроизведении звука?если так то можно использовать блокировку звука по транзистору q4 и не париться

Dimac

У всех уши разные, попробуйте так/сяк, я сам по разному пробовал. Было когда мне казалось не слышу, подцепил другой усилитель - там стало вылезать…

usup

а в чем природа этого звука,избавиться в первоисточнике никак?

Dimac

Я выше ссылку дал и первоисточник в ПДФ выложил. Там вполне доходчиво объясняется как оцифровывается, а потом воспроизводится звук (аналоговый сигнал) микроконтроллером.

Если только поставить внешний кварц и увеличить частоту ШИМа. Чем больше частота - тем менее слышно. На 2113 можно максимально 20 МГц поставить (сейчас в проекте он на 8МГц работает), могу попробовать изменить прошивку чтоб поднять частоту ШИМа.

alfa_2bbs
usup:

впринципе я так понимаю этот шум не слышен при воспроизведении звука?

Дело в том, что все зависит от усилителя, чем больше усиливаешь сигнал на выходе, тем слышнее.
Во всяком случае я и мои друзья слышат этот звук.

Dimac:

Фильтр HЧ поставьте на вход.

После просмотра картинки на осцилографе и возник вопрос.

RC фильтр спасает но не до конца, если только ставить фильтр на ОУ.

Dimac:

могу попробовать изменить прошивку чтоб поднять частоту ШИМа.

если не сложно, а то плата начинает обрастать еще платками, как то так:

usup

Андрей а вы для какой модели имитируете звук?

alfa_2bbs
usup:

Андрей а вы для какой модели имитируете звук?

Танк

dimaris

Андрей что за серво-тестер с двухстрочным дисплеем у вас на видео?

alfa_2bbs
dimaris:

Андрей что за серво-тестер с двухстрочным дисплеем у вас на видео?

делал как то давно с китайцем