Шаговый двигатель на 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 КБ) 18977 просмотров
      Используемые библиотеки (в блок не интегрированы, скачивать по ссылкам ниже):
      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 КБ) 210 скачиваний
      Бесконечное вращение с реверсом - Шагаем в режиме относительных координат -
      ШД G шагаем относительно.zip
      (51.17 КБ) 204 скачивания
      Крутим мотор туда сюда на определенное количество шагов бесконечно viewtopic.php?t=7245&start=40#p103761[/color]
      Протестировал базовые функции. НЕ удалось достичь высоких скоростей на моем ШД (максимум 2500 при питании 50В Nema23)

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

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

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

      #141

      Сообщение Ardudue » 30.01.2023{, 10:30}

      Dryundel писал(а):
      30.01.2023{, 10:16}
      И что Вам мешает на разных платах разместить только "задания" и отправлять их переменными на отдельную плату с блоком шаговика?
      именно так и решил , делаю прямо сейчас
      Dryundel писал(а):
      30.01.2023{, 10:16}
      Или здесь просто недопонимание принципа работы программы.
      при скудном описании FLP без круглосуточного научного втыка ни у кого нет понимания как она работает :smile44:
      Полагал что последовательность выполнения как к примеру на штатном дисплее. Дублировать можно на всех платах.

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #142

      Сообщение Dryundel » 30.01.2023{, 10:38}

      Ardudue писал(а):
      30.01.2023{, 10:30}
      при скудном описании FLP без круглосуточного научного втыка ни у кого нет понимания как она работает
      имелась в виду исполняемая программа на контроллере.

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

      Отправлено спустя 4 минуты 40 секунд:
      Dryundel писал(а):
      30.01.2023{, 10:38}
      Полагал что последовательность выполнения как к примеру на штатном дисплее.
      Это две большие разницы, как говорят а Одессе.
      Один блок дисплея обслуживает одну строку или даже кусок этой строки. Шаговик не делится на части.
      Кроме того каждый сложный блок в проекте, это приличный кусок кода. Зачем его дублировать.

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

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

      #143

      Сообщение Ardudue » 01.02.2023{, 16:45}

      AlexCrane, три мотора не хотят работать , при подаче питания когда концевики не замкнуты по концевику невыключается не один мотор.
      если хотя бы один концевик замкнуть до подачи питания, то два мотора работают.
      Если не компилировать любую плату с мотором, то два мотора работают.
      Ultrasonic X_Y_Z Start_на позицию_flp738.flp
      (5.71 МБ) 35 скачиваний

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #144

      Сообщение Dryundel » 01.02.2023{, 19:18}

      Ardudue писал(а):
      01.02.2023{, 16:45}
      три мотора не хотят работать , при подаче питания когда концевики не замкнуты по концевику невыключается не один мотор.
      AlexCrane писал(а):
      24.03.2021{, 22:49}
      В работе 3 ШД Период прерывания 90 мкс, скорость ~11000 шагов/сек (период следования шагов уперся в 90 мкс). При уменьшении периода на основной цикл не остается времени (нет реакции на нажатие кнопок).
      И это еще сильно оптимистично, исходя из заявленных возможностей автора библиотеки. :)

      fsergei70
      Капитан
      Сообщения: 786
      Зарегистрирован: 17.11.2015{, 20:36}
      Репутация: 54
      Имя: Сергей

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

      #145

      Сообщение fsergei70 » 01.02.2023{, 19:26}

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

      Отправлено спустя 7 минут 17 секунд:
      в GRBL конечно куча вкладок и где там кусок кода управления двигателями еще тот вопрос, но как то же оно работает одновременно.

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #146

      Сообщение Dryundel » 01.02.2023{, 19:38}

      В GRBL те же максимальные 30 кГц. Выше головы не прыгнешь. Дуня больше не потянет.

      Отправлено спустя 7 минут 51 секунду:
      Что вы вообще хотите от этой игрушки. Даже недорогие специализированные контроллеры типа NC Studio выдают максимум 47 кГц на канал.

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

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

      #147

      Сообщение Ardudue » 06.02.2023{, 08:03}

      AlexCrane писал(а):
      24.03.2021{, 22:49}
      _|_ CurrentPosition - Текущая позиция мотора
      почему обозначение "_|_ - Подача сигнала через RTrig на один цикл", если на вход подаются данные ? Ошибка?
      AlexCrane писал(а):
      24.03.2021{, 22:49}
      _|_ setCurrentPosition - Установка текущей позиции мотора, через RTrig
      что это значит? Если на входе CurrentPosition пишем 0, то от этой позиции начнет считать шаги которые на входе Steps?

      Axel
      Рядовой
      Сообщения: 25
      Зарегистрирован: 08.05.2018{, 12:25}
      Репутация: 0

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

      #148

      Сообщение Axel » 26.02.2023{, 18:03}

      Поставил данный блок в давно существующий проект. Двигатель запустился сразу и работает очень хорошо. Гораздо плавнее, чем со старым блоком. Очень порадовало плавное торможение и разгон. Но появились проблемы. Двигатель управляется через сенсорный экран Nextion и с ИК Пульта. Половина "кнопок" на экране перестало работать, а с библиотекой ИК пульта IRremote выдает ошибку при прошивке. Может кто подскажет в каком направлении копать?

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

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

      #149

      Сообщение AlexCrane » 07.03.2023{, 12:45}

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

      Axel
      Рядовой
      Сообщения: 25
      Зарегистрирован: 08.05.2018{, 12:25}
      Репутация: 0

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

      #150

      Сообщение Axel » 07.03.2023{, 13:29}

      AlexCrane писал(а):
      07.03.2023{, 12:45}
      Axel, Конфликт по прерываниям.
      AlexCrane, спасибо за ответ! Есть какие-то способы решить этот конфликт?

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #151

      Сообщение Dryundel » 07.03.2023{, 15:09}

      Axel писал(а):
      07.03.2023{, 13:29}
      Есть какие-то способы решить этот конфликт?
      Axel, Вы даже не написали какой контроллер.
      Попробуйте следующее:

      Откройте файл ideV8\portable\sketchbook\libraries\IRremote\src\private\IRTimer.hpp текстовым редактором
      В нем есть закомментированные дефайны таймеров.
      Типа:

      Код: Выделить всё

      // Macros for enabling timers for development
      //#define SEND_PWM_BY_TIMER
      //#define IR_USE_AVR_TIMER1
      //#define IR_USE_AVR_TIMER2
      .....
      Выберите подходящий и раскомментируйте строку, после чего сохраните открытый файл.

      Отпишитесь о результате.

      Axel
      Рядовой
      Сообщения: 25
      Зарегистрирован: 08.05.2018{, 12:25}
      Репутация: 0

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

      #152

      Сообщение Axel » 12.03.2023{, 15:34}

      Dryundel писал(а):
      07.03.2023{, 15:09}
      Вы даже не написали какой контроллер.
      Контроллер Arduino Uno

      С таймерами пока не получилось поэкспериментировать, т.к. все управление осуществляется через экран Nextion, а при подключении штатного блока IRsend экран Nextion становится неактивным. При отключении блока IRsend экран Nextion начинает работать, можно запустить двигатель, но другие настройки работают некорректно. Думаю, что сначала надо разобраться с конфликтом между блоками Nextion и GyverStepper, а затем переходить к IRsend. Порекомендовали заменить штатный блок Nextion, на блок от ecoins.

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #153

      Сообщение Dryundel » 12.03.2023{, 16:09}

      Axel писал(а):
      12.03.2023{, 15:34}
      Думаю, что сначала надо разобраться с конфликтом между блоками Nextion и GyverStepper
      А какие там могут быть конфликты?
      У Вас конфликт использования таймера вероятней всего.
      Выкиньте из проекта блок IRsend и проверьте управление простыми кнопками. Если заработают Nextion и GyverStepper, значит проблема в IRsend - изменяйте ему таймер.

      Отправлено спустя 6 минут 47 секунд:
      Ну и да, вам ecoins ответил по штатному блоку Nextion.
      Ни кто же не знает что Вы используете. Скрываете всё. :)
      Я предположил, что все-таки в вашем проекте блок от ecoins. Он нормально работает. А со штатным блоком Nextion - ШД не будет нормально крутить, я так думаю.

      Axel
      Рядовой
      Сообщения: 25
      Зарегистрирован: 08.05.2018{, 12:25}
      Репутация: 0

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

      #154

      Сообщение Axel » 12.03.2023{, 17:19}

      Dryundel писал(а):
      12.03.2023{, 16:15}
      А какие там могут быть конфликты?
      У Вас конфликт использования таймера вероятней всего.
      Выкиньте из проекта блок IRsend и проверьте управление простыми кнопками. Если заработают Nextion и GyverStepper, значит проблема в IRsend - изменяйте ему таймер.
      Я плату с IRsend не компилировал. Nextion и GyverStepper (без IRsend) совместно работают. Двигатель даже очень хорошо, но управление частично слетело. Например, какое значение DIR ни поставь, крутит только в одну сторону. Поэтому и думал, что можно какое-то простое решение найти. Nextion от ecoins глянул, что то пугает он меня своей сложностью. Фактически с нуля все придется переделывать.

      Аватара пользователя
      Dryundel
      Полковник
      Сообщения: 2401
      Зарегистрирован: 22.05.2017{, 23:15}
      Репутация: 783
      Откуда: Ярославль
      Имя: Андрей
      Контактная информация:

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

      #155

      Сообщение Dryundel » 12.03.2023{, 19:41}

      Axel писал(а):
      12.03.2023{, 17:19}
      Nextion от ecoins глянул, что то пугает он меня своей сложностью. Фактически с нуля все придется переделывать.
      Ну что Вам сказать...
      Эко-логия требует жертв. :)
      Axel писал(а):
      26.02.2023{, 18:03}
      Поставил данный блок в давно существующий проект.
      Гораздо плавнее, чем со старым блоком.
      Если у Вас до этого был другой блок, наверное надо смотреть логику управления. Возможно что то по другому.
      Может быть триггеры какие лишние или не хватает наоборот.
      Не должно там быть конфликтов, вроде.

      Аватара пользователя
      montirovka
      Сержант
      Сообщения: 205
      Зарегистрирован: 15.02.2021{, 16:16}
      Репутация: 42
      Откуда: Геленджик
      Имя: Сергей

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

      #156

      Сообщение montirovka » 07.04.2023{, 19:00}

      Подскажите как в Шаговом двигателе на GyverStepper в режиме драйвер dir-step + pin enable выставить при включении высокий уровень на pin enable. При включении на нем низкий уровень - включен "тормоз". Шаговый двигатель греется. Стоит шагнуть в любую сторону - и все работает. После шагов на pin enable высокий уровень. Стоит выключить питание и все. Пока не шагнешь греется ШД.
      Вложения
      Upr_antenna_угол.flp
      (4.13 МБ) 20 скачиваний
      Люблю учиться на чужих ошибках.

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

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

      #157

      Сообщение AlexCrane » 07.04.2023{, 20:47}

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

      nickass
      Рядовой
      Сообщения: 61
      Зарегистрирован: 01.05.2022{, 14:13}
      Репутация: 12
      Откуда: Киров
      Имя: Николай

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

      #158

      Сообщение nickass » 07.04.2023{, 22:35}

      AlexCrane писал(а):
      25.03.2021{, 19:41}
      но драйвер вроде не из плохих
      Лидшайны хорошие драйвера. У 556 и 856 серии есть COM порт, через который можно подцепить их к компу и с помощью соответствующего софта произвести настройки драйвера. Настроек не особо много, но много и не нужно. Главное выловить резонансы на разных оборотах. После настройки шаговики работают очень здорово, без лишних скрипов и писков. Давно занимаюсь ЧПУ строением и Лидшайны у меня в приоритете по цене качеству.

      Аватара пользователя
      montirovka
      Сержант
      Сообщения: 205
      Зарегистрирован: 15.02.2021{, 16:16}
      Репутация: 42
      Откуда: Геленджик
      Имя: Сергей

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

      #159

      Сообщение montirovka » 08.04.2023{, 08:04}

      AlexCrane писал(а):
      07.04.2023{, 20:47}
      montirovka, Так тормоз совсем не нужен? Ну так управляйте пином enable с
      После первого шага он и не работает. При шагании на pin enable низкий уровень, остановка - высокий. А как включить при старте платы высокий уровень на pin enable ?
      Драйвер TB6560.
      Вложения
      упр_антенной.mp4
      (4.3 МБ) 24 скачивания
      Люблю учиться на чужих ошибках.

      Аватара пользователя
      montirovka
      Сержант
      Сообщения: 205
      Зарегистрирован: 15.02.2021{, 16:16}
      Репутация: 42
      Откуда: Геленджик
      Имя: Сергей

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

      #160

      Сообщение montirovka » 15.04.2023{, 09:50}

      С "тормозом" разобрался. Пользовательский блок прописывает 7 пину En высокий уровень при подаче питания. Теперь в случае отключения питания и подачи питания заново, ШД будет обесточен до тех пор пока не шагнуть им. Это очень актуально дря драйверов, которые не поддерживают снижение питания для удержания ШД.
      Вложения
      Upr_antenna_угол.flp
      (4.15 МБ) 23 скачивания
      Люблю учиться на чужих ошибках.

      Ответить

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