Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

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

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

#1

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

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

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

Работает на библиотеке 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 КБ) 147 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 127 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 15.12.2019. Не включалось повторно бесконечное вращение
Обновил 14.01.2020. После остановки "бесконечного вращения" продолжал медленно шагать
Обновил 29.01.2020 до версии 1.2. Пофиксил обнаруженные баги.
Обновил 06.04.2020 до версии 1.3. Некорректно работал вход CCW
Вложения
6х ШД AlexCrane v1.3.ubl
(498.89 КБ) 113 скачиваний
ШД AlexCrane v1.2.ubl
(498.83 КБ) 163 скачивания
Последний раз редактировалось AlexCrane 06.04.2020{, 17:19}, всего редактировалось 6 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#2

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

Резерв
Все переместил в первый пост
Последний раз редактировалось AlexCrane 14.01.2020{, 17:48}, всего редактировалось 4 раза.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#3

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

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

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

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

#4

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

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

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

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

#5

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

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

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

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

#6

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

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

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

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

#7

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

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

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

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

#8

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

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

leons
Рядовой
Сообщения: 78
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 0

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

#9

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

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

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

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

#10

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

leons, Таковой нет (пропустил :no: ), что конкретно вас интересует?
Если не знаю, то не скажу. Если скажу, то сначала проверю...

leons
Рядовой
Сообщения: 78
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 0

Шаговый двигатель на 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
Лейтенант
Сообщения: 367
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 76
Откуда: Ульяновск
Имя: Александр

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

#13

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

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

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

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

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

#14

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

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

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

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

#15

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

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

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

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

Шаговый двигатель на 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
Лейтенант
Сообщения: 535
Зарегистрирован: 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 КБ) 28 скачиваний

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

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

#18

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

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

Oleg1345140
Лейтенант
Сообщения: 535
Зарегистрирован: 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
Рядовой
Сообщения: 71
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 2
Имя: Сергей

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

#20

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

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

Ответить

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