Шаговый двигатель на AccelStepper

Шаговый двигатель на AccelStepper

Пользовательские блоки для управления шаговыми двигателями и сервоприводами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#1

Сообщение AlexCrane » 04.12.2019{, 22:24}

Бок управления шаговым двигателем на библиотеке AccelStepper

Наименование блока: ШагДвиг_mod (step/dir) INT_v2
ШД.png
ШД.png (4.42 КБ) 41182 просмотра

Работает на библиотеке 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
(752.64 КБ) 737 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 677 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 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
(118.27 КБ) 1069 скачиваний
Вложения
ШД AlexCrane v1.3.ubl
(780.74 КБ) 1026 скачиваний
Последний раз редактировалось AlexCrane 12.11.2020{, 18:48}, всего редактировалось 9 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#2

Сообщение AlexCrane » 04.12.2019{, 22:24}

Примеры форумчан:
leons
Описание: двигатель рыскает как радар влево-вправо с продвижением по кругу
проба.flp
(1.39 МБ) 315 скачиваний
----------------------------------------------------
CraCk, AlexCrane
Описание: ШД 28byj-48 (через драйвер на базе ULN2003) работает как сервопривод от 0 до 90 гр. в зависимости от положения переменного резистора на А0
ШД ULN1.flp
(191.64 КБ) 237 скачиваний
Последний раз редактировалось AlexCrane 11.10.2020{, 22:18}, всего редактировалось 8 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Шаговый двигатель на AccelStepper

#3

Сообщение Ingwar » 04.12.2019{, 23:01}

Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#4

Сообщение AlexCrane » 05.12.2019{, 05:45}

Ingwar писал(а):
04.12.2019{, 23:01}
Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Ардуино нано, мега, уно вряд-ли даст столько шагов в сек... Пробовал 4000 - работало. Количество шагов в секунду любое.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

Шаговый двигатель на AccelStepper

#5

Сообщение Sanbi4 » 05.12.2019{, 13:57}

Подскажите, есть возможность использования нескольких таких блоков в 1 проекте?

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#6

Сообщение AlexCrane » 05.12.2019{, 15:01}

Sanbi4, Пока нет. Несколько для одного ШД или для нескольких ШД???
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

Шаговый двигатель на AccelStepper

#7

Сообщение Sanbi4 » 05.12.2019{, 16:27}

Мне надо управлять 6ю ШД. С разными режимами работы. То есть выполнять разные задачи, соответственно, делать разные шаги при определенных условиях. Можно, чтобы в проекте было 6 блоков, остальное "прикрутим"

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#8

Сообщение AlexCrane » 05.12.2019{, 17:49}

Sanbi4, Тяжко будет ардуинке на этой библиотеке, попробуем...
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 3

Шаговый двигатель на AccelStepper

#9

Сообщение leons » 17.12.2019{, 18:47}

А можно вторую версию посмотреть // Тест ШД 02 test.flp

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#10

Сообщение AlexCrane » 17.12.2019{, 19:25}

leons, Таковой нет (пропустил :no: ), что конкретно вас интересует?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 3

Шаговый двигатель на AccelStepper

#11

Сообщение leons » 17.12.2019{, 19:46}

там был ваш первый тест я его удалил случайно , нажал на кнопку 400 шагнул отпустил -400 шагнул ,
у меня есть скетч я его хочу на FLProg переделать

Scrabler
Рядовой
Сообщения: 9
Зарегистрирован: 20.07.2019{, 18:16}
Репутация: 0
Имя: Михаил

Шаговый двигатель на AccelStepper

#12

Сообщение Scrabler » 04.01.2020{, 14:24}

Уважаемый разработчик модуля на Accelstepper. Ваш модуль работает замечательно на процессорах
AVR, но к сожалению я сейчас делаю проект на ESP8266 а на нем не работает библиотека TimerOne... Не могли бы вы сделать этот модуль и для ESP например на библиотеке Ticker которая работает на нем. Спасибо

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Шаговый двигатель на AccelStepper

