Страница 1 из 16

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

Добавлено: 04.12.2019{, 22:24}
AlexCrane
Бок управления шаговым двигателем на библиотеке AccelStepper

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

Работает на библиотеке 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 КБ) 746 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 682 скачивания
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 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 КБ) 1081 скачивание

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

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

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

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

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

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

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

Добавлено: 05.12.2019{, 13:57}
Sanbi4
Подскажите, есть возможность использования нескольких таких блоков в 1 проекте?

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

Добавлено: 05.12.2019{, 15:01}
AlexCrane
Sanbi4, Пока нет. Несколько для одного ШД или для нескольких ШД???

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

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

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

Добавлено: 05.12.2019{, 17:49}
AlexCrane
Sanbi4, Тяжко будет ардуинке на этой библиотеке, попробуем...

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

Добавлено: 17.12.2019{, 18:47}
leons
А можно вторую версию посмотреть // Тест ШД 02 test.flp

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

Добавлено: 17.12.2019{, 19:25}
AlexCrane
leons, Таковой нет (пропустил :no: ), что конкретно вас интересует?

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

Добавлено: 17.12.2019{, 19:46}
leons
там был ваш первый тест я его удалил случайно , нажал на кнопку 400 шагнул отпустил -400 шагнул ,
у меня есть скетч я его хочу на FLProg переделать

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

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

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

Добавлено: 14.01.2020{, 18:16}
AlexCrane
Обновил блоки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 24.01.2020{, 16:20}
Sanbi4
-Oleg1345140, EnSteps = 0, Steps = 0 выставьте константами