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

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

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

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

#1

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

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

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

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


      Блоки бета-версия:
      ШД_AlexCrane_GyverLIB_(Code_-_Professional).ubi
      (1.5 МБ) 17 скачиваний
      Входы:
      EnableMotor - Подать питание на мотор, через RTrig
      DisableMotor - Снять питание с мотора, через RTrig
      Endless_Rotation_Speed - Скорость постоянного вращения, шаг/сек
      Endless_Rotation_Smooth - Режим ускорения для бесконечного вращения
      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 - Управление питанием
      b]getSpeed[/b] - Просмотр текущей скорости мотора на выходе curSpeed, через RTrig

      Параметры блоки описаны внутри блока.

      Ненужные режимы, входы отключаются.

      Выявленные недостатки библиотеки gyverstepper:
      1. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop, то мотор резко останавливается и продолжает медленно шагать! Как решение использовать резкую остановку break или reset. Все вопросы к Гайверу (в тестовом примере с его сайта у меня наблюдаются такие-же глюки).
      2. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop и тут же включить опять бесконечное вращение то мотор ускоряется не с нуля а с момента остановки (может стартануть вообще без ускорения)... Решение см. п.1.

      Примеры (внимание в примерах используются старые блоки):
      Бесконечное вращение -
      ШД G бесконечное вращение.zip
      (90.63 КБ) 29 скачиваний
      Бесконечное вращение с реверсом - Шагаем в режиме относительных координат -
      ШД G шагаем относительно.zip
      (51.17 КБ) 28 скачиваний
      Протестировал базовые функции. НЕ удалось достичь высоких скоростей на моем ШД (максимум 2500 при питании 50В Nema23)

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

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

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

      #21

      Сообщение Wadim77 » 30.03.2021{, 00:38}

      Здравствуйте! AlexCrane - огромное спасибо за блок!
      Хотелось бы узнать - какой таймер выбрать в настройках блока? (не разбираюсь в разнице между ними).
      Ждем выхода стабильной версии.

      С наилучшими

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

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

      #22

      Сообщение AlexCrane » 30.03.2021{, 07:32}

      Wadim77, для UNO, NANO, Pro Mini - первый или второй таймер, для Mega - c 1 по 5
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

      #23

      Сообщение Ardudue » 31.03.2021{, 18:40}

      AlexCrane, зачем нужен параметр установка ускорения в шагах/сек/сек
      stepper.setAcceleration(500); ?
      не понял из описания Гайвера

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

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

      #24

      Сообщение AlexCrane » 31.03.2021{, 22:07}

      Ardudue, Ну так-то ускорение, плавный набор скорости, при установке 500, за первую секунду разгонится до 500 шагов секунду, за вторую секунду разгонится уже до 1000 шагов в секунду, т.е. есть за две секунды пройдет уже 1500 шагов и так по нарастающей поэтому шагов в секунду за секунду.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      EgorKa
      Сержант
      Сообщения: 190
      Зарегистрирован: 09.03.2019{, 17:49}
      Репутация: 16
      Имя: Egor

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

      #25

      Сообщение EgorKa » 02.04.2021{, 17:18}

      AlexCrane писал(а):
      24.03.2021{, 22:49}
      Endless_Rotation_Speed - Скорость постоянного вращения, шаг/сек
      если ставим значение 10, то получим 10 импульсов на выходе Ардуино, мотор шагает 10 шагов/сек?
      AlexCrane писал(а):
      24.03.2021{, 22:49}
      MaxSpeed - Максимальная скорость шаг/сек, указывать обязательно
      что делает этот параметр? Ограничивает максимальную скорость мотора? Зачем?
      AlexCrane писал(а):
      24.03.2021{, 22:49}
      Steps - Установка шагов
      если установить значение 10, то через 10 шагов мотор остановится? Или для чего этот вход?

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

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

      #26

      Сообщение AlexCrane » 02.04.2021{, 18:30}

      EgorKa писал(а):
      02.04.2021{, 17:18}
      если ставим значение 10, то получим 10 импульсов на выходе Ардуино, мотор шагает 10 шагов/сек?
      Именно так
      EgorKa писал(а):
      02.04.2021{, 17:18}
      что делает этот параметр? Ограничивает максимальную скорость мотора? Зачем?
      В режиме управления по шагам ШД разгоняется от 0 до MaxSpeed с ускорением Acceleration
      EgorKa писал(а):
      02.04.2021{, 17:18}
      если установить значение 10, то через 10 шагов мотор остановится?
      Да при импульсе Start_Steps ЩД отшагает количество шагов Steps и будет ждать следующий импульс Start_Steps
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

      #27

      Сообщение Ardudue » 02.04.2021{, 18:53}

      AlexCrane писал(а):
      02.04.2021{, 18:30}
      В режиме управления по шагам ШД разгоняется от 0 до MaxSpeed с ускорением Acceleration
      из описания Гайвера я так понял- MaxSpeed используется только если надо setTarget (установка абсолютной целевой позиции в шагах). При этом Гайвер пишет: "при установке ускорения в ноль 0
      мотор будет двигаться к позиции с максимальной скоростью, заданной в setMaxSpeed()
      ."

      Вывод: если не надо гнать мотор на какую то позицию, а прост шагать от и до по концевекам с постоянной скоростью, то setTarget(pos), setMaxSpeed(speed), setAcceleration(accel) надо просто убрать из ПБ. Ну или выборкой отключать,что бы этот код не грузить в контроллер.

      Или я не прав?

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

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

      #28

      Сообщение AlexCrane » 02.04.2021{, 19:05}

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

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

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

      #29

      Сообщение AlexCrane » 02.04.2021{, 19:07}

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

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

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

      #30

      Сообщение Ardudue » 02.04.2021{, 19:26}

      AlexCrane писал(а):
      02.04.2021{, 19:07}
      Steps
      он у Вас в каком месте? Это setTarget?

      Отправлено спустя 4 минуты 54 секунды:
      а , увидел stepper<INS.UUID>.setTarget(<Установка шагов>, ABSOLUTE);

      Отправлено спустя 13 минут 44 секунды:
      AlexCrane писал(а):
      02.04.2021{, 19:07}
      MaxSpeed возможно и не нужен, а Acceleration можно использовать в режиме бесконечного вращения, зачем убирать. Вход Steps и так отключается.
      я вот тут паяльник стряпаю. И стол с платой надо просто протащит от стартовой точки до конца платы. Соответственно шаговик который тащит стол шагать должен ооочень медленно от нуля до определенно места , скажем через 500 шагов его надо тормазнуть программно не концевиком (нет места под концевик) и потом запустить реверс с той же скоростью. Вот пытаюсь понять применение Вашего блока.
      Acceleration мне не требуется, т.к. движение стола должно быть постоянное и очень плавное.
      Гайвера инструкции перечитал, но чёт он намудрил.

      edyapd
      Лейтенант
      Сообщения: 661
      Зарегистрирован: 20.09.2019{, 11:38}
      Репутация: 47
      Имя: Эдуард

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

      #31

      Сообщение edyapd » 02.04.2021{, 19:49}

      Ardudue писал(а):
      02.04.2021{, 18:53}
      setMaxSpeed(speed), setAcceleration(accel) надо просто убрать из ПБ
      Ничего не скажу за setMaxSpeed, но без параметра setAcceleration у вас шаговый двигатель не запустится. Ну или будете использовать очень низкую скорость. Шаговые двигатели не могу мгновенно стартовать, им нужен плавный разгон, иначе будут пропуски шагов. И setAcceleration для каждого случая будет свой. Один двигатель может быть нагружен слабее и можно установить этот параметр побольше, а другой будет нагружен сильнее и ему нужен будет более плавный разгон.

      Отправлено спустя 2 минуты 16 секунд:
      И да, отрицательное ускорение (торможение) тоже важно. Двигатель, за счёт инерции, точно так же не может резко остановится.

      nehilo
      Рядовой
      Сообщения: 7
      Зарегистрирован: 31.12.2020{, 11:56}
      Репутация: 0
      Имя: Георгий

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

      #32

      Сообщение nehilo » 02.04.2021{, 20:45}

      AlexCrane писал(а):
      02.04.2021{, 19:07}
      Есть у кого возможность откатать блок на ESP32? Скину в ЛС чтоб тему не засорять тестовыми блоками....
      А для esp8266 не планируется?

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

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

      #33

      Сообщение ingener » 02.04.2021{, 23:33}

      AlexCrane писал(а):
      02.04.2021{, 19:07}
      Есть у кого возможность откатать блок на ESP32? Скину в ЛС чтоб тему не засорять тестовыми блоками....
      есть собранный контроллер с дисплеем. осцилл

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

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

      #34

      Сообщение Ardudue » 03.04.2021{, 15:22}

      edyapd писал(а):
      02.04.2021{, 19:51}
      Ничего не скажу за setMaxSpeed, но без параметра setAcceleration у вас шаговый двигатель не запустится. Ну или будете использовать очень низкую скорость.
      Ardudue писал(а):
      02.04.2021{, 18:53}
      При этом Гайвер пишет: "при установке ускорения в ноль 0 мотор будет двигаться к позиции с максимальной скоростью, заданной в setMaxSpeed()."
      edyapd писал(а):
      02.04.2021{, 19:51}
      Шаговые двигатели не могу мгновенно стартовать, им нужен плавный разгон, иначе будут пропуски шагов.
      Не всегда надо ускорение.
      Мне вот медленно и равномерно надо двигать стол до определенной позиции и никакого ускорения не надо.

      Naladchik
      Лейтенант
      Сообщения: 383
      Зарегистрирован: 04.10.2015{, 19:10}
      Репутация: 30
      Откуда: Новосибирск
      Имя: Павел

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

      #35

      Сообщение Naladchik » 05.04.2021{, 06:02}

      AlexCrane писал(а):
      26.03.2021{, 10:09}
      ...Не удалось в новом редакторе реализовать фишку, пришлось костыли делать в виде отдельного блока...
      Ну так попросите Сергея чтобы в редакторе секция Function Общего кода состояла из 2х блоков, как setup и loop .
      СпойлерПоказать
      1.jpg
      .
      Win7-64. FLProg Portable.
      Изображение

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

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

      #36

      Сообщение AlexCrane » 05.04.2021{, 07:48}

      Naladchik писал(а):
      05.04.2021{, 06:02}
      Ну так попросите Сергея чтобы в редакторе секция Function Общего кода состояла из 2х блоков, как setup и loop .
      Не получится, между началом и концом секции он не положит код из всех блоков пакета блоков.
      Тут нужна секция Совместный код, куда сваливать можно функции из всех блоков, и потом уже его можно было вставить в раздел Function :smile37:
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Naladchik
      Лейтенант
      Сообщения: 383
      Зарегистрирован: 04.10.2015{, 19:10}
      Репутация: 30
      Откуда: Новосибирск
      Имя: Павел

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

      #37

      Сообщение Naladchik » 05.04.2021{, 14:09}

      AlexCrane писал(а):
      05.04.2021{, 07:48}
      Не получится...
      Не факт. Я уверен именно так и получится.
      Осталось попробовать попросить Сергея, обрисовав ему ситуацию.
      Win7-64. FLProg Portable.
      Изображение

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

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

      #38

      Сообщение AlexCrane » 06.04.2021{, 18:00}

      ----- Новая версия блока! ------
      смотреть в первом топике

      - Добавил поддержку ESP32
      - режим без прерываний (можно попробовать на ESP8266)
      - добавил больше прерываний
      - для выбранного контроллера выдаются только его прерывания

      Из выявленных отрицательных моментов:
      - не работает дисплей LCD на HD44780 при подключении через I2C на ESP32
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Ответить

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

      Кто сейчас на конференции

      Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость