Запуск двух шаговых двигателей одновременно с помощью L293D
- Войдите на сайт для отправки комментариев
Пт, 24/02/2017 - 09:03
Народ, здарова) Нужна ваша помощь. Необходимо запускать два шаговых двигателя одновременно, но при этом не с помощью цикла( 1 шаг 1, 1 шаг 2). Т.к. нужна максимальная скорость, а мой двигателя с циклом работают медленно (28byj-48). В распоряжение есть движки, ардуино уно и шилд к ней(L293D). Использую библиотеку AFMotor. Сразу скажу, что я далеко не спец в ардуино. Помогите, пожалуйста)
28byj-48 с редуктором, он никогда быстро вращаться не будет.
ну и шаговик вообще не скоростное устройство, не для того он придуман)))
Это я знаю и той скорости, кт он выдает мне хватает. Но когда вы создаете цикл поочередно делая шаги двигателями скорость становится минимальной, и вот это меня уже не устраивает. Нужно запустить оба одновременно обычным способом, а не микрошагами.
Вы бы вопрос сформулировали (у Вас в тексте деже вопросительного знака нет).
Ардуина на своих выводах сожет выдавать уроавляющие напряжения с частотой, заведомо превосходящие мозможности любой механической констрккции. Т.е. почему у Вас получается недостаточная скорость - совершенно непонятно.
Потом, насколько я помню, L293D подразумевает включение единственного шагового двигателя.
В общем, совет стандарный: если хотите получить вменяемый ответ, в первом же сообщении обязательно следует размещать скетч и схему.
Хоть вопросительного знака и нет в моем сообщение, зато есть слово "необходимо". Вы правы, одна микросхема L293D может управлять только одним двигателем, однако если бы вы внимательнее прочитали мое сообщение, увидели бы, что я говорю именно про шилд, в кт стоит две такие микросхемы. Я считаю, что на данном форуме сидят люди, разбирающиеся в самой ардуино и ее компонентах, внимательно читают просьбы и знают, что такое шилд. Скорость этих движков ограниченна самим движками, точнее их редуктором. Когда вы даете такую команду: motor1.step(3000, FORWARD, DOUBLE), то все идет отлично. Но если вы создаете такой цикл:
Хоть вопросительного знака и нет в моем сообщение, зато есть слово "необходимо". Вы правы, одна микросхема L293D может управлять только одним двигателем, однако если бы вы внимательнее прочитали мое сообщение, увидели бы, что я говорю именно про шилд, в кт стоит две такие микросхемы.
Да?
То есть Вы уверены, что любой шилд на L293D непременно содержит 2 микросхемы? А как же это?
https://ru.aliexpress.com/item/Mini-Motor-Drive-Shield-Expansion-Board-L293D-Module-For-Arduino-UNO-MEGA-2560/2036886189.html
Я считаю, что на данном форуме сидят люди, разбирающиеся в самой ардуино и ее компонентах, внимательно читают просьбы и знают, что такое шилд.
Пракика показывает, что, увы, не всегда.
Скорость этих движков ограниченна самим движками, точнее их редуктором. Когда вы даете такую команду: motor1.step(3000, FORWARD, DOUBLE), то все идет отлично. Но если вы создаете такой цикл:
1. Порвторюсь: опубликуйте схему и, желательно, ссылки на комплектующие. Третий раз повторять не буду.
2. Что там замыслили авторы в библиотеке, я не знаю. Но весьма вероятно, что метод onestep имеет внутри задержку. Весьма вероятно так же, что величина задержки подобрана так, чтобы цикл
Ваша проблема решается элементарно. Скетч и схему подключения в студию. Гадать какую библиотеку вы используете никто не будет.
Использую библиотеку AFMotor.
Использую библиотеку AFMotor.
Это скетч или схема?
это AlexeySh спрашивал)))
Где скетч? Где схема подключения? Где ссылка на библиотеку?
Где скетч? Где схема подключения? Где ссылка на библиотеку?
Не дождётесь )))
Cейчас все будет)
Итак, сфотографировать схему сейчас нет возможности, тк уже она установленна в конструкцию, и достать ее невозможно. Но сохранилась фотография старой схемы, правда там вместо двигателя nema 17 стоит 28byj-48, и тк у этого есть земля проводов пять у каждого двигателя (центральный разъем непустой). Так же этих двигателя два. Фото старой схемы прикрепляю. https://drive.google.com/open?id=0B8z4IuD1CZs3bktoUkl2SVZ2ZTg
Код программы:
Возьмите библиотеку AccelStepper, в ней есть поддержка одновременной работы с несколькими шаговыми двигателями MultiStepper. Там же есть примеры работы с несколькими двигателями.
Ок, спасибо, буду пробовать. Просто выбрал AFMotor из-за простоты управления.
Да, ещё. В скетче стоит setSpeed(150). Я не знаю как работает ваша библиотека, но например AccelStepper при пошаговом управлении делает шаг только если прошел требуемый интервал между шагами. Т. е. если изменить на setSpeed(300) все будет работать в 2 раза быстрее. Такой способ проверяли?
Да, игрался со скоростью, но опытным путем выяснил, что при значении 150 скорость максимальная, при установке большего значения, двигателя начинают трещать и падает скорость. Я вспомнил, почему решил отказаться от accelstepper, тк я использую шилд, я не могу завести изначально двигатели, тк в параметрах требуются именно пины, кт я не знаю. Я про это говорю: AccelStepper mystepper(1, pinStep, pinDirection)
Можете помочь?
Нет, так как вы не прислали ссылку на описание вашего шилда. Я не могу угадать как он подключается к Ардуино.
Извиняюсь, забыл. Вот такой: http://arduino-diy.com/arduino-motor-shield
в AccelStepper можно подключить и ваш шилд
в AccelStepper можно подключить и ваш шилд
Совершенно верно. Об этом написано в описании шилда, ссылку на который ТС наконец то прислал. Подключайте и пробуйте. Правда из описания шилда не понятно, почему для управления двумя шаговыми двигателями используется только три пина, а не 4. Возможно, что этот шилд в принципе не может одновременно выполнять шаг на обоих двигателях. Нужна схема шилда.
Поправка - используются 4 пина 11 и 3 для первого двигателя, 5 и 6 для второго двигателя. Посмотрел схему, на степперы через драйверы подаются сигналы PWM. Так что в принципе управлять одновременно двумя двигателями возможно.
Хорошо, это я понял, но все же, какие аргументы прописывать здесь: mystepper(1, pinStep, pinDirection)
Можете сказать мне именно значения pinStep и pinDirection, желательно у каждого двигателя?
А открыть библиотеку и посмотреть в ней пример с использованием двух шаговых двигателей с вашим шилдом вообще нереально? Так как вы хотите прописать с вашим шилдом работать не будет. Там в примере все подробно расписано.