Автор Тема: Как я полуцифровое тремоло делал.  (Прочитано 1522 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3732
    • Efremoff
Как я полуцифровое тремоло делал.
« : Февраля 23, 2016, 12:30:30 »
Приспичило мне тремоло.
Да не простое - а чтобы с тап-темпо, и чтобы можно было еще что-то типа "slow attack" делать по нажатию на кнопку...

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

Поковырявшись в загашнике нашел пару платок Arduino Nano - которые я когда-то давно покупал, какие-то заюзал, а какие-то так и лежат без дела. Ну значит управлять этим всем будет ардуина. Правда понимаю я что ардуина на это дело - как-то дофига, но другого контроллера под рукой не оказалось, а покупать контрололер, программатор и прочее - как то лень было. Решил собирать из того что есть. Из плюсов ардуины - не требуется ничего кроме кабеля USB, чтобы заливать в нее код, который легко и понятно пишется в соответсвующем ардуиновском IDE. Его, а так же все остальное - легко скачать с официального сайта ардуины, ну и возможность работать от любого напряжения входного - в диапазоне 6-18в.

Поскольку ардуинки у меня китайские (по 10 баксов за кулек), они требуют своего китайского драйвера для прошивания, что в принципе тоже легко гуглится.
Кому интересно - ссыль на ардуину - http://www.ebay.com/itm/5PCS-Mini-USB-CH340G-Nano-V3-0-5V-16M-ATmega328P-Micro-Controller-Board-Arduino-/171981943640?hash=item280aec3358:g:dEYAAOSwo6lWMJo7 - 10 баксов, за 5 штук.

Тремолировать будем оптикой. Точнее на фоторезитор будет светить светодиод. Фоторезисторов в закромах тоже нашелся пакет целый, с диодами тож недостатка не испытываю.
фоторезистор обычный, самый простой.
2092947-0
Диод показывать не буду - все знают. )
Нужна аналоговая часть. Ничо лучше, чем собрать 2 каскада (усилительный и повторительный) на паре транзисторов - я быстро не придумал. КОнечно было бы лучше сдвоенный операционник - места меньше, стабильнее, удобнее - но оставим это на будущее. Аналоговая часть схемы ниже:
2092949-1
Все достаточно просто. Вначале идет усилительный каскад, с которого сигнал поступает на потенциометр Blend. Регулятор Blend вместе с фоторезистором составляют делитель напряжения. Когда положение движка потенциометра "вверху" - то у нас отсутсвует какое либо влияние вибрации на звук, когда внизу - то мы полностью зависим от состояния фоторезистора - когда он освещен его сопротивление близко к нулю, а когда он затемнен - составляет несколько сотен килоом. Кроме того - время срабатывание фоторезистора намного быстрее, чем время его "остывания".
После чего сигнал поступает на истоковый повторитель, и отправляется на регулятор громкости. Потенциометра, устанавливающего время вибрации тремоло - нет. Может не всем это понравится, но мне он оказался не нужным.

Плата:
* analog_part.zip (54.61 КБ - загружено 47 раз.)
Много SMD компонентов (все, кроме пары конденсаторов, светодиода, и фоторезистора). задача была впихнуть все под ардуину, так что место экономилось.

Цифровая часть.
Основной задачей оказалось написать программный код так, чтобы у нас плавно зажигался и затухал диодик, а по двум нажатиям на соответсвующую кнопку - менялся его интервал.
светодиод подключен к третей цифровой ноге ардуины (PWM вывод), функция светодиода продублированна на 11 ногу ардуины, с которой просто проводоком кидаем светодиод на землю - будет дублирующий, который выведем на корпус.

Кнопка посажена на аналоговый вход А4 (удобство платы). Еще добавил одну кнопку (вывод ардуины №8), которая меняла режим работы - в режиме А - диодик мигает и делает тремоло, а в режиме Б - звук плавно нарастает при нажатии на кнопку тап-темпо, и затихает когда кнопку отпускаешь. что-то вроде Slow attack. К ней нужно подвести проводком 5в (обозначено на плате белым). Обе кнопки обычные, без фиксации, нормально-разомкнутые. кнопка включения-выключения эффекта - обычная, 9 контактная. Распаивается так же, как и в любых других педалях.

