Страница 1 из 16
Шаговый двигатель на AccelStepper
Добавлено: 04 дек 2019, 22:24
AlexCrane
Бок управления шаговым двигателем на библиотеке AccelStepper
Наименование блока: ШагДвиг_mod (step/dir) INT_v2
ШД.png
Работает на библиотеке AccelStepper.h и TimerOne.h (Не будет работать ШИМ на выходах завязанных на первое прерывание)
http://www.airspayce.com/mikem/arduino/ ... index.html
Параметры пользователя:
period - Период прерывания, мкс, Менять Оторожно
Step - Пин управления шагами контроллера
Dir - Пин направления вращения контроллера
Входы:
Continuous - При true постоянно шагаем, имеет больший приоритет перед EnSteps
SpeedContinuous - Скорость ШД для "постоянно шагаем"
Эти два входа можно использовать для поиска концевика и просто чтобы покрутить двигателем, но без ускорений
SetZeroPosition - Установка начальной позиции в 0. Использовать через RTrig
EnSteps - при переднем фронте начинаем шагать. Использовать через RTrig
MaxSpeed - Максимальная скорость шаг/сек
Acceleration - Ускорение шаг/сек2
Steps - Количество шагов для выполнения (hint: можно и отрицательные)
CCW - true крутить против часовой, иначе по
AbsSteps - Если true то шагаем по абсолютным координатам от нулевой позиции, иначе идем относительно последней позиции
StopAccel - Остановка с использованием текущей скорости и ускорения
Выходы:
Ready - true двигатель закончил движение
Position - Текущая позиция двигателя
-
-
Небольшой пример:
------------------------------------------------
Тест ШД 04 test.flp
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 15.12.2019. Не включалось повторно бесконечное вращение
Обновил 14.01.2020. После остановки "бесконечного вращения" продолжал медленно шагать
Обновил 29.01.2020 до версии 1.2. Пофиксил обнаруженные баги.
Обновил 06.04.2020 до версии 1.3. Некорректно работал вход CCW
Обновил 12.11.2020 Добавил блоки для DUE и для драйверов на базе ULN2003, L298N и пр.
Примеры предоставленные участниками форума:
viewtopic.php?t=5919#p80991
Библиотеки
Accel_libraries.zip
Шаговый двигатель на AccelStepper
Добавлено: 04 дек 2019, 22:24
AlexCrane
Примеры форумчан:
[ref]leons[/ref]
Описание: двигатель рыскает как радар влево-вправо с продвижением по кругу
проба.flp
----------------------------------------------------
[ref]CraCk[/ref], [ref]AlexCrane[/ref]
Описание: ШД 28byj-48 (через драйвер на базе ULN2003) работает как сервопривод от 0 до 90 гр. в зависимости от положения переменного резистора на А0
ШД ULN1.flp
Шаговый двигатель на AccelStepper
Добавлено: 04 дек 2019, 23:01
Ingwar
Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Шаговый двигатель на AccelStepper
Добавлено: 05 дек 2019, 05:45
AlexCrane
Ingwar писал(а): 04 дек 2019, 23:01
Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Ардуино нано, мега, уно вряд-ли даст столько шагов в сек... Пробовал 4000 - работало. Количество шагов в секунду любое.
Шаговый двигатель на AccelStepper
Добавлено: 05 дек 2019, 13:57
Sanbi4
Подскажите, есть возможность использования нескольких таких блоков в 1 проекте?
Шаговый двигатель на AccelStepper
Добавлено: 05 дек 2019, 15:01
AlexCrane
[ref]Sanbi4[/ref], Пока нет. Несколько для одного ШД или для нескольких ШД???
Шаговый двигатель на AccelStepper
Добавлено: 05 дек 2019, 16:27
Sanbi4
Мне надо управлять 6ю ШД. С разными режимами работы. То есть выполнять разные задачи, соответственно, делать разные шаги при определенных условиях. Можно, чтобы в проекте было 6 блоков, остальное "прикрутим"
Шаговый двигатель на AccelStepper
Добавлено: 05 дек 2019, 17:49
AlexCrane
[ref]Sanbi4[/ref], Тяжко будет ардуинке на этой библиотеке, попробуем...
Шаговый двигатель на AccelStepper
Добавлено: 17 дек 2019, 18:47
leons
А можно вторую версию посмотреть // Тест ШД 02 test.flp
Шаговый двигатель на AccelStepper
Добавлено: 17 дек 2019, 19:25
AlexCrane
[ref]leons[/ref], Таковой нет (пропустил

), что конкретно вас интересует?
Шаговый двигатель на AccelStepper
Добавлено: 17 дек 2019, 19:46
leons
там был ваш первый тест я его удалил случайно , нажал на кнопку 400 шагнул отпустил -400 шагнул ,
у меня есть скетч я его хочу на FLProg переделать
Шаговый двигатель на AccelStepper
Добавлено: 04 янв 2020, 14:24
Scrabler
Уважаемый разработчик модуля на Accelstepper. Ваш модуль работает замечательно на процессорах
AVR, но к сожалению я сейчас делаю проект на ESP8266 а на нем не работает библиотека TimerOne... Не могли бы вы сделать этот модуль и для ESP например на библиотеке Ticker которая работает на нем. Спасибо
Шаговый двигатель на AccelStepper
Добавлено: 14 янв 2020, 18:16
AlexCrane
Обновил блоки
[ref]Scrabler[/ref], Не знаю поддерживает ли данная библиотека ESP, попробуй и отпишись. Убрал прерывания, думаю скорости ESP хватит...
Тест ШД 04 test ESP.flp
Шаговый двигатель на AccelStepper
Добавлено: 19 янв 2020, 14:33
ingener
[ref]AlexCrane[/ref], жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 13:55
Oleg1345140
День добрый, использовал ваш блок, столкнулся со следующей проблемой. При использовании постоянного вращения по завершении команды контроллер возвращает двигатель в нулевую координату без команды. И более блок не на какие команды не реагирует. Во вложении файл тестовой программы и видео файл работы. Прошу подсказать как исправить эту ситуацию.
тест двигателя.flp
Видео
Отправлено спустя 1 минуту 13 секунд:
Видео лучше скачать, иначе встроенный плеер его сильно жмет и не все заметно.
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 14:55
Sanbi4
[ref]Oleg1345140[/ref],первое, что увидел, у вас нет основного блока для шагового двигателя.
Отправлено спустя 2 минуты 33 секунды:
ingener писал(а): 19 янв 2020, 14:33
[ref]AlexCrane[/ref], жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)
На вход EnSteps - подавайте импульсы с симметричного генератора 1мс.
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 15:23
Oleg1345140
Sanbi4 писал(а): 24 янв 2020, 14:55
[ref]Oleg1345140[/ref],первое, что увидел, у вас нет основного блока для шагового двигателя.
\
Добавил блок, но принципиально ничего не изменилось
тест двигателя2.flp
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 15:46
Sanbi4
[ref]Oleg1345140[/ref], попробуйте с этим блоком. да и для вашей задачи - данный блок избыточен. есть на форуме блоки проще и тоже нормально работающие. попробуте на вход Steps - поставить константу Int = 0
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 16:19
Oleg1345140
Sanbi4 писал(а): 24 янв 2020, 15:46
[ref]Oleg1345140[/ref], попробуйте с этим блоком. да и для вашей задачи - данный блок избыточен. есть на форуме блоки проще и тоже нормально работающие. попробуте на вход Steps - поставить константу Int = 0
Сейчас попробую, задача была изначально сильно сложнее, но потерпев неудачу, стал искать почему отрабатывает не корректно и упрощать схему. в результате сделал вывод что есть проблема с блоком шагового двигателя.
Отправлено спустя 9 минут 11 секунд:
с данным блоком ведет себя точно так же, сначала перемещается пока не отпущу кнопку потом возвращается в исходную позицию, без каких либо команд. Перемещение по часовой или против часовой стрелки значение не имеет.
Шаговый двигатель на AccelStepper
Добавлено: 24 янв 2020, 16:20
Sanbi4
-[ref]Oleg1345140[/ref], EnSteps = 0, Steps = 0 выставьте константами