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

Версия не ниже FLP7.3.4

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

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

#1

Сообщение AlexCrane » 24.03.2021{, 22:49}

Блок для управления ШД на основе библиотек Gyver'а
    ШД ГайверЛиб.png
    ШД ГайверЛиб.png (40.2 КБ) 19210 просмотров
      Используемые библиотеки (в блок не интегрированы, скачивать по ссылкам ниже):
      GyverStepper (https://alexgyver.ru/gyverstepper/)
      GyverTimers (https://alexgyver.ru/gyvertimers/)

      В блоке реализована поддержка всех функций библиотеки gyverstepper!

      Особенности использования данных блоков:Показать
      Первым на холст программирования нужно вытаскивать блок ШД AlexCrane GyverLIB и лишь затем блок ШД Конечный.
      Если вытащили еще один блок ШД AlexCrane GyverLIB, то удалите блок ШД Конечный и вытащите его заново.
      Если удалите самый последний блок ШД AlexCrane GyverLIB то удалите и блок ШД Конечный и начните заново.


      Возможно автор программы Сергей что-то подправил, но сейчас компилируется нормально и без ШД блок конечный... Пока оставил...
      Блоки бета-версия от 17.06.2021: - исправлена ошибка изменения скорости в режиме постоянного вращения на лету

      Обозначения:Показать
      _|¯ - постоянная подача true, отработка по переднему фронту
      _|_ - Подача сигнала через RTrig на один цикл
      Входы:Показать
      _|_ EnableMotor - Подать питание на мотор, через RTrig
      _|_ DisableMotor - Снять питание с мотора, через RTrig
      Endless_Rotation_Speed - Скорость постоянного вращения, шаг/сек
      Endless_Rotation_Smooth - Режим ускорения для бесконечного вращения На данный момент используется вход Acceleration
      _|_ Start_Endless_Rotation - Пуск постоянного вращения, через RTrig
      _|_ Stop - Плавная остановка ШД, через RTrig
      _|_ Brake - Резкая остановка ШД, через RTrig
      _|_ Reset - Резкая остановка и сброс координат в 0, через RTrig
      MaxSpeed - Максимальная скорость шаг/сек, указывать обязательно
      Acceleration - Ускорение в шаг/сек за сек, указывать обязательно
      Steps - Установка шагов
      _|_ Start_Steps - Пуск шагов, через RTrig
      _|¯ Absolute - Режим абсолютных координат true, Режим относительных координат - false
      _|¯ CCW - Направление вращения
      _|_ CurrentPosition - Текущая позиция мотора
      _|_ setCurrentPosition - Установка текущей позиции мотора, через RTrig
      _|¯ AutoPower - Управление питанием
      _|_ getSpeed - Просмотр целевой скорости мотора на выходе curSpeed, через RTrig
      Выходы:Показать
      _|¯ Ready - На выходе высокий уровень, если мотор стоит или остановился
      Position - На выходе текущая позиция в шагах
      curSpeed - На выходе текущая целевая скорость мотора
      Параметры блоки описаны внутри блока.

      Ненужные режимы, входы отключаются.
      Выявленные недостатки библиотеки gyverstepper: пока не проверено…Показать
      1. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop, то мотор резко останавливается и продолжает медленно шагать! Как решение использовать резкую остановку break или reset. Все вопросы к Гайверу (в тестовом примере с его сайта у меня наблюдаются такие-же глюки).
      2. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop и тут же включить опять бесконечное вращение то мотор ускоряется не с нуля а с момента остановки (может стартануть вообще без ускорения)... Решение см. п.1.
      Примеры (внимание в примерах используются и старые и новые блоки…Показать
      Бесконечное вращение -
      ШД G бесконечное вращение.zip
      (90.63 КБ) 211 скачиваний
      Бесконечное вращение с реверсом - Шагаем в режиме относительных координат -
      ШД G шагаем относительно.zip
      (51.17 КБ) 205 скачиваний
      Крутим мотор туда сюда на определенное количество шагов бесконечно viewtopic.php?t=7245&start=40#p103761[/color]
      Протестировал базовые функции. НЕ удалось достичь высоких скоростей на моем ШД (максимум 2500 при питании 50В Nema23)

      ТРЕБУЕТСЯ ТЕСТИРОВАНИЕ ВСЕХ РЕЖИМОВ....
      Можете отблагодарить на кофе, ну или хотя-бы лайкните пост.
      Последний раз редактировалось AlexCrane 01.07.2021{, 23:00}, всего редактировалось 11 раз.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

      #181

      Сообщение LForest » 13.06.2023{, 21:01}

      Или в настройках блока тупанул? Я правильно выставил в нужном месте?
      Вложения
      Скриншот 13-06-2023 210032.jpg

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

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

      #182

      Сообщение AlexCrane » 14.06.2023{, 07:30}

      LForest, Можно период прерываний до 25 убавить, но сдается мне ШД уже не тянет.
      Пример работы с блоками ШД можно посмотреть здесь viewtopic.php?p=80990#p80990 Test 04
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      MihailK
      Сержант
      Сообщения: 104
      Зарегистрирован: 05.12.2020{, 23:42}
      Репутация: 11
      Имя: Михаил

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

      #183

      Сообщение MihailK » 14.06.2023{, 14:59}

      Rovki писал(а):
      12.06.2023{, 19:02}
      Я про такие и аналогичные https://aliexpress.ru/item/100500235780 ... 4aa60Zna5L
      И я про них. Позволяет подключить 5 двигателей (5 осей) http://shagovik.ru/index.php?route=info ... icles_id=2

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

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

      #184

      Сообщение LForest » 14.06.2023{, 15:46}

      AlexCrane писал(а):
      14.06.2023{, 07:30}
      Можно период прерываний до 25 убавить, но сдается мне ШД уже не тянет.
      Не, 28 оказался предел. Ниже просто не запускается.
      Может и не тянет уже, от прежнего станка, все таки. Попробовал еще один от него же, который на оси Х был и гонялся несоизмеримо больше - агалогично. Фиг с ней, со скоростью. Пусть та будет, которой добился.
      Как, все таки, сделать одиночный цикл туда-сюда без концевика на определенное количество шагов в одну сторону с ускорением и торможением, после чего так же в обратную с остановкой? Неужели никто не может в этом помочь? Блин, да даже с концевиком. Придумаю какой нить пружинный под торможение головы.
      Я реально никак не пойму, как это сделать, учитывая то, что выходы блока считываются в конце всей программы. Я про Ready & Position
      Последний раз редактировалось LForest 14.06.2023{, 18:28}, всего редактировалось 3 раза.

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

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

      #185

      Сообщение LForest » 14.06.2023{, 18:20}


      Что-то у меня не то происходит.
      Извиняюсь за оговорку в видео: - "...по этому использую кнопки". Устал уже адски из-за этого геморроя со станком.
      Может я блок не правильно настроил? После нажатия на "Стоп" шаговик продолжает медленно крутиться, причем в первый раз почем-то в обратную сторону, а во втором в ту же. А что происходит при повторном нажатии на "Стоп" вообще слов нет.
      Плюс остановка странная. Как буд-то двиг ловит клина. Кстати даже на этой скорости он и во время рабочего кручения в 2 из 5 запусков клинит. Хотя еще вчера на 8000 работал.

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

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

      #186

      Сообщение LForest » 14.06.2023{, 18:55}

      Понял. Я DIR на PWM пин цепанул. Оставлю видео для демонстрации того, чтобы происходит в таком случае.

      Отправлено спустя 4 часа 8 минут 22 секунды:
      Решил проверить на старом блоке. Тот же шаговик на том же драйвере, запитанном тем же БП на 18 000 работает нормально без клинов (на картинке внизу принтскрин параметров блока). На этом блоке клина ловит на 6000. Не могу понять, почему так. Жаль, что на старом нет плавного пуска и плавного старта для постоянного шагания.

      Помогите, пожалуйста, понять почему так с этим блоком на Gyver. Хрен с ним уже, с туда-сюда. Придумал, как использовать станок без этого разового пробега в обе стороны. Теперь просто надо раскрутить с ускорением и затормозить с замедлением по концевикам. И все!
      Кстати я пробовал в настройках блока ставить вместо Gyver алгоритм Accel. Так же клинит выше 6000. Так же пробовал возвращать на 100 период прерывания. Без толку.
      Учитывая то, что двигатель и драйвер работают нормально, что показал тест на старом блоке, явно что-то не то я делаю в этом.

      Отправлено спустя 1 час 2 минуты 19 секунд:
      Посмотрите, плз. Очень похоже на то, что что-то не то с плавной остановкой. Это при использовании блока GyverStepper
      Вложения
      Скриншот 14-06-2023 225441.jpg
      Скриншот 14-06-2023 225441.jpg (20.58 КБ) 921 просмотр
      Последний раз редактировалось LForest 15.06.2023{, 19:09}, всего редактировалось 2 раза.

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

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

      #187

      Сообщение AlexCrane » 15.06.2023{, 07:26}

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

      Аватара пользователя
      Rovki
      Полковник
      Сообщения: 4877
      Зарегистрирован: 22.04.2016{, 17:25}
      Репутация: 268
      Откуда: Чехов
      Имя: Анатолий
      Контактная информация:

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

      #188

      Сообщение Rovki » 15.06.2023{, 20:48}

      MihailK писал(а):
      14.06.2023{, 14:59}
      Rovki писал(а):
      12.06.2023{, 19:02}
      Я про такие и аналогичные https://aliexpress.ru/item/100500235780 ... 4aa60Zna5L
      И я про них. Позволяет подключить 5 двигателей (5 осей) http://shagovik.ru/index.php?route=info ... icles_id=2
      Да нет у меня LPT порта и подключение к ПК не предполагается
      Электронщик до мозга костей и не только

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

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

      #189

      Сообщение LForest » 15.06.2023{, 21:23}

      AlexCrane писал(а):
      15.06.2023{, 07:26}
      Слишком большие ускорения ставишь...

      У меня особо места нету на разгон и торможение. Общее расстояние хода головы 2,5 м, из которых 2,3 рабочая область лампы, на которой голова должна двигаться с равномерной максимальной скоростью. То есть на разгон и торможение без мультипликатора на микрошаге 1/2 есть только 2 оборота (800 шагов). Да и вообще решил перестраховаться и поставил тот, который нормально работает (на блоке "ШагДвиг_mod (step/dir) INT_v2"). Я вообще именно с него начал эксперименты свои, а потом увидел этот с большим функционалом и наткнулся на описанные проблемы.
      Кстати, на том примере с клином на торможении я ускорение на 3000 ставил. На этом блоке "Шаговый двигатель на GyverStepper".

      Вот сейчас еще раз для наглядности. Кстати двигатель вибрирует прям жестко. (грохот в конце, это попытки остановить запись из-за подвисона смартфона =)


      А это на том блоке "ШагДвиг_mod (step/dir) INT_v2". Скорость та же и двигатель работает спокойно, не дрыгаясь.


      И еще. Благодарю за подробно расписанный пример, но я увидел, что в нем разбито на 11 плат. Я думал, что добавляя новую плату в проект можно настраивать передачу данных по I2C между реальными отдельными платами, а тут получается таким образом можно в одной реализовать поэтапность?

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

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

      #190

      Сообщение AlexCrane » 15.06.2023{, 21:46}

      LForest, Как еще один вариант попробуй увеличить время шага (по умолчанию стоит 4 мкс) может для твоего драйвера это мало и он срывается. В блоке из второго видео время шага стоит 10.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

      #191

      Сообщение LForest » 15.06.2023{, 23:36}

      Блин... Я сбился со счета, сколько вариантов перепробовал, меняя значения времени шага и периода прерываний. Начал с 5 в времени шага и ставил разные значения прерывании, начиная с 30 плюсуя 1. Потом уже утомился и начал плюсовать +10. Ни разу не было без клина (в некоторых случаях после 3-4 прогонов на определенное количество шагов). Причем полного клина, когда приходится перезапускать драйвер, ибо он просто перестает отвечать. Причем это не во время разгона или торможения, а во время рабочего кручения на максимальной скорости, которая была 6000.
      На "время шага = 10" тоже клин.

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

      ggen4ik
      Рядовой
      Сообщения: 22
      Зарегистрирован: 09.02.2022{, 17:34}
      Репутация: 1
      Имя: Evgeny

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

      #192

      Сообщение ggen4ik » 18.06.2023{, 09:46}

      Вероятнее всего вы не сможете добиться скорости ШД больше 1000 об/мин. По крайней мере я пробовал эти блоки на esp32 и nano, и при небольшой нагрузке на скорости 900 об/мин двигатель встаёт (можно остановить руками) (NEMA 34 + Дравйвер Ледшайн step/dir). Вероятнее всего что всё таки не хватает производительности ардуинке, потому что при управлении со специализированного контроллера ШД стабильно работает на 1000 об/мин даже под нагрузкой.

      Отправлено спустя 22 минуты 58 секунд:
      Для оси станка возможно лучше использовать автономный контроллер, что-то типа SMSD‑822 или KH-01 с выходом 200 кГц. Либо пробовать переходить на STM32, как раз ecoin его активно начинают внедрять в flprog.

      Аватара пользователя
      Sevast
      Сержант
      Сообщения: 145
      Зарегистрирован: 21.06.2017{, 15:57}
      Репутация: 5

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

      #193

      Сообщение Sevast » 18.06.2023{, 12:50}

      Несколько лет назад я делал ЧПУ на драйверах DM542 и тоже намучился проблемой нестабильной работы. Оказалась проблема была в самих драйверах. В них стоят по входу оптопары, через резисторы если не ошибаюсь на 570 Ом. С НАНО выходит около 4.5В и не хватало напряжения для стабильной работы оптопар драйвера. Заменил резисторы на 200 Ом и все стало как надо.

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

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

      #194

      Сообщение LForest » 18.06.2023{, 14:12}

      Благодарю за совет. Вот как раз хотел спросить Alex-а какой у него драйвер, ибо тоже пришел к выводу, что мой DM542 странный. Вот только реально не понятно, почему на блоке ШагДвиг_mod (step/dir) INT_v2 работа шаговика нормальная. Крутится шустро и не клинит вообще, в том числе под нагрузкой.
      Я так же подумывал реализовать движение головы контроллером SPC 02, ибо у него как раз есть тот алгоритм, который мне и нужен. Скорость устанавливается потенциометром, а ускорение программируется как-то, но так и не смог его найти в продаже. Даже на Али.

      Насчет DM542.Так понимаю вы прямо в драйвере заменили резики, может мне тоже так попробовать. И, если не сложно, посоветуйте драйвер, с которым на модуле GyverStepper проблем не будет. Уж очень вкусный у него функционал.

      Еще вы написали про STM32. На сколько я понял, это новое поколение контроллеров типа Ардуино, тока на много шустрее и стабильнее?

      Аватара пользователя
      Sevast
      Сержант
      Сообщения: 145
      Зарегистрирован: 21.06.2017{, 15:57}
      Репутация: 5

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

      #195

      Сообщение Sevast » 18.06.2023{, 17:16}

      При работе с шаговыми моторами мне тоже нужно было иметь плавный разгон и торможение. Много времени потерял пробую всякие навороченные блоки. Остановился на блоке генератора для ШД, добавил разгон, торможение и использую во всех проектах. Просто, стабильно и надежно...
      Попробуйте мой вариант, может это то, что вам надо...
      Вложения
      Step motor.flp
      (456.34 КБ) 53 скачивания

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

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

      #196

      Сообщение LForest » 20.06.2023{, 17:20}

      Sevast писал(а):
      18.06.2023{, 17:16}
      Попробуйте мой вариант, может это то, что вам надо...
      Благодарю, очень полезно для изучения. Попробую.
      AlexCrane писал(а):
      15.06.2023{, 21:46}
      PS скажите, можно сюда задавать вопросы по блоку "ШагДвиг_mod (step/dir) INT_v2"?

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

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

      #197

      Сообщение AlexCrane » 20.06.2023{, 19:46}

      LForest писал(а):
      20.06.2023{, 17:20}
      PS скажите, можно сюда задавать вопросы по блоку "ШагДвиг_mod (step/dir) INT_v2"?
      Я уже забыл про этот блок (в архиве так сказать). Задавай.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

      #198

      Сообщение LForest » 20.06.2023{, 20:43}

      Я на этом блоке реализовал работу на начальном этапе. Пока этого хватит для тестирования станка. На нем все стабильно работает без клинов и шаговик очень шустро крутится, вот только проблемка возникла. Почему-то у меня не срабатывает остановка принудительная по датчику (он у меня световой, по этому инверсия для 1 на выходе не нужна). Вроде ж правильно все или нет?
      Вообще не реагирует на концевик как на работе по кол-ву шагов через кнопку "Пуск цикла", так и на простом равномерном включении по кнопкам "Движение головы...".
      Пробовал как через R-триггер концевик, так и напрямую.
      Что интересно в ролике на канале "Ключ к Arduino" все намана с остановкой =)
      Вложения
      Скриншот 20-06-2023 173433.jpg

      Ardudue
      Лейтенант
      Сообщения: 425
      Зарегистрирован: 13.04.2020{, 18:22}
      Репутация: 24
      Имя: Антон

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

      #199

      Сообщение Ardudue » 01.07.2023{, 19:32}

      AlexCrane писал(а):
      15.06.2023{, 07:26}
      Станок туда сюда с поиском концевика2.flp
      Стоит ПБ "ШД AlexCrane GyverStepper v2.1a" - с какой версией библиотеки работает ?
      ПБ "ШД Конечный" теперь не нужен?

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

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

      #200

      Сообщение AlexCrane » 01.07.2023{, 20:26}

      Ardudue, Библиотеки стоит ставить последние, по версии 2.1а уже не помню по конечному, в версии 2.3а не нужен https://flprog.pro/index.php?/files/fil ... erstepper/

      Но если много ШД не нужно рекомендую использовать блоки на библиотеке FastAccelStepper https://flprog.pro/index.php?/files/fil ... elstepper/ Работает намного лучше, плавнее, скорости больше. Есть поддержка ESP32 (не тестил)
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Ответить

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