#13

Сообщение AlexCrane » 14.01.2020{, 18:16}

Обновил блоки

Scrabler, Не знаю поддерживает ли данная библиотека ESP, попробуй и отпишись. Убрал прерывания, думаю скорости ESP хватит...
Тест ШД 04 test ESP.flp
(164.64 КБ) 306 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Шаговый двигатель на AccelStepper

#14

Сообщение ingener » 19.01.2020{, 14:33}

AlexCrane, жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)

Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06.09.2015{, 07:09}
Репутация: 1
Откуда: Курган

Шаговый двигатель на AccelStepper

#15

Сообщение Oleg1345140 » 24.01.2020{, 13:54}

День добрый, использовал ваш блок, столкнулся со следующей проблемой. При использовании постоянного вращения по завершении команды контроллер возвращает двигатель в нулевую координату без команды. И более блок не на какие команды не реагирует. Во вложении файл тестовой программы и видео файл работы. Прошу подсказать как исправить эту ситуацию.
тест двигателя.flp
(230.7 КБ) 173 скачивания
Видео

Отправлено спустя 1 минуту 13 секунд:
Видео лучше скачать, иначе встроенный плеер его сильно жмет и не все заметно.

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

Шаговый двигатель на AccelStepper

#16

Сообщение Sanbi4 » 24.01.2020{, 14:50}

Oleg1345140,первое, что увидел, у вас нет основного блока для шагового двигателя.

Отправлено спустя 2 минуты 33 секунды:
ingener писал(а):
19.01.2020{, 14:33}
AlexCrane, жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)
На вход EnSteps - подавайте импульсы с симметричного генератора 1мс.

Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06.09.2015{, 07:09}
Репутация: 1
Откуда: Курган

Шаговый двигатель на AccelStepper

#17

Сообщение Oleg1345140 » 24.01.2020{, 15:23}

Sanbi4 писал(а):
24.01.2020{, 14:55}
Oleg1345140,первое, что увидел, у вас нет основного блока для шагового двигателя.

\
Добавил блок, но принципиально ничего не изменилось
тест двигателя2.flp
(238.1 КБ) 154 скачивания

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

Шаговый двигатель на AccelStepper

#18

Сообщение Sanbi4 » 24.01.2020{, 15:46}

Oleg1345140, попробуйте с этим блоком. да и для вашей задачи - данный блок избыточен. есть на форуме блоки проще и тоже нормально работающие. попробуте на вход Steps - поставить константу Int = 0
Вложения
ШД AlexCrane.ubl
(272.54 КБ) 224 скачивания

Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06.09.2015{, 07:09}
Репутация: 1
Откуда: Курган

Шаговый двигатель на AccelStepper

#19

Сообщение Oleg1345140 » 24.01.2020{, 16:10}

Sanbi4 писал(а):
24.01.2020{, 15:46}
Oleg1345140, попробуйте с этим блоком. да и для вашей задачи - данный блок избыточен. есть на форуме блоки проще и тоже нормально работающие. попробуте на вход Steps - поставить константу Int = 0
Сейчас попробую, задача была изначально сильно сложнее, но потерпев неудачу, стал искать почему отрабатывает не корректно и упрощать схему. в результате сделал вывод что есть проблема с блоком шагового двигателя.

Отправлено спустя 9 минут 11 секунд:
с данным блоком ведет себя точно так же, сначала перемещается пока не отпущу кнопку потом возвращается в исходную позицию, без каких либо команд. Перемещение по часовой или против часовой стрелки значение не имеет.

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

Шаговый двигатель на AccelStepper

#20

Сообщение Sanbi4 » 24.01.2020{, 16:20}

-Oleg1345140, EnSteps = 0, Steps = 0 выставьте константами

Ответить

Вернуться в «Управление шаговыми двигателями и сервоприводами»