Оглавление:
Видео: Угловое позиционное управление шагового двигателя 28BYJ-48 с Arduino и аналоговым джойстиком: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Это схема управления шаговым двигателем 28BYJ-48, которую я разработал для использования в рамках моей дипломной работы на последнем году обучения. Я не видел этого раньше, поэтому подумал, что выложу то, что обнаружил. Надеюсь, это поможет кому-то еще!
Код в основном позволяет шаговому двигателю «копировать» угловое положение аналогового джойстика, то есть, если вы нажимаете джойстик вперед, двигатель указывает на «север». нажмите джойстик на запад, двигатель вращается в том же направлении.
Для моей реализации я требовал, чтобы, если джойстик отпущен, т.е. не имеет углового положения, мотор возвращался в «исходное» направление. Начальное направление обращено на восток, и двигатель (или, по крайней мере, любой указатель / устройство, которое вы прикрепили к выходному валу!) Также должен быть обращен в этом направлении при включении.
Запасы
Arduino Uno или аналогичный
макетная плата и выбор перемычек (мужчина к мужчине, мужчина к женщине)
Источник питания 5В
Модуль аналогового джойстика (в идеале с функцией мгновенного нажатия кнопки, это упрощает выход из «исходного» положения
Шаговый двигатель 28BYJ-48 и шаговый драйвер ULN2003
Ручка, бумага и blu-tac (или любое другое указательное устройство, которое можно прикрепить к двигателю!)
Шаг 1: Шаг 1: Настройка
Подключите шаговый двигатель к драйверу шагового двигателя и соедините контакты следующим образом:
IN1 - вывод 8 Arduino
IN2 - вывод 9 Arduino
IN3 - вывод 10 Arduino
IN4 - вывод 11 Arduino
Подключите источник питания 5 В к шинам питания на макетной плате и подключите входы 5 В ULN2003 к шинам питания. подключите шину заземления к земле на вашем Arduino.
для джойстика подключите следующим образом:
Вывод переключателя - вывод 2 Arduino
Ось X - Arduino A0 (аналог в 0)
Ось Y - Arduino A1
+ 5V - выход Arduino 5V
GND - Arduino GND
Наконец, подключите заземление макета к другому контакту Arduino GND.
Шаг 2: Шаг 2: объяснение кода
Я включил полный код Arduino, который вы можете загрузить и использовать. Но сделаю все возможное, чтобы объяснить здесь относящиеся к делу части.
Теория, лежащая в основе этого кода, заключается в том, что пространство, занимаемое джойстиком, разделено на график с 0, 0 в центре. однако входы джойстика находятся на (приблизительно) 512 в центре, поэтому для преодоления этой проблемы используются две функции, чтобы «обнулить» значение, считываемое с осей X и Y. В зависимости от используемого источника питания вам может потребоваться изменить значения функций ZeroX и ZeroY, чтобы ваш джойстик выдавал надежное значение 0 в состоянии покоя.
Когда значения X, Y считываются, они сначала преобразуются в радианы с помощью функции atan2 () в библиотеке math.h. Объяснение этой функции выходит за рамки данной инструкции, но, пожалуйста, найдите ее - это довольно простой геометрический трюк!
Наконец, чтобы облегчить жизнь тем из нас, кто привык работать в градусах, а не в радах, значение рад, вычисленное с помощью atan2 (), конвертируется в градусы.
В верхней части цикла находится небольшой фрагмент кода, который позволяет щелкнуть кнопку мгновенного действия на джойстике, чтобы переместить «домашнее» местоположение. Это было невероятно полезно при тестировании кода, но я оставил это, так как вижу, как это может быть полезно в некоторых случаях.
Теперь перейдем к основной части кода! мы начинаем с считывания координат X, Y джойстика, дважды разделенных задержкой 10 мс, а затем проверки, совпадают ли они - я обнаружил, что джойстик иногда выдавал спорадические показания, и этой небольшой задержки было достаточно, чтобы остановить вращение двигателя на основе этих. Это также достаточно короткая задержка, чтобы не мешать преднамеренному вводу.
Остальная часть кода говорит сама за себя, и я приложил все усилия, чтобы задокументировать ее; Серия операторов IF сравнивает текущий угол джойстика с углом двигателя и перемещает двигатель на этот угол. 28BYJ-48 имеет 5,689 шагов на градус, поэтому мы умножаем необходимое перемещение на это, казалось бы, нечетное число!
Одна часть кода, которая требует наиболее подробного объяснения, - это то, что я назвал «циклическим случаем». В то время как джойстик и мотор были, например, + 175 °, а затем джойстик переместился на -175 ° (движение джойстика всего на 10 °, с севера на запад к югу от запада), двигатель двигался В НЕПРАВИЛЬНОМ НАПРАВЛЕНИИ на 350 °! для объяснения этого был написан специальный случай.
Случай обхода начинается с проверки того, что двигатель и джойстик имеют противоположные знаки, то есть двигатель положительный, а джойстик отрицательный, или наоборот. Он также проверяет, что сумма абсолютных (то есть положительных значений) джойстика и двигателя превышает 180 °.
Если оба эти утверждения верны, функция затем проверяет, должен ли двигатель двигаться по часовой стрелке (значение двигателя отрицательное) или против часовой стрелки (если значение двигателя положительное).
Абсолютные значения угла мотора и угла джойстика суммируются и вычитаются из 360 °, чтобы определить расстояние, на которое нужно переместиться. Наконец, угол мотора (который теперь отражает угол джойстика) обновляется как таковой.
Шаг 3: ЗАВЕРШЕНО
Итак, все, что осталось сделать, это загрузить код в Arduino и запустить его! Посмотрите видео выше, чтобы получить хорошее представление о том, как работает проект. Это было бы полезно для подвесов камеры, роботизированного оружия и многих других приложений!
Если вы используете код, дайте мне знать, и если вы увидите, что код можно улучшить, я хотел бы услышать ваш отзыв.
Рекомендуемые:
Как сделать управление джойстиком для Arduino: 3 шага
Как сделать джойстик для Arduino: в этой инструкции я покажу вам, как сделать джойстики lego для Arduino
Выбор шагового двигателя и драйвера для проекта автоматического затенения Arduino: 12 шагов (с изображениями)
Выбор шагового двигателя и драйвера для проекта автоматизированного затененного экрана Arduino: в этом руководстве я проделаю шаги, которые я предпринял, чтобы выбрать шаговый двигатель и драйвер для прототипа проекта автоматизированного затененного экрана. Шторы - это популярные и недорогие модели Coolaroo с ручным приводом, и я хотел заменить их
Интересные проекты с комплектом Elegoo Uno R3 Super Start - джойстиком для двигателя постоянного тока: 4 шага
Интересные проекты с комплектом Elegoo Uno R3 Super Start - управление джойстиком для двигателя постоянного тока: в этой инструкции я попытаюсь управлять направлением и скоростью двигателя постоянного тока с помощью джойстика с помощью Arduino, используя компоненты из Комплект Elegoo Uno R3 Super Start доступен на Amazon.com
Приспособление для испытания шагового двигателя: 3 шага
Приспособление для тестирования шаговых двигателей: у меня практически не было опыта вождения шаговых двигателей, поэтому перед проектированием, печатью, сборкой и программированием аналоговых часов с автокоррекцией «Antique» (https://www.instructables.com/id/Antique-Auto-Correcting) -Аналоговые часы /) с помощью шагового двигателя
Arduino: Precision Lib для шагового двигателя: 19 шагов
Arduino: Precision Lib для шагового двигателя: Сегодня я покажу вам библиотеку для полного драйвера шагового двигателя с концевыми выключателями и движения двигателя с ускорением и микрошагом. Эта Lib, которая работает как на Arduino Uno, так и на Arduino Mega, позволяет перемещать движки не только на основе