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

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

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

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

#141

Сообщение AlexCrane » 07.10.2020{, 09:52}

CraCk, Библиотека поддерживает, попробуй
ШД1_v1.3_UNI_(CODE).ubi
(129.62 КБ) 57 скачиваний
CraCk писал(а):
06.10.2020{, 23:09}
Если да, может есть какие то наработки реализации работы двигателя по принципу сервомотра. То есть задал на сервомоторе стать на 20 градусов он установился
С шаговым проще, 1 шаг ШД это строго определенный угол поворота, легко считается

Пример:
ШД как серва.flp
(248.49 КБ) 110 скачиваний
Как пример без поиска концевика, как искать концевик было полно примеров
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#142

Сообщение viktorz1 » 08.10.2020{, 00:09}

Подскажите пожалуйста как добавить второй мотор. С одним блоком всё работает, а с двумя стоят, дёргаются. В программе используется основной блок для двух моторов и блоки ШД1 и ШД2.
Вложения
станок с рег. скор.flp
(443.97 КБ) 66 скачиваний
Последний раз редактировалось viktorz1 08.10.2020{, 20:08}, всего редактировалось 1 раз.

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

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

#143

Сообщение AlexCrane » 08.10.2020{, 06:38}

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

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

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

#144

Сообщение Revenger » 08.10.2020{, 21:27}

Ни у кого небыло такого, как у меня viewtopic.php?t=5919&start=120#p94398 ? (При кратковременном нажатии кнопки для движения на заданное кол-во шагов с ускорением мотор движется еле-еле, не набирает скорость).

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

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

#145

Сообщение AlexCrane » 08.10.2020{, 21:31}

viktorz1, Установи параметры MaxSpeed и Acceleration. Это обязательные параметры...

Отправлено спустя 2 минуты 31 секунду:
Revenger, Установленную Вами максимальную скорость ардуинка не потянет, вход EnSteps обязательно использовать через Rtrig, в описании это написано
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#146

Сообщение Revenger » 08.10.2020{, 21:47}

AlexCrane писал(а):
08.10.2020{, 21:34}
использовать через Rtrig
а нажатием кнопки (не отпуская, пока держу) оно будет работать? Просто со стола убрал макетку, прям сейчас проверить не могу :smile37:

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

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

#147

Сообщение AlexCrane » 08.10.2020{, 22:04}

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

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

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

#148

Сообщение viktorz1 » 08.10.2020{, 22:28}

AlexCrane писал(а):
08.10.2020{, 21:34}
viktorz1, Установи параметры MaxSpeed и Acceleration. Это обязательные параметры...
Спасибо большое. Вот я лапухнулся. Пробы с одним блоком параметры то я проставил, а для двух совсем упустил. Скорость почти вытягивает, только не с места конечно

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

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

#149

Сообщение AlexCrane » 09.10.2020{, 19:06}

Многие воспользовались данным блоком, прошу, кому не жалко скинуть в ЛС примеры с кратким описанием, выложу во втором посту примеры для новичков для изучения и повторения.

Просто вот уже десять месяцев никак не могу разобрать макетку с ШД...... :shok:

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

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

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

#150

Сообщение CraCk » 09.10.2020{, 22:22}

AlexCrane писал(а):
07.10.2020{, 09:52}
Пример:
ШД как серва.flp
(248.49 КБ) 12 скачиваний
Как пример без поиска концевика, как искать концевик было полно примеров
На какие пины нужно подключить мотор 28byj-48? У меня на моторе IN1,IN2,IN3,IN4 в блоке A1,B1,A2,B2. Подключил так
СпойлерПоказать
in.jpg
in.jpg (10.74 КБ) 1318 просмотров
Еще пожалуйста вложите в блоки актуальные версии библиотек на которых у вас делалась отладка. А то могут новые версии либ с кодом потом конфликтировать.
СпойлерПоказать
Снимок.JPG
Какие то версии библиотек напихал вручную но пока не работает (мотор молчит). Буду еще разбираться, пока бегу на роботу.
Конфигурация пока такая:
СпойлерПоказать
Снимок2.JPG

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

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

#151

Сообщение Revenger » 09.10.2020{, 22:58}

AlexCrane писал(а):
08.10.2020{, 22:04}
Нет, RTrig не пропустит
да, проверил - не получается. А нужно или "подгонять по мм" или ехать пока "давлю" кнопку.
AlexCrane писал(а):
08.10.2020{, 22:04}
можно реализовать как на 3Д принтерах
ну это энкодером? У меня на марлине принтер, там от 1 до 10мм "цену деления" нужно задавать, потом уже крутим/едем, а кнопкой как бы... на энкодер у меня ума не хватит пока наверное. Да и всё же техника "кондовая", металл, сварка, вряд ли "нежная" начинка в виде энкодеров/дисплеев проживёт долго. Хотя и не жалко проэкспериментировать.