А когда код был написан и залит на ардуинку - вылезла проблема - несмотря на то, что цифровая и аналоговая часть имеют общими только землю - PWM выход ощутимо шумит в звуковой тракт, т.к. его частота работы по умолчанию была около  500гц. Сначала возился и пробовал разделить земли, разделить схему и тп... после чего забил, и аппаратно увеличил частоту выхода до 31кгц.

После тестов, могу сказать что девайс получился весьма функциональный. Кнопка Тап-темпо работает адекватно (2 последовательных нажатия). Со старта педальки тремоло тоже работает, согласно установленному дефолтному значению переменной. В положении бленда на "чистый" (движок вверху, по схеме) - педаль можно использовать как простейший преамп.

Код программы под спойлером
(нажмите чтобы показать/спрятать)

Ардуиновский проект с кодом:
* Tremolo_v0.1.ino.zip (0.84 КБ - загружено 54 раз.)

Фото всего будет чуть позже. Если есть какие-то вопросы - с радостью отвечу.
« Последнее редактирование: Февраля 23, 2016, 12:33:24 от Tander »

Оффлайн Oldvist

  • Опытный
  • ****
  • Сообщений: 983
Re: Как я полуцифровое тремоло делал.
« Ответ #1 : Февраля 23, 2016, 21:00:13 »
Tander, шим лез через фоторезистор. Я в свое время глядел ихнейные параметры. Да, сопротивление от минимума до максимума изменяется относительно медленно, а в районе процентов 10 достаточно быстро. Вот ШИМ и пролазил. Увеличив частоту шима было сыграно в плюс с двух сторон: и на быстродействии фоторезистора и на особенностях наших ушей, которые очень редко у кого слышат выше 20 кГц.

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3732
    • Efremoff
Re: Как я полуцифровое тремоло делал.
« Ответ #2 : Февраля 23, 2016, 21:46:39 »
Да не знаю,  как оно через фоторезистор лезло? Зудело даж тогда, когда этот вывод ШИМа просто в воздухе висел пробовал резисторами отрывать землю цифровую - становилось тише, но совсем не пропадало. Пока частоту ШИМа принудительно не поднял.  И тогда стало тихо (для слуха). Ардуина, кроме как по земле нигде не соприкасалась с аналоговой частью.

... и добавил:

Фоторкзистор висел в аналоговой части и с ардуиной никак, кроме как светом, не общался. А ардуина просто светила на него светодиодом
« Последнее редактирование: Февраля 23, 2016, 21:48:34 от Tander »

Оффлайн GeorgeM

  • Ветеран форума
  • ******
  • Сообщений: 5432
  • тайный агент sovietguitars.com на ГП
Re: Как я полуцифровое тремоло делал.
« Ответ #3 : Февраля 23, 2016, 22:06:12 »
Хм, а на вот такую штуку замахнуться не возникло желания? http://www.davidrolo.com/effects/twin-peaks-tap-tremolo/ с лфо из той же ардуины...  :rolleyes:

Оффлайн Tander Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 3732
    • Efremoff
Re: Как я полуцифровое тремоло делал.
« Ответ #4 : Февраля 24, 2016, 09:02:45 »
В принципе можно. Оставить только аналоговую часть схемы, а все необходимые для тремоло потенциометры и TapTempo завести на контроллер. Достаточно интересно реализовано переключение между типами тремоло, но если уже подтягивать контроллер уровня ATmega328 - то лучше это все реализовать на уровне контроллера, без использования внешних инверторов и тп. поворотный переключатель вешаем либо на 4 свободных ноги (если есть), либо на один аналоговый вход, через резисторную матрицу. И согласно тому какая нога, или какой уровень сигнала на аналоговом входе - выбираем тот или иной кейс (case) тремоло.

Мне правда пока не очень понятно с программной точки зрения - как игнорировать потенциометры. Чтобы при нажимании на тап-темпо - они игнорировались, а при вращении потенциометра - чтобы игнорировалось тап темпо. отслеживать изменение напряжения на порту? может лучше тогда парочку бесконечных энкодеров для глубины и скорости?

Оффлайн GeorgeM

  • Ветеран форума
  • ******
  • Сообщений: 5432
  • тайный агент sovietguitars.com на ГП
Re: Как я полуцифровое тремоло делал.
« Ответ #5 : Февраля 24, 2016, 12:20:14 »
энкодеры в таком применении конечно удобнее должны быть... "что у нас дёрнули - на то приоритет и перекидываем" - как то так.