Оглавление:

Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага

Видео: Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага

Видео: Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага
Видео: Микросхема драйвера двигателей L293D 2024, Декабрь
Anonim
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)
Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS)

У вас когда-нибудь была плохая идея, что вам ПРОСТО нужно было превратить в мини-проект? Ну, я играл с наброском, который я сделал для Arduino Due, предназначенным для создания музыки с модулем AD9833 Direct Digital Synthesis (DDS) … и в какой-то момент я подумал: «Эй, может быть, мне стоит установить шаговый двигатель / драйвер для это . Именно эта идея и послужила толчком к созданию этого небольшого макетного проекта.

В этот проект будет включен код для использования MIDI-over-USB для управления Arduino Due и отправки прямоугольных сигналов между модулем AD9833 и драйвером шагового двигателя. Также будет схема и основные инструкции по подключению его к Arduino Due.

Запасы:

Что вам понадобится для этого проекта:

Arduino Due

ПРИМЕЧАНИЕ. Код написан для Due, но он также должен работать и / или быть адаптирован для Zero. Он использует библиотеку MIDIUSB от Arduino, для которой требуется собственный порт USB.

Макетная плата без пайки + перемычки

Модуль коммутации AD9833

A4988 Stepper Driver (или аналогичный)

Шаговый двигатель NEMA 17 (или аналогичный)

- Источник питания 24 В (обратите внимание, я выбрал это значение 24 В, потому что оно было больше, чем номинальное напряжение шагового двигателя. Ваша реализация может быть другой, если вы используете двигатель большего размера)

Шаг 1. Макетирование

Макетирование
Макетирование

Основная идея заключается в том, что ИС прямого цифрового синтеза будет генерировать прямоугольную волну для управления «шаговым» выводом драйвера шагового двигателя. Затем этот шаговый драйвер будет приводить двигатель в движение с указанной звуковой частотой. Направление двигателя несколько произвольно, если он работает с правильной частотой.

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

Земля:

- Подключите контакты AGND и DGND модуля AD9833 к шине GND на макетной плате.

- Подключите два контакта GND на шаговом драйвере к шине GND.

- Поднесите это к одному из контактов GND Arduino Due.

Мощность 3,3 В:

- Подключите вывод VDD шагового драйвера к V + Rail на макетной плате.

- Подключите вывод VCC модуля AD9833 к V + Rail на макетной плате.

- Перенесите это на вывод 3.3V Arduino Due.

Мощность 24 В:

- Подключите вывод VMOT к источнику питания 24 В постоянного тока (в зависимости от вашего выбора двигателя вы можете использовать более высокую или более низкую шину питания)

Подключение модуля к модулю:

- Подключите вывод OUT модуля AD9833 к выводу STEP драйвера двигателя.

Подключения шагового драйвера:

- Подключите разъемы шагового двигателя к контактам 2B / 2A / 1A / 1B. Полярность не так важна, если фазы драйвера совпадают с фазами шагового двигателя.

- Соедините контакты RESET и SLEEP вместе и переместите их к контакту 8 Arduino Due.

- Подключите контакт DIR к шине 3,3 В

Соединения модуля AD9833:

- Подключите SCLK к контакту SCK Arduino Due. Обратите внимание, что этот вывод находится на 6-контактном штекере ICSP рядом с микроконтроллером, а не на обычных внешних гнездовых разъемах.

- Подключите вывод SDATA к выводу MOSI Due. Обратите внимание, что этот вывод находится на 6-контактном штекере ICSP рядом с микроконтроллером, а не на обычных внешних гнездовых разъемах.

- Подключите FSYNC к контакту 6 Arduino Due (это контакт Chip Select для этого проекта)

Теперь, когда макет полностью собран, пора взглянуть на код!

Шаг 2: Программирование и настройка MIDI

Программирование и настройка MIDI
Программирование и настройка MIDI

Прилагаемый скетч.ino будет принимать входы USB-MIDI через собственный USB-порт Arduino Due и использовать их для управления AD9833. В этом чипе есть ЦАП, который работает на частоте 25 МГц с разрешением по частоте 28 бит (полный излишек для того, что здесь необходимо), и большая часть кода здесь настраивает его для работы и вывода прямоугольной волны.

Примечание: есть два порта USB. Один используется для программирования платы, а другой будет использоваться для обмена данными по MIDI через USB

Обратите внимание, что этот эскиз не будет работать как есть на Arduino Uno - этот проект специфичен тем, что ему нужен собственный USB в Arduino Due или аналогичных устройствах

Параметры настройки:

- Есть 2 режима, которые могут быть установлены с помощью макроопределения препроцессора. Если оставить «#define STOPNOTES» нетронутым, шаговый двигатель остановится между нотами. Это не всегда желательно (например, воспроизведение быстрых арпеджио), поэтому, чтобы изменить это поведение, просто удалите или закомментируйте этот оператор #define, и после воспроизведения степпер будет работать непрерывно.

- Я использую дешевую 2-октавную MIDI-клавиатуру с кнопкой вверх / вниз на октаву, но если у вас нет этой опции, вы можете сдвинуть на октаву приведенное ниже преобразование частоты путем умножения или деления на степень двойки.

Преобразование MIDI в частоту выполняется с помощью этой строки в функции playNote: int f_out = (int) (27.5 * pow (2, ((float) midiNote-33) / 12));

- Я обычно использую свой компьютер для взаимодействия через USB-MIDI - вы можете сделать это с помощью своей любимой программы Digital Audio Workstation (DAW). Если у вас его нет, довольно легко настроить эту систему с помощью LMMS - бесплатной платформы с открытым исходным кодом. После его установки и запуска просто установите Arduino Due в качестве устройства вывода MIDI, а если вы используете клавиатуру USB MIDI, установите его как вход.

Шаг 3. Тестирование и эксперименты

Пора поиграть в свой шаговый двигатель!

Как уже говорилось, вся идея, лежащая в основе этого, была своего рода экспериментом вне манжеты, так что во что бы то ни стало, поэкспериментируйте сами!

Рекомендуемые: