Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

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

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

#1

Сообщение AlexCrane » 04.12.2019{, 22:24}

Бок управления шаговым двигателем на библиотеке AccelStepper

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

Работает на библиотеке 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 КБ) 144 скачивания
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 124 скачивания
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 15.12.2019. Не включалось повторно бесконечное вращение
Обновил 14.01.2020. После остановки "бесконечного вращения" продолжал медленно шагать
Обновил 29.01.2020 до версии 1.2. Пофиксил обнаруженные баги.
Обновил 06.04.2020 до версии 1.3. Некорректно работал вход CCW
Вложения
6х ШД AlexCrane v1.3.ubl
(498.89 КБ) 109 скачиваний
ШД AlexCrane v1.2.ubl
(498.83 КБ) 160 скачиваний
Последний раз редактировалось AlexCrane 06.04.2020{, 17:19}, всего редактировалось 6 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#101

Сообщение AlexCrane » 28.05.2020{, 06:39}

Davit07, Кратко опишите по пунктам что Вам нужно.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

Аватара пользователя
Davit07
Рядовой
Сообщения: 64
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 1
Имя: Давит

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

#102

Сообщение Davit07 » 28.05.2020{, 12:33}

Добрый день.
AlexCrane, Благодарю Вас за помощь
Блук будет работать в 2х режимах : шаги , максимальная скорость.
Хочу собрать устройство с функциями делительной головки и зуборезного устройства.
Функционал я вижу такой :
1) С энкодера считаем скорость вращение. После математических вычислений по формулам, подаем на блок скорость постоянного вращения ШД ( функция зубореза)
2) Через блок меню или через Vertuino вводим количество зубов на шестерне, после математических вычислений на блок подається число с количеством шагов на один зуб. При нажатии кнопки происходит вращение оси на один шаг
3) Возврат поворотной оси в точку 0 . Ну над этой функцией буду думать ближе к концу
В качестве эксперимента используется 4я ость от ЧПУ на базе ШД. Если же эксперимент пройдет удачно, то приобрету серводвигатель для увеличение скорости вращение .
Приобрел платы ESP8266 NodeMcu v3 для реализации этого проекта.

Как реализовать функции блока указанные в пунктах 1 и 2 ?
Какое железо луче всего использовать для данного проекта ?
Благодарю Вас за ответ

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

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

#103

Сообщение ingener » 23.06.2020{, 14:07}

В проекте используется комплект из 3 блоков
Все работает четко только при условии, что значение max speed не более 4000.
Имеется в виду работа по программе, с запуском через En Steps.
Если давать больше, то начинается нестабильная работа - сбой индикации позиции, невозможно остановить вращение сигналом на Stop Asse, произвольные редкие шаги после остановки и пр.
Если крутить в ручном режиме через Continuous, то переваривает скорость до 9600 примерно.
Просьба к автору пояснить, это связано с особенностью блоков, их количеством (может на одном такого не будет) или виноват контроллер (нано)?

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

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

#104

Сообщение AlexCrane » 23.06.2020{, 15:38}

ingener, Как я понимаю, в режиме Continuous не используется математика с float для вычисления ускорений, поэтому и разгоняется. Просто нано не справляется.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

MegaF
Рядовой
Сообщения: 81
Зарегистрирован: 05.09.2018{, 10:09}
Репутация: 5
Имя: farad

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

#105

Сообщение MegaF » 23.06.2020{, 23:36}

у многих большие проблемы с входом на форум я уже четвертый день не могу войти , чисто сдучайно получилось , каперский тревожно сообщает
Безымянный1.png
о не соответствия сертификата безопасности. в чем проблема?

Отправлено спустя 3 минуты 43 секунды:
единственная тема которая открылась и поля ввода функционирует, в теме работа форума нет возможности писать Коментарии.

Отправлено спустя 2 минуты 33 секунды:
Безымянный1.png

Аватара пользователя
Davit07
Рядовой
Сообщения: 64
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 1
Имя: Давит

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

#106

Сообщение Davit07 » 25.06.2020{, 18:44}

Вопрос к автору блока .
Как можно задать определенную скорость вращение ШД?
К примеру 100 об/мин

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

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

#107

Сообщение ingener » 26.06.2020{, 09:51}

зачем автора беспокоить по таким пустякам)
чистая математика
1. узнаете кол-во шагов мотора на один оборот
2. делите его на 60.
3. это значение скорости соответствует 1об/мин
4. далее умножаете его на необходимое вам число оборотов в мин
вроде так :smile37:

Аватара пользователя
Davit07
Рядовой
Сообщения: 64
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 1
Имя: Давит

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

#108

Сообщение Davit07 » 26.06.2020{, 17:11}

ingener писал(а):
26.06.2020{, 09:51}
зачем автора беспокоить по таким пустякам)
чистая математика
1. узнаете кол-во шагов мотора на один оборот
2. делите его на 60.
3. это значение скорости соответствует 1об/мин
4. далее умножаете его на необходимое вам число оборотов в мин
вроде так :smile37:
Доброго дня .
Благодарю за ответ .
Из вашего примера получается , что 200/60*100 =333,3333. И если поставлю эту константу, то ШД закрутиться 100 об/мин.
Правельно ли я понял ?

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

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

#109

Сообщение ingener » 26.06.2020{, 18:52}

Davit07 писал(а):
26.06.2020{, 17:11}
333,3333. И если поставлю эту константу, то ШД закрутиться 100 об/мин.
Правельно ли я понял ?
Да, но это при условии, что на драйвере не включен делитель. Если включен, то надо еще умножить 333 на коэффициент деления.

Ответить

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