Шаговый двигатель на 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 КБ) 41398 просмотров

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

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

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

#121

Сообщение AlexCrane » 04.09.2020{, 10:18}

Wadim77, Прошу прощения, забыл в примере подать импульс для начала движения ШД (как только получили данные по UART)
Тест ШД 05.3 test.flp
(597.1 КБ) 70 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Wadim77
Рядовой
Сообщения: 21
Зарегистрирован: 20.08.2020{, 19:23}
Репутация: 0
Имя: Wadim

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

#122

Сообщение Wadim77 » 05.09.2020{, 02:00}

AlexCrane писал(а):
04.09.2020{, 10:18}
Wadim77, Прошу прощения, забыл в примере подать импульс для начала движения ШД (как только получили данные по UART)
Тест ШД 05.3 test.flp
ДОБРОГО ВРЕМЕНИ СУТОК!

Я немного заменил вход (плата №6), теперь там не уарт вход, а приемник DMX512. Что то совсем все перестало работать. в принципе немного изменил - приходит значение от 0 до 255, затем масштабируется до 2550 шагов. Это поидее понятно. Наверное я что то напортачил с сигналом поступления значения? Взгляние, ПОЖАЛУЙСТА. Хотелось бы довести этот проект до конца. П.С. (если не сложно) подскажите - 1. какую переменную или просто ПРИЕМ в ком порт надо принимать? 2. Пункт - сигнал по приему я не нашел? как он правильно реализуется? 3. Что надо отправляться в ком порт ардуинки с компа (МОНИТОРА ПОРТа), что бы заставить делать шаги? ОГРОМНОЕ ВАМ СПАСИБО за помощь! П.С.С - проект свой я приложил к этому письму)
Вложения
Тест ШД 05.3 testDMX.flp
(512.36 КБ) 47 скачиваний

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

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

#123

Сообщение AlexCrane » 05.09.2020{, 07:47}

Wadim77, Не знаю что такое DMX512, сделал прием шагов в виде строки из UART
Тест ШД 05.4 testDMX.flp
(671.12 КБ) 73 скачивания
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#124

Сообщение Sanbi4 » 09.09.2020{, 10:28}

Доброго времени суток. Подскажите такую вещь, как реализовать: нужно минимизировать ошибки шагания от нулевой точки. Дело в том, что скорость изменения количества шагов может меняться быстрее, чем шаговик отработает, в связи с этим могут накапливаться ошибки позиционирования. я думаю так сделать: запись переменной количества шагов разрешать через rtrig с выхода ready блока. будет ли это нормально работать?

железо пока не собрано, протестировать нет возможности.
Вложения
Безымянный.jpg

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

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

#125

Сообщение AlexCrane » 09.09.2020{, 14:49}

Sanbi4 писал(а):
09.09.2020{, 10:28}
скорость изменения количества шагов может меняться быстрее, чем шаговик отработает
Просто не нужно такого допускать
Sanbi4 писал(а):
09.09.2020{, 10:28}
запись переменной количества шагов разрешать через rtrig с выхода ready блока
Так обычно и делают
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#126

Сообщение ingener » 15.09.2020{, 12:28}

AlexCrane, что-то не получается с плавной остановкой в ручном режиме.
если нажать и держать любую кнопку до прохода заданного кол-ва шагов, то тормозит плавно.
Если же бросить кнопку раньше, то встает резко.
Хотя, по идее, при подаче сигнала с RS триггера на вход StopAccel должен отрабатывать замедление?
Схема такая -
Вложения
hd1.PNG

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

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

#127

Сообщение AlexCrane » 15.09.2020{, 21:18}

ingener, RS триггер тут лишний, после FTrig подключите к StopAccel. Возможно просто нужно убавить ускорение...
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#128

Сообщение Davit07 » 23.09.2020{, 23:34}

Доброго дня .
Подскажите пожалуйста . При загрузке данного блока на плату DUE, пишет ошибку , несколько библиотек не найдено TimerOne.h. . Библиотеку загружаю, но все равно её не видно . При загрузке в UNO проблем нет . Подскаже в чем беда ?
Всем спасибо
Вложения
2020-09-23_23-50-59.png

viktorz1
Рядовой
Сообщения: 11
Зарегистрирован: 24.09.2020{, 00:08}
Репутация: 0
Имя: Виктор

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

#129

Сообщение viktorz1 » 24.09.2020{, 00:24}

Подскажите пожалуйста, на этом блоке можно собрать просто крутилку с регулировкой скорости вращения? Хочу собрать станочек свивки провода. Так как диаметр провода будет разный то скорее всего нужно будет подстраивать соотношение скоростей двух моторов (тип Nemo 17). Второе, это плавный старт с начальной скоростью вращения и если всё устраивает то по необходимости увеличение оборотов до номинальной.
Может есть у кого подходящий пример нечто похожего? Был бы очень признателен в помощи.

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

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

#130

Сообщение AlexCrane » 24.09.2020{, 18:48}

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

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#131

Сообщение Davit07 » 24.09.2020{, 20:29}

AlexCrane писал(а):
24.09.2020{, 18:48}
Davit07, TimerOne.h не работает с DUE. Если найдете библиотеку для работы с таймерами для DUE сделаю...
Я не разбираюсь особо какая должна быть библиотека. Если напишете какую-нибудь информацию о библиотеке , то конечно поищу .
Благодарю за помощь

Отправлено спустя 4 минуты 26 секунд:
viktorz1, сейчас занимаюсь подобным проектом. Как только будет готов пример , я Вам напишу

Отправлено спустя 1 час 4 минуты 19 секунд:
AlexCrane, посмотрите пожалуйста ссылки как будет у Вас время свободное

https://www.arduinolibraries.info/libraries/due-timer

https://github.com/ivanseidel/DueTimer

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

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

#132

Сообщение AlexCrane » 25.09.2020{, 13:35}

Davit07, Попробуй
ШД_DUE_основной_для_1х_ШД_v1.3_(CODE).ubi
(63.75 КБ) 55 скачиваний
используется 6 прерывание
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#133

Сообщение Davit07 » 25.09.2020{, 18:22}

AlexCrane, благодарю . В понедельник буду у компьютера , по результату отпишусь . Спасибо

Revenger
Рядовой
Сообщения: 21
Зарегистрирован: 04.02.2016{, 02:22}
Репутация: 0
Откуда: Ставрополь
Контактная информация:

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

#134

Сообщение Revenger » 02.10.2020{, 09:11}

Я вас всех приветствую!
Вопрос к знающим (или к автору): При подключении кнопок "вперёд/назад" (точнее пока просто на столе, проводочками) на енСтеп (для использования разгона и торможения ШД) и нажатии очень кратковременно "в любую сторону" как избежать такого, что ШД стартует и вращается ооочень медленно? Если подержать контакт чуть более продолжительно, то работает хорошо, но немного проезжает лишнего.

Поясню подробнее: Я пытаюсь сделать механизм поднятия/опускания каретки станка, мне нужно перемещать в мм. Для этого я задал конвертацию имульсов (для перевода на дисплей в мм), ну и задал на "степс" кол-во импульсов, примерно равное 1мм (примерно потому что пока всё на столе). Что бы переместиться на 1мм, а не больше, просто кратко "нажимаю кнопку", дабы не проскочить 1мм (кол-во импульсов) а ШД почему-то еле крутит.
Надеюсь понятно изъяснил суть. Ну и прошу прощения, программист из меня никакой... делаю что-то крайне редко, программу, как и языки программирования не знаю :smile44:

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

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

#135

Сообщение AlexCrane » 02.10.2020{, 13:11}

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

Revenger
Рядовой
Сообщения: 21
Зарегистрирован: 04.02.2016{, 02:22}
Репутация: 0
Откуда: Ставрополь
Контактная информация:

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

#136

Сообщение Revenger » 03.10.2020{, 10:55}

AlexCrane писал(а):
02.10.2020{, 13:11}
через триггер RTrig используют
я просто никак не выучу что за что отвечает, подумал, что он включит как бы с "залипанием" цикл и всё, а нужно "нажал - поехало, отпустил - стало" в данном случае (позже буду пытаться делать задание нужного кол-ва шагов через меню, автоматизация типа но это пока мечты) :smile37:

п.с. в "проекте" ещё остались части из вашего примера, не пугайтесь ) Я просто чтоб было к чему вернуться оставил часть. :smile44:
Вложения
попытка для пилорамы2.flp
(309.28 КБ) 51 скачивание

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#137

Сообщение Davit07 » 03.10.2020{, 16:13}

AlexCrane писал(а):
25.09.2020{, 13:35}
Davit07, Попробуй ШД_DUE_основной_для_1х_ШД_v1.3_(CODE).ubi
используется 6 прерывание
Доброго дня .
Блок работает хорошо , тестирую уже несколько дней . Благодарю за помощь

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

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

#138

Сообщение AlexCrane » 03.10.2020{, 20:28}

Revenger, Так все-таки может лучше довериться шагам, если вы так уверены что 3200 шагов это 1мм, а не держать кнопку на время шагания. Каретка ходит только на 1мм туда сюда или сколько задашь?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Revenger
Рядовой
Сообщения: 21
Зарегистрирован: 04.02.2016{, 02:22}
Репутация: 0
Откуда: Ставрополь
Контактная информация:

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

#139

Сообщение Revenger » 03.10.2020{, 23:06}

AlexCrane, да я готов довериться (это пока цифры от фонаря) просто чуть дольше кнопку подержал и больше мм проезжает, а само по себе конечно будет не 1мм, а стандартно как бы кратно 25мм, что я попытаюсь забить в итоге в меню, просто ручное перемещение наверное нужно когда нужно подогнать каретку рамы до нужного места. Да и меню это пока мечты. :)

CraCk
Лейтенант
Сообщения: 632
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

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

#140

Сообщение CraCk » 06.10.2020{, 23:09}

Привет. Хочу переработать заслонку на дровяном котле. Выбросить сервомотор MG995, который уже начал подклинивать из за "мощных щеток", и поставить шаговик в наличии 28byj-48 5В. Вопрос ПБ поддерживает драйвер ULN2003 и режим мотора униполярный или только биполярный с Н-мостом? Если да, может есть какие то наработки реализации работы двигателя по принципу сервомотра. То есть задал на сервомоторе стать на 20 градусов он установился, скорость перемещения мотора не неактуальна. Предполагаю как минимум нужно обязательно добавлять концевик для отсчета нулевой точки при запуске МК.

Ответить

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