Страница 2 из 12

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

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

      ТРЕБУЕТСЯ ТЕСТИРОВАНИЕ ВСЕХ РЕЖИМОВ....
      Можете отблагодарить на кофе, ну или хотя-бы лайкните пост.

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

      Добавлено: 30.03.2021{, 00:38}
      Wadim77
      Здравствуйте! AlexCrane - огромное спасибо за блок!
      Хотелось бы узнать - какой таймер выбрать в настройках блока? (не разбираюсь в разнице между ними).
      Ждем выхода стабильной версии.

      С наилучшими

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

      Добавлено: 30.03.2021{, 07:32}
      AlexCrane
      Wadim77, для UNO, NANO, Pro Mini - первый или второй таймер, для Mega - c 1 по 5

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

      Добавлено: 31.03.2021{, 18:40}
      Ardudue
      AlexCrane, зачем нужен параметр установка ускорения в шагах/сек/сек
      stepper.setAcceleration(500); ?
      не понял из описания Гайвера

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

      Добавлено: 31.03.2021{, 22:07}
      AlexCrane
      Ardudue, Ну так-то ускорение, плавный набор скорости, при установке 500, за первую секунду разгонится до 500 шагов секунду, за вторую секунду разгонится уже до 1000 шагов в секунду, т.е. есть за две секунды пройдет уже 1500 шагов и так по нарастающей поэтому шагов в секунду за секунду.

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

      Добавлено: 02.04.2021{, 17:18}
      EgorKa
      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 шагов мотор остановится? Или для чего этот вход?

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

      Добавлено: 02.04.2021{, 18:30}
      AlexCrane
      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

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

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

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

      Или я не прав?

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

      Добавлено: 02.04.2021{, 19:05}
      AlexCrane
      Ardudue,MaxSpeed возможно и не нужен, а Acceleration можно использовать в режиме бесконечного вращения, зачем убирать. Вход Steps и так отключается.

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

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

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

      Добавлено: 02.04.2021{, 19:26}
      Ardudue
      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 мне не требуется, т.к. движение стола должно быть постоянное и очень плавное.
      Гайвера инструкции перечитал, но чёт он намудрил.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Добавлено: 05.04.2021{, 14:09}
      Naladchik
      AlexCrane писал(а):
      05.04.2021{, 07:48}
      Не получится...
      Не факт. Я уверен именно так и получится.
      Осталось попробовать попросить Сергея, обрисовав ему ситуацию.

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

      Добавлено: 06.04.2021{, 18:00}
      AlexCrane
      ----- Новая версия блока! ------
      смотреть в первом топике

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

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

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

      Добавлено: 25.04.2021{, 18:00}
      viktorz1
      У меня как раз то и наоборот. Дисплей работает, а вот сам блок отказывается запускать мотор. Запуск драйвера (EN) реализован отдельно от блока через тт тригер. При нажатии на "старт", буквально на секунду включается драйвер двигателя и самопроизвольно отключается. Мотор при этом не движется, значит сам блок никак не реагирует на "старт".
      Я так понимаю, что задействовать I2C (в целом) в связке с блоком моторов никак не получится? И очень интересно почему происходит самопроизвольное сбрасывание 1 с выхода тт тригера.
      Второй момент: (без дисплея) у меня через RT тригер нет старта на постоянное вращение. Через ТТ тригер работает. Тоесть пока есть 1 на Start_Endless_Rotation мотор крутит, убрал 1 - остановка. Ускорение при постоянном вращении при этом срабатывает только при первом запуске ЕСП32, при последующих - сразу по выставленной скорости, что чревато отсутствием вращения мотора. Решение пока такое: При повторном нажатии на кнопку сбрасываем тт тригер (мотор останавливается) и сразу подаём 1 на "STOP". Последующий старт происходит как положено с ускорением, даже при остановке в момент ускорения.
      Пока вот такие результаты тестирования.
      Жаль, что присутствует такая проблема с дисплеем. Это обламывает мне весь проект.

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

      Добавлено: 25.04.2021{, 19:58}
      AlexCrane
      viktorz1 писал(а):
      25.04.2021{, 18:00}
      При нажатии на "старт", буквально на секунду включается драйвер двигателя и самопроизвольно отключается.
      Как мне писали тестеры в этот момент происходит перезагрузка ESP32.
      viktorz1 писал(а):
      25.04.2021{, 18:00}
      Ускорение при постоянном вращении при этом срабатывает только при первом запуске ЕСП32, при последующих - сразу по выставленной скорости
      Это косяк в библиотеке, писал об этом на гитхабе Гайверу, пока не ответил. Как и нет плавной остановки при постоянном вращении.
      viktorz1 писал(а):
      25.04.2021{, 18:00}
      Жаль, что присутствует такая проблема с дисплеем. Это обламывает мне весь проект.
      Можно использовать альтернативные способы подключения......