Отправлено спустя 3 минуты 1 секунду:
CraCk писал(а):
09.10.2020{, 22:22}
У меня на моторе IN1,IN2,IN3,IN4
попробуйте поменять местами ин2-ин4, там вроде "перекрёстно" коннектится, но могу ошибаться, давно этот моторчик подключал :smile37:

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

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

#152

Сообщение AlexCrane » 10.10.2020{, 06:22}

CraCk, Библиотека для DUE случайно туда затесалась как-то...
Исправил
ШД как серва_испр.flp
(190.96 КБ) 91 скачивание
Библиотеки положил в первый пост.
Шагового такого нет, просто поставил как допускает библиотека. Тестирование за Вами.

Схема подключения
28byj-48_ULN.jpg
28byj-48_ULN.jpg (7.31 КБ) 1283 просмотра
Хотя это может только мои предположения нужны тесты......
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#153

Сообщение AlexCrane » 10.10.2020{, 10:09}

Revenger, Вот набросал примерчик на скорую руку, не проверял
Тест ШД пилорама.flp
(790.75 КБ) 82 скачивания
1. Сначала нужно запустить поиск концевика (пока вручную)
2. При сработке концевика обнулятся шаги
3. При нажатии кнопок вверх/вниз будем двигать ШД по 1мм (сколько шагов на мм нужно задать) используя текущее ускорение, двигаться будет импульсами
4. При нажатии кнопки Установка 25мм ШД отмотает в 25мм
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#154

Сообщение viktorz1 » 10.10.2020{, 19:06}

А можно в процессе работы блока менять значение MaxSpeed? Извиняйте если уже об этом было сказано, мозги кипят, всё в кучу смешалось, одно вошло, другое вылетело. Мне нужно для отладки станочка запускать его на маленькой скорости и если всё нормально то увеличить обороты.
И второй вопрос немного не по теме, но может всё же кто и подскажет идею. Суть в том, что есть два мотора, один навивает провод, второй протягивает уже навитый жгут. Проблема в согласовании скоростей моторов. Сначала думал, что ерунда, подгоню методом тыка, но как то это неправильно. Вторая проблема, это последующее ускорение навивки с сохранением коэффициента разности скоростей обоих моторов.
Буду признателен за подсказку.

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

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

#155

Сообщение AlexCrane » 10.10.2020{, 20:19}

viktorz1, Если бы нарисовали свою механику, думаю местные гуру помогут... а то и предложат лучший вариант.
viktorz1 писал(а):
10.10.2020{, 19:06}
А можно в процессе работы блока менять значение MaxSpeed
Если честно, то не пробовал. А что мешает Вам попробовать и отписаться!
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#156

Сообщение leons » 10.10.2020{, 22:36}

viktorz1 писал(а):
10.10.2020{, 19:06}
А можно в процессе работы блока менять значение MaxSpeed?
можно

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

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

#157

Сообщение viktorz1 » 10.10.2020{, 22:37}

AlexCrane писал(а):
10.10.2020{, 20:19}
Если честно, то не пробовал. А что мешает Вам попробовать и отписаться!
Да, действительно. В общем работает, можно менять значения в процессе работы, но ускорение мешается. Если повысить значение ускорения, то старт получается более резким и теряется смысл в такой регулировке. Но в каком нибудь проекте как вариант вполне приемлем.
А по поводу механики станочка, так там всё предельно просто. Мотор крутит шайбу на которой установлены катушки с проводом выведенным через центральное отверстие. При вращении провода скручиваются по спирали (типа тросика). Второй мотор наматывает уже готовый жгут на катушку.

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

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

#158

Сообщение leons » 10.10.2020{, 22:41}

viktorz1 писал(а):
10.10.2020{, 19:06}
Буду признателен за подсказку.
посмотрите мой проект в шапке темы Примеры предоставленные участниками форума: там работа одного мотора вправо пауза в лево и так по кругу пока не остановиш подойдёт для укладчика вдоль катушки , вам нужно только добавить блок для намотки провода

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

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

#159

Сообщение ingener » 11.10.2020{, 01:18}

AlexCrane,
Данные блоки управления ШД являются. по-видимому. наиболее функционально полными и законченными.
Только один вопрос - ограниченная частота - не более 4кГц. Приходится использовать делитель 1/1 или 1/2 на драйверах. что приводит к шумной работе моторов.
Возможно ли в качестве опции сделать выход сигнала step с блока в виде меандра? Тогда можно будет добавить несложную внешнюю схемку удвоения частоты (формирующую импульс и по фронту. и по спаду входного сигнала).

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

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

#160

Сообщение AlexCrane » 11.10.2020{, 19:37}

ingener, На DUE можно получить 16000 шагов в секунду при использовании ускорений и 40000 ш/с при простом вращении... На расчеты ускорений требуются ресурсы...

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

Ответить

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