Страница 7 из 16

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

Добавлено: 04.12.2019{, 22:24}
AlexCrane
Бок управления шаговым двигателем на библиотеке AccelStepper

Наименование блока: ШагДвиг_mod (step/dir) INT_v2
ШД.png
ШД.png (4.42 КБ) 41430 просмотров

Работает на библиотеке AccelStepper.h и TimerOne.h (Не будет работать ШИМ на выходах завязанных на первое прерывание)
http://www.airspayce.com/mikem/arduino/ ... index.html

Параметры пользователя:
period - Период прерывания, мкс, Менять Оторожно
Step - Пин управления шагами контроллера
Dir - Пин направления вращения контроллера

Входы:
Continuous - При true постоянно шагаем, имеет больший приоритет перед EnSteps
SpeedContinuous - Скорость ШД для "постоянно шагаем"
Эти два входа можно использовать для поиска концевика и просто чтобы покрутить двигателем, но без ускорений

SetZeroPosition - Установка начальной позиции в 0. Использовать через RTrig

EnSteps - при переднем фронте начинаем шагать. Использовать через RTrig
MaxSpeed - Максимальная скорость шаг/сек
Acceleration - Ускорение шаг/сек2
Steps - Количество шагов для выполнения (hint: можно и отрицательные)
CCW - true крутить против часовой, иначе по

AbsSteps - Если true то шагаем по абсолютным координатам от нулевой позиции, иначе идем относительно последней позиции

StopAccel - Остановка с использованием текущей скорости и ускорения

Выходы:
Ready - true двигатель закончил движение
Position - Текущая позиция двигателя
-

-
Небольшой пример:
------------------------------------------------
Тест ШД 04 test.flp
(752.64 КБ) 742 скачивания
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 680 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 15.12.2019. Не включалось повторно бесконечное вращение
Обновил 14.01.2020. После остановки "бесконечного вращения" продолжал медленно шагать
Обновил 29.01.2020 до версии 1.2. Пофиксил обнаруженные баги.
Обновил 06.04.2020 до версии 1.3. Некорректно работал вход CCW
Обновил 12.11.2020 Добавил блоки для DUE и для драйверов на базе ULN2003, L298N и пр.

Примеры предоставленные участниками форума:
viewtopic.php?t=5919#p80991

Библиотеки
Accel_libraries.zip
(118.27 КБ) 1073 скачивания

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

Добавлено: 04.09.2020{, 10:18}
AlexCrane
Wadim77, Прошу прощения, забыл в примере подать импульс для начала движения ШД (как только получили данные по UART)
Тест ШД 05.3 test.flp
(597.1 КБ) 70 скачиваний

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

Добавлено: 05.09.2020{, 02:00}
Wadim77
AlexCrane писал(а):
04.09.2020{, 10:18}
Wadim77, Прошу прощения, забыл в примере подать импульс для начала движения ШД (как только получили данные по UART)
Тест ШД 05.3 test.flp
ДОБРОГО ВРЕМЕНИ СУТОК!

Я немного заменил вход (плата №6), теперь там не уарт вход, а приемник DMX512. Что то совсем все перестало работать. в принципе немного изменил - приходит значение от 0 до 255, затем масштабируется до 2550 шагов. Это поидее понятно. Наверное я что то напортачил с сигналом поступления значения? Взгляние, ПОЖАЛУЙСТА. Хотелось бы довести этот проект до конца. П.С. (если не сложно) подскажите - 1. какую переменную или просто ПРИЕМ в ком порт надо принимать? 2. Пункт - сигнал по приему я не нашел? как он правильно реализуется? 3. Что надо отправляться в ком порт ардуинки с компа (МОНИТОРА ПОРТа), что бы заставить делать шаги? ОГРОМНОЕ ВАМ СПАСИБО за помощь! П.С.С - проект свой я приложил к этому письму)

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

Добавлено: 05.09.2020{, 07:47}
AlexCrane
Wadim77, Не знаю что такое DMX512, сделал прием шагов в виде строки из UART
Тест ШД 05.4 testDMX.flp
(671.12 КБ) 73 скачивания

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

Добавлено: 09.09.2020{, 10:28}
Sanbi4
Доброго времени суток. Подскажите такую вещь, как реализовать: нужно минимизировать ошибки шагания от нулевой точки. Дело в том, что скорость изменения количества шагов может меняться быстрее, чем шаговик отработает, в связи с этим могут накапливаться ошибки позиционирования. я думаю так сделать: запись переменной количества шагов разрешать через rtrig с выхода ready блока. будет ли это нормально работать?

железо пока не собрано, протестировать нет возможности.

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

Добавлено: 09.09.2020{, 14:49}
AlexCrane
Sanbi4 писал(а):
09.09.2020{, 10:28}
скорость изменения количества шагов может меняться быстрее, чем шаговик отработает
Просто не нужно такого допускать
Sanbi4 писал(а):
09.09.2020{, 10:28}
запись переменной количества шагов разрешать через rtrig с выхода ready блока
Так обычно и делают

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

Добавлено: 15.09.2020{, 12:28}
ingener
AlexCrane, что-то не получается с плавной остановкой в ручном режиме.
если нажать и держать любую кнопку до прохода заданного кол-ва шагов, то тормозит плавно.
Если же бросить кнопку раньше, то встает резко.
Хотя, по идее, при подаче сигнала с RS триггера на вход StopAccel должен отрабатывать замедление?
Схема такая -

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

Добавлено: 15.09.2020{, 21:18}
AlexCrane
ingener, RS триггер тут лишний, после FTrig подключите к StopAccel. Возможно просто нужно убавить ускорение...

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

Добавлено: 23.09.2020{, 23:34}
Davit07
Доброго дня .
Подскажите пожалуйста . При загрузке данного блока на плату DUE, пишет ошибку , несколько библиотек не найдено TimerOne.h. . Библиотеку загружаю, но все равно её не видно . При загрузке в UNO проблем нет . Подскаже в чем беда ?
Всем спасибо

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

Добавлено: 24.09.2020{, 00:24}
viktorz1
Подскажите пожалуйста, на этом блоке можно собрать просто крутилку с регулировкой скорости вращения? Хочу собрать станочек свивки провода. Так как диаметр провода будет разный то скорее всего нужно будет подстраивать соотношение скоростей двух моторов (тип Nemo 17). Второе, это плавный старт с начальной скоростью вращения и если всё устраивает то по необходимости увеличение оборотов до номинальной.
Может есть у кого подходящий пример нечто похожего? Был бы очень признателен в помощи.

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

Добавлено: 24.09.2020{, 18:48}
AlexCrane
Davit07, TimerOne.h не работает с DUE. Если найдете библиотеку для работы с таймерами для DUE сделаю...

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

Добавлено: 24.09.2020{, 20:29}
Davit07
AlexCrane писал(а):
24.09.2020{, 18:48}
Davit07, TimerOne.h не работает с DUE. Если найдете библиотеку для работы с таймерами для DUE сделаю...
Я не разбираюсь особо какая должна быть библиотека. Если напишете какую-нибудь информацию о библиотеке , то конечно поищу .
Благодарю за помощь

Отправлено спустя 4 минуты 26 секунд:
viktorz1, сейчас занимаюсь подобным проектом. Как только будет готов пример , я Вам напишу

Отправлено спустя 1 час 4 минуты 19 секунд:
AlexCrane, посмотрите пожалуйста ссылки как будет у Вас время свободное

https://www.arduinolibraries.info/libraries/due-timer

https://github.com/ivanseidel/DueTimer

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

Добавлено: 25.09.2020{, 13:35}
AlexCrane
Davit07, Попробуй
ШД_DUE_основной_для_1х_ШД_v1.3_(CODE).ubi
(63.75 КБ) 55 скачиваний
используется 6 прерывание

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

Добавлено: 25.09.2020{, 18:22}
Davit07
AlexCrane, благодарю . В понедельник буду у компьютера , по результату отпишусь . Спасибо

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

Добавлено: 02.10.2020{, 09:11}
Revenger
Я вас всех приветствую!
Вопрос к знающим (или к автору): При подключении кнопок "вперёд/назад" (точнее пока просто на столе, проводочками) на енСтеп (для использования разгона и торможения ШД) и нажатии очень кратковременно "в любую сторону" как избежать такого, что ШД стартует и вращается ооочень медленно? Если подержать контакт чуть более продолжительно, то работает хорошо, но немного проезжает лишнего.

Поясню подробнее: Я пытаюсь сделать механизм поднятия/опускания каретки станка, мне нужно перемещать в мм. Для этого я задал конвертацию имульсов (для перевода на дисплей в мм), ну и задал на "степс" кол-во импульсов, примерно равное 1мм (примерно потому что пока всё на столе). Что бы переместиться на 1мм, а не больше, просто кратко "нажимаю кнопку", дабы не проскочить 1мм (кол-во импульсов) а ШД почему-то еле крутит.
Надеюсь понятно изъяснил суть. Ну и прошу прощения, программист из меня никакой... делаю что-то крайне редко, программу, как и языки программирования не знаю :smile44:

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

Добавлено: 02.10.2020{, 13:11}
AlexCrane
Revenger, Скинь проект посмортрю, обычно все нажатия через триггер RTrig используют

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

Добавлено: 03.10.2020{, 10:55}
Revenger
AlexCrane писал(а):
02.10.2020{, 13:11}
через триггер RTrig используют
я просто никак не выучу что за что отвечает, подумал, что он включит как бы с "залипанием" цикл и всё, а нужно "нажал - поехало, отпустил - стало" в данном случае (позже буду пытаться делать задание нужного кол-ва шагов через меню, автоматизация типа но это пока мечты) :smile37:

п.с. в "проекте" ещё остались части из вашего примера, не пугайтесь ) Я просто чтоб было к чему вернуться оставил часть. :smile44:

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

Добавлено: 03.10.2020{, 16:13}
Davit07
AlexCrane писал(а):
25.09.2020{, 13:35}
Davit07, Попробуй ШД_DUE_основной_для_1х_ШД_v1.3_(CODE).ubi
используется 6 прерывание
Доброго дня .
Блок работает хорошо , тестирую уже несколько дней . Благодарю за помощь

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

Добавлено: 03.10.2020{, 20:28}
AlexCrane
Revenger, Так все-таки может лучше довериться шагам, если вы так уверены что 3200 шагов это 1мм, а не держать кнопку на время шагания. Каретка ходит только на 1мм туда сюда или сколько задашь?

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

Добавлено: 03.10.2020{, 23:06}
Revenger
AlexCrane, да я готов довериться (это пока цифры от фонаря) просто чуть дольше кнопку подержал и больше мм проезжает, а само по себе конечно будет не 1мм, а стандартно как бы кратно 25мм, что я попытаюсь забить в итоге в меню, просто ручное перемещение наверное нужно когда нужно подогнать каретку рамы до нужного места. Да и меню это пока мечты. :)

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

Добавлено: 06.10.2020{, 23:09}
CraCk
Привет. Хочу переработать заслонку на дровяном котле. Выбросить сервомотор MG995, который уже начал подклинивать из за "мощных щеток", и поставить шаговик в наличии 28byj-48 5В. Вопрос ПБ поддерживает драйвер ULN2003 и режим мотора униполярный или только биполярный с Н-мостом? Если да, может есть какие то наработки реализации работы двигателя по принципу сервомотра. То есть задал на сервомоторе стать на 20 градусов он установился, скорость перемещения мотора не неактуальна. Предполагаю как минимум нужно обязательно добавлять концевик для отсчета нулевой точки при запуске МК.