Страница 2 из 12
Шаговый двигатель на GyverStepper
Добавлено: 24.03.2021{, 22:49}
AlexCrane
Блок для управления ШД на основе библиотек Gyver'а
- ШД ГайверЛиб.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 - На выходе текущая целевая скорость мотора
Параметры блоки описаны внутри блока.
Ненужные режимы, входы отключаются.
1. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop, то мотор резко останавливается и продолжает медленно шагать! Как решение использовать резкую остановку break или reset. Все вопросы к Гайверу (в тестовом примере с его сайта у меня наблюдаются такие-же глюки).
2. В режиме бесконечного вращения с включенным режимом SMOOTH (плавный разгон и торможение) если во время плавного ускорения вызвать плавную остановку stop и тут же включить опять бесконечное вращение то мотор ускоряется не с нуля а с момента остановки (может стартануть вообще без ускорения)... Решение см. п.1.
Бесконечное вращение -
Бесконечное вращение с реверсом -
Шагаем в режиме относительных координат -
Крутим мотор туда сюда на определенное количество шагов бесконечно
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
он у Вас в каком месте? Это 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 .
.
Шаговый двигатель на GyverStepper
Добавлено: 05.04.2021{, 07:48}
AlexCrane
Naladchik писал(а): ↑05.04.2021{, 06:02}
Ну так попросите Сергея чтобы в редакторе секция Function Общего кода состояла из 2х блоков, как setup и loop .
Не получится, между началом и концом секции он не положит код из всех блоков пакета блоков.
Тут нужна секция Совместный код, куда сваливать можно функции из всех блоков, и потом уже его можно было вставить в раздел Function
Шаговый двигатель на 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}
Жаль, что присутствует такая проблема с дисплеем. Это обламывает мне весь проект.
Можно использовать альтернативные способы подключения......