Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Автоматический гитарный тюнер на основе Arduino

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

Arduino UNO
× 1

Приложения и онлайн-сервисы

Simulink

Об этом проекте

Одна из самых важных вещей при игре на гитаре - убедиться, что инструмент настроен. Даже лучший гитарист не будет звучать хорошо с расстроенной гитарой. Ручная настройка гитар с использованием стандартного тюнера всегда была обычным делом, но автоматический тюнер делает это намного проще и веселее! Этот проект на основе Arduino настроит вашу гитару под вас.

Вот видео, демонстрирующее проект в действии:https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Обзор

На рисунке выше показан общий вид автоматического гитарного тюнера.

  • Кнопка используется для выбора строки для настройки.
  • Шесть светодиодных индикаторов используются для обозначения выбранной строки.
  • Захват, подключенный к двигателю, используется для поворота настроечного штифта до тех пор, пока струна не будет настроена.

Входы и выходы управляются четырьмя схемами, упомянутыми выше:схемой цифрового ввода для кнопки, схемой аналогового аудиовхода для гитары, схемой цифрового вывода для светодиодного дисплея и схемой привода двигателя для настроечного штифта. захват. Эти четыре схемы взаимодействуют с Arduino Due, который выполняет алгоритм, разработанный с использованием Simulink.

Цепь аудиовхода

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

Я бы рекомендовал использовать для этой схемы операционный усилитель TL972. Это малошумящий усилитель Rail-to-Rail, который может работать при очень низких напряжениях питания.

Моторизованный захват для настроечных колышков

Я не мог использовать какой-либо двигатель постоянного тока для этого проекта. Мне нужен мотор-редуктор с низкой скоростью и большим крутящим моментом. Мотор, который я использовал, имеет скорость 6 об / мин и максимальный крутящий момент 613 унций на дюйм. Он имеет диапазон напряжений 3–12 В, поэтому в качестве источника питания я использовал батарею на 9 В.

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

Программное обеспечение

Я использовал Simulink и его пакет поддержки для Arduino, чтобы разработать алгоритм для тюнера. Simulink - это среда блок-схем, используемая для разработки алгоритмов и моделирования динамических систем. Пакет поддержки позволяет мне читать и писать на контакты Arduino с помощью блоков Simulink. Используя возможности внешнего режима программного обеспечения, я могу моделировать алгоритм на Arduino с автоматической генерацией кода и настраивать параметры во время моделирования без необходимости перекомпилировать какой-либо код. Затем я могу развернуть алгоритм на оборудовании для автономного выполнения. Созданная мной модель показана ниже.

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

Я хочу, чтобы это изменение с 0 на 1 инициировало изменение выбранной строки. Это называется триггером роста. Я создал диаграмму Stateflow под названием «Select String», которая имеет шесть состояний, по одному для каждой строки, и меняет одно состояние на другое в зависимости от этого возрастающего триггерного входа. Вот более подробный взгляд на диаграмму Stateflow.

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

На диаграмме Stateflow имеется семь выходов:один для светодиода для каждой из шести строк и один, называемый «periodRange», о котором я расскажу позже. Шесть выходов светодиодов идут прямо к блокам цифровых выходов Arduino для включения или выключения соответствующего светодиода.

Теперь давайте посмотрим на часть модели, обрабатывающую звук. Гитарный сигнал поступает через блок аналогового ввода. Я установил время выборки блока равным 0,0002 секунды для частоты дискретизации 5 кГц. Когда я играл на гитаре и открыл блок аудиоскопа, я смог увидеть форму волны, подобную изображенной ниже.

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

Когда на гитаре не играют, входной сигнал должен быть ровной линией где-то между 500 и 700. В моем случае это было около 550. Важно знать это значение, потому что тюнер должен обрабатывать звук только при наличии ноты. играют. Я выбрал значение 575, чуть выше этой ровной линии, в качестве своего порога. Аудио будет обрабатываться только тогда, когда сигнал превышает это пороговое значение. Поскольку Simulink позволяет мне настраивать параметры во время моделирования, я легко смог установить свое пороговое значение.

Когда на гитаре играет одна нота, генерируемая форма волны является периодической. Период формы волны соответствует определенной музыкальной высоте звука. Алгоритм настройки оценивает высоту тона струны, определяя период формы волны. Я написал функцию MATLAB, которая выполняет эту оценку основного тона, и включил ее в мою модель Simulink, используя функциональный блок MATLAB. Чтобы определить, настроена ли строка, функции MATLAB требуется ввод, указывающий, какой диапазон периодов считается настроенным для каждой строки. Это выходной параметр periodRange диаграммы Stateflow. Функция определяет, является ли высота струны слишком высокой, слишком низкой или настроенной на основе диапазона периода, и соответственно генерирует выходные сигналы для двигателя.

Выходы функции MATLAB - это три контакта, которые управляют двигателем. Эти выходы идут прямо в блоки цифровых выходов Arduino.

Убедившись, что с моим алгоритмом все в порядке, я смог развернуть его на оборудовании, чтобы он мог работать автономно, без подключения к ПК и независимо от Simulink.

Теперь я могу настраивать гитару автоматически!

Все необходимые файлы для этого проекта доступны здесь:

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Схема

Схема для кнопки представляет собой простой переключатель с понижающим резистором. Схема светодиодного дисплея состоит из 6 светодиодов и токоограничивающего резистора. Я использовал аналоговый входной вывод «A0» на Arduino, чтобы считывать аудиосигнал, поступающий с гитары. Arduino Due считывает напряжения от 0 В до 3,3 В. Сигнал, исходящий от гитары, однако, имеет очень низкую амплитуду и колеблется около 0 В, что означает, что он содержит некоторые отрицательные напряжения, которые Arduino не может прочитать. Чтобы исправить это, входная цепь должна усилить сигнал и добавить смещение постоянного тока. В схеме также должен быть предусмотрен фильтр нижних частот, чтобы исключить высокочастотные компоненты из сигнала. Любой дискретизированный сигнал не должен содержать частоты выше половины частоты дискретизации. Поскольку тюнер выбирает звук с частотой 5 кГц, моя схема исключает частоты выше 2,5 кГц. Я собрал схему, как показано ниже. Я управлял моторизованным захватом настроечного штифта с помощью трех цифровых выходных контактов Arduino, подключенных к микросхеме H-моста L293D. . Эта микросхема позволяет нам вращать двигатель в любом направлении или останавливать двигатель в зависимости от состояния этих трех контактов. Один из выводов называется разрешающим выводом, и двигатель будет вращаться только тогда, когда разрешающий вывод установлен на высокий уровень. Два других контакта определяют направление двигателя. Я подключил схему, как показано ниже.

Производственный процесс

  1. Электрогитара
  2. Spork
  3. Титан
  4. Биокерамика
  5. Кастаньеты
  6. Приклейте
  7. Тема
  8. Ацетилен
  9. Асбест
  10. Олово