Оглавление:
Видео: Управляемый по MIDI шаговый двигатель с микросхемой прямого цифрового синтеза (DDS): 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
У вас когда-нибудь была плохая идея, что вам ПРОСТО нужно было превратить в мини-проект? Ну, я играл с наброском, который я сделал для 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
Прилагаемый скетч.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. Тестирование и эксперименты
Пора поиграть в свой шаговый двигатель!
Как уже говорилось, вся идея, лежащая в основе этого, была своего рода экспериментом вне манжеты, так что во что бы то ни стало, поэкспериментируйте сами!
Рекомендуемые:
Шаговый двигатель с платой ESP32: 4 шага
Шаговый двигатель с платой ESP32: Шаговые двигатели - это двигатели постоянного тока, которые двигаются дискретными шагами. У них есть несколько катушек, которые организованы в группы, называемые «фазами». Последовательно запитывая каждую фазу, двигатель будет вращаться шаг за шагом. Шаговые двигатели очень полезны
Шаговый двигатель, управляемый шаговым двигателем, без микроконтроллера !: 6 шагов
Шаговый двигатель, управляемый шаговым двигателем, без микроконтроллера! В этом кратком руководстве мы создадим простой контроллер шагового двигателя с использованием шагового двигателя. Этот проект не требует сложной схемы или микроконтроллера. Итак, без лишних слов, приступим
Шаговый двигатель, управляемый шаговым двигателем, без микроконтроллера (V2): 9 шагов (с изображениями)
Шаговый двигатель, управляемый шаговым двигателем без микроконтроллера (V2): в одном из моих предыдущих инструкций я показал вам, как управлять шаговым двигателем с помощью шагового двигателя без микроконтроллера. Это был быстрый и увлекательный проект, но он сопровождался двумя проблемами, которые будут решены в этой инструкции. Итак, остроумие
Шаговый двигатель, управляемый шаговым двигателем - Шаговый двигатель как поворотный энкодер: 11 шагов (с изображениями)
Шаговый двигатель, управляемый шаговым двигателем | Шаговый двигатель как поворотный энкодер: у вас есть пара шаговых двигателей, и вы хотите что-то сделать? В этом руководстве давайте использовать шаговый двигатель в качестве поворотного энкодера для управления положением другого шагового двигателя с помощью микроконтроллера Arduino. Итак, без лишних слов, давайте
Управляемый светом шаговый двигатель + настенный кронштейн / подставка: 6 шагов
Управляемый светом шаговый двигатель + настенный кронштейн / подставка: эта подставка используется для размещения шагового двигателя, управляемого Arduino, предназначенного для автоматического управления занавеской в соответствии с уровнем освещенности в комнате. Вы также можете добавить ЖК-экран для печати уровня освещенности. Трехмерная передача предназначена только для демонстрации