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

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

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

Сообщение 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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось AlexCrane 12 ноя 2020, 18:48, всего редактировалось 9 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

Примеры форумчан:
[ref]leons[/ref]
Описание: двигатель рыскает как радар влево-вправо с продвижением по кругу
проба.flp
----------------------------------------------------
[ref]CraCk[/ref], [ref]AlexCrane[/ref]
Описание: ШД 28byj-48 (через драйвер на базе ULN2003) работает как сервопривод от 0 до 90 гр. в зависимости от положения переменного резистора на А0
ШД ULN1.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось AlexCrane 11 окт 2020, 22:18, всего редактировалось 8 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

Ingwar писал(а): 04 дек 2019, 23:01 Код не смотрел, спрошу так - частота шагов меняется кратно таймеру? Или реально например можно получить 10000, 10001, 10002 и т. д. шагов в секунду?
Ардуино нано, мега, уно вряд-ли даст столько шагов в сек... Пробовал 4000 - работало. Количество шагов в секунду любое.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30 окт 2019, 17:58
Имя: Сергей

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

Сообщение Sanbi4 »

Подскажите, есть возможность использования нескольких таких блоков в 1 проекте?
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

[ref]Sanbi4[/ref], Пока нет. Несколько для одного ШД или для нескольких ШД???
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30 окт 2019, 17:58
Имя: Сергей

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

Сообщение Sanbi4 »

Мне надо управлять 6ю ШД. С разными режимами работы. То есть выполнять разные задачи, соответственно, делать разные шаги при определенных условиях. Можно, чтобы в проекте было 6 блоков, остальное "прикрутим"
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

[ref]Sanbi4[/ref], Тяжко будет ардуинке на этой библиотеке, попробуем...
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18 июн 2017, 17:07

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

Сообщение leons »

А можно вторую версию посмотреть // Тест ШД 02 test.flp
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

[ref]leons[/ref], Таковой нет (пропустил :no: ), что конкретно вас интересует?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18 июн 2017, 17:07

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

Сообщение leons »

там был ваш первый тест я его удалил случайно , нажал на кнопку 400 шагнул отпустил -400 шагнул ,
у меня есть скетч я его хочу на FLProg переделать
Scrabler
Рядовой
Сообщения: 9
Зарегистрирован: 20 июл 2019, 18:16
Имя: Михаил

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

Сообщение Scrabler »

Уважаемый разработчик модуля на Accelstepper. Ваш модуль работает замечательно на процессорах
AVR, но к сожалению я сейчас делаю проект на ESP8266 а на нем не работает библиотека TimerOne... Не могли бы вы сделать этот модуль и для ESP например на библиотеке Ticker которая работает на нем. Спасибо
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

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

[ref]Scrabler[/ref], Не знаю поддерживает ли данная библиотека ESP, попробуй и отпишись. Убрал прерывания, думаю скорости ESP хватит...
Тест ШД 04 test ESP.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
ingener
Лейтенант
Сообщения: 580
Зарегистрирован: 14 окт 2018, 00:26
Имя: Андрей
Благодарил (а): 2 раза
Поблагодарили: 3 раза

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

Сообщение ingener »

[ref]AlexCrane[/ref], жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)
Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06 сен 2015, 07:09
Откуда: Курган

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

Сообщение Oleg1345140 »

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

Отправлено спустя 1 минуту 13 секунд:
Видео лучше скачать, иначе встроенный плеер его сильно жмет и не все заметно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30 окт 2019, 17:58
Имя: Сергей

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

Сообщение Sanbi4 »

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

Отправлено спустя 2 минуты 33 секунды:
ingener писал(а): 19 янв 2020, 14:33 [ref]AlexCrane[/ref], жаль, что в данном очень функциональном блоке нет возможности менять "на ходу" скоость движения в рабочем режиме (с отработкой ускорений).
Т.е. если менять во время движения константу MaxSpeed, блок не реагирует.
Нужно это было бы для того, чтобы использовать перемещение мотора вручную с ускорением через определенное время (к примеру, 3 секунды едет на 1000, затем ускоряется до 3000)
На вход EnSteps - подавайте импульсы с симметричного генератора 1мс.
Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06 сен 2015, 07:09
Откуда: Курган

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

Сообщение Oleg1345140 »

Sanbi4 писал(а): 24 янв 2020, 14:55 [ref]Oleg1345140[/ref],первое, что увидел, у вас нет основного блока для шагового двигателя.

\
Добавил блок, но принципиально ничего не изменилось
тест двигателя2.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30 окт 2019, 17:58
Имя: Сергей

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

Сообщение Sanbi4 »

[ref]Oleg1345140[/ref], попробуйте с этим блоком. да и для вашей задачи - данный блок избыточен. есть на форуме блоки проще и тоже нормально работающие. попробуте на вход Steps - поставить константу Int = 0
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06 сен 2015, 07:09
Откуда: Курган

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

Сообщение Oleg1345140 »

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

Отправлено спустя 9 минут 11 секунд:
с данным блоком ведет себя точно так же, сначала перемещается пока не отпущу кнопку потом возвращается в исходную позицию, без каких либо команд. Перемещение по часовой или против часовой стрелки значение не имеет.
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30 окт 2019, 17:58
Имя: Сергей

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

Сообщение Sanbi4 »

-[ref]Oleg1345140[/ref], EnSteps = 0, Steps = 0 выставьте константами
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя