Реклама ⓘ
Главная » Музыкантам
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Lo-Fi гитарная педаль на Arduino

Гитарная педаль на Arduino

Изменение битности, снижение скорости, причудливые звуки – все это возможности самодельной гитарной педали с 10 битными эффектами на Arduino, предназначенной для Lo-Fi DSP (Digital Dignal Processing  - цифровой обработки сигнала).

Видео работы:

Необходимые материалы

Инструменты:
Arduino
Паяльник
Пистолет для термоклея
Кусачки
Сверлильный станок или Dremel

Материалы:
Корпус
Припой
Термоклей
Провода
Макетная плата
(x2) Аудио разъёмы (я использую 1/8")
Интерфейс ввода: например 3 потенциометра
Интерфейс вывода: например 3 светодиода и 3 резистора 150 Ом.
Резисторы: 1 кОм, 10 кОм (x2), 1.2 кОм, 1.5 кОм, 390 кОм.
Конденсаторы: 2.2 мкФ (x2)

Количество резисторов и конденсаторов удваивается при использовании стерео режима.

Подготовка корпуса

Корпус

В качестве корпуса я использовал медиаконвертер. Его корпус подходит к Arduino, элементам интерфейса и двум аудио разъемам. Этот корпус сделан из довольно прочного металла, что важно для педали. Также задняя стенка корпуса закреплена на петли, что позволяет легко открывать его.

Я только просверлил в этом корпусе три отверстия для потенциометров при помощи сверлильного станка и вырезал отверстие для USB разъема.

Установка элементов

После того, корпус подготовлен:
- разместите в нем Arduino.
- установите элементы интерфейса, то есть потенциометры и светодиоды.
- установите входные и выходные разъемы.

Помните, что светодиоды необходимо подключать к Arduino через резисторы: LED калькулятор. Я использовал резисторы на 150 Ом.

Нормализация входов и выходов

Плата

Схемы подключения

Вход

Это единственное место в этом проекте, где используется аппаратное решение.  Аудио сигнал это переменный от -1В до +1В, но аналоговые входы Arduino работают с напряжением от 0В (GND) до опорного напряжения (по умолчанию +5В). Опорное напряжение можно указать в коде или  использовать источник внешнего опорного напряжения.

Диапазон между напряжениями -1В и +1В 2В. В качестве опорного напряжения мы выберем напряжение меньше 2В. Оказывается, встроенный источник опорного напряжения, с которым удобно работать можно настроить на 1.1В.

Теперь мы должны преобразовать напряжение от -1В до +1В в напряжение от 0В до +1.1В. Я сделал это при помощи резистивного делителя напряжения. Гитару нельзя подключать напрямую к этой схеме, необходим предусилитель (например, другая педаль), но вы можете добавить предусилитель на транзисторе или ОУ на макетную плату, чтобы подключать гитару напрямую.

Плата

Выход

Для вывода звука мы будем использовать ШИМ. При помощи низкоуровневого хака программного обеспечения, мы можем получить 8 битный ШИМ работающий на частоте 62кГц = 16МГц/28.

Есть и другие методы вывода звука на Arduino. Хороший обзор этих методов можно найти на сайте uC hobby. Я получил хороший результат при использовании R2R ЦАП, но для 10 битного стерео выхода необходимо около 40 резисторов, поэтому я отказался от него. Вместо этого я решил использовать метод "weighted pins", который представляет собой нечто среднее между обычным ШИМ и резисторной матрицей.  

Сборка схемы

Я собрал по две схемы на одном куске макетной платы. По центру макетной платы шел полигон GND, благодаря чему я смог собрать схему максимально аккуратно, насколько это возможно. При первой сборке схемы, она получилась слишком высокой и не помещалась в корпус, поэтому мне пришлось пересобрать её.

Если вы используете такие конденсаторы, как и я, то они будут отрезать некоторые нижние частоты. При емкости 2.2 мкФ, это незначительно и не чувствуется в диапазоне слышимости человеческого слуха. Чем больше емкость - тем лучше, однако чем больше емкость, тем конденсатор больше физически.

Корпус

Подключение остальных элементов

Обычно на гитарной педали вход находиться справа, а выход слева. Но я узнал об этом только после того, как закрепил разъемы термоклеем

После сборки схемы на макетной плате, поместите её внутрь и подключите все не подключенные до сих пор провода:
- аудио вход подключается к входу схемы, которая подключается к аналоговому входу Arduino.
- средние выводы потенциометров подключаются к аналоговым входам Arduino.
- два светодиода подключаются к ШИМ выходам, а один к цифровому.
- четыре ШИМ выхода подключаются к 8/2 битным входам ЦАП.
- выход с ЦАП подключается к аудио выходу.  

Загрузка DSP кода

Загрузите исходный код, и вы увидите две папки. В одной из них находиться основной код DSP, "ArduinoDSP", который используется при изготовлении педали. В папке "GlitchPedal" находится код который я использовал.

ArduinoDSP

Включенные в ArduinoDSP функции полезны для настройки значения предварительного деления частоты ШИМ и аналоговых входов. Контакты 3 и 11 используются в качестве выхода левого канала (8 и 2 битные соответственно), а  5 и 6 контакты в правый выход. ШИМ используется без предварительного деления частоты и работает так быстро, как это возможно. Значение предварительного деления частоты для АЦП также установлено низкое, 32, в качестве опорного напряжения используется 1.1В.

Для изменения основного кода ArduinoDSP, просто вставить свой собственный код с измененным значением переменной "input" между строками "short input = analogRead(left);" и "output(left, input);".

GlitchPedal

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

Режимы:
Bitcrush (изменение битности): немного смещает вход вправо, а потом влево, обрубая N битов.
Bitshift (сдвиг битов): смещает вход налево, что приводит к странным эффектам для нескольких первых значений  и шум в конечном итоге (т. е. "дизеринг битов").
Overdrive: Умножает значение на воде на дробное значение от 1 до 20.
Двоичные бинарные операции над импульсами: делает различные бинарные операции на входе и последнем результате (XOR, NOR, XNOR, NAND...)

Улучшения и примечания

Возможные улучшения
Добавление RC фильтра нижних частот с возможностью выбора частоты среза на выходе.
Режим причудливых звуков: Переназначение битов? Ротация битов?
Повторение N последних семплов? Это ограниченно ОЗУ ATmega.
Использование 9В адаптера вместо питания от USB
Шесть  8 битных выходов для акустической системы 5.1?
Использование Arduino mini для миниатюризации педали?
Вывод интерфейса на отдельную панель?
Кнопочная регулировка входной громкости?

Примечания

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

Спасибо Andrew Armenia за помощь с нормализацией входа, Dane Kouttron за объяснение некоторых вещей о ШИМ в ATmega168, Джеймсу Miglietta за то, что он сказал, что гитарная педаль работает на обычном напряжении и Блэру Нилу за то, что он захотел уменьшение дискретизации.

Еще одну интересную методику с использованием аудио буфера и "реальными" эффектами дал Мартин Nawrath. Я думаю, что один из главных плюсов его решения в том, что он использует прерывание для АЦП. Обычно, АЦП вызывается командой analogRead() (т.е. код не может пропустить команду analogRead() и исполняться дальше). Его способ освобождает микроконтроллер от выполнения других задач на время работы АЦП.

Скачать скетч, посмотреть проект на github

Оригинал статьи

Теги:

none Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Конструктор - Гитарная педаль Remote Delay 2.5
Конструктор - Гитарная педаль Remote Delay 2.5
LC-измеритель LC100-A UNI-T UT-61A
вверх