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

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

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

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

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

#1

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

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

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

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

ksndz
Рядовой
Сообщения: 6
Зарегистрирован: 23.05.2016{, 20:11}
Репутация: 4

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

#41

Сообщение ksndz » 31.01.2020{, 10:47}

Всем добра. Александр, а как блок работает с дисплеями, в частности с I2C. Как и везде - тормоза, или нет? Спасибо.

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

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

#42

Сообщение AlexCrane » 31.01.2020{, 13:11}

ksndz, Скорее всего да, если для дисплеев типа 1602, 4004 использовать сторонние блоки с выводом на экран раз в несколько циклов или секунд, то приемлемо
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#43

Сообщение Davit07 » 31.01.2020{, 14:09}

AlexCrane писал(а):
31.01.2020{, 09:09}
Davit07, Разгоняться с ускорением? Останавливаться как? ШД будет работать как мотор я понимаю
Совершенно верно . Остановка осуществляется будет остановкой работы генератора импульсов. Если же снижать обороты и плавно останавливать , то возможен наезд . Почему хочу использовать ШД? В будущем планирую добавить энкодер для коррекции шагами . В общем это пневмо гравер , ось Z приводиться в ручную оператором, хочу переделать с автоматической поиском нуля. Но это все в будущем , даже в далёком )

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

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

#44

Сообщение ingener » 31.01.2020{, 23:49}

ksndz писал(а):
31.01.2020{, 10:47}
а как блок работает с дисплеями, в частности с I2C. Как и везде - тормоза, или нет? Спасибо.
Никаких тормозов на обычной UNO даже в достаточно громоздком проекте с 2004 с русификатором и большим меню и с выводом на дисплей кол-ва шагов
Вложения
FLW_new_24_01_20 home edit 2 OK.flp
(2.13 МБ) 25 скачиваний

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

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

#45

Сообщение Davit07 » 02.02.2020{, 11:42}

AlexCrane, доброе время суток . Хочу обратиться к Вам с просьбой. Если возможно пришлите пожалуйста готовый образец для примера. Не могу разобраться . Ускорение идёт промежутками времени, а требуется ,что бы равномерным ускорением от об/мин до об/мин набирал обороты равномерно. К примеру: стартует с 20 об /мин и до 100 об/мин с равномерным ускорением за секунд 5.
Заранее спасибо за ответ .

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

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

#46

Сообщение AlexCrane » 02.02.2020{, 21:45}

Davit07, Внес кое какие изменения, попробуйте и отпишитесь
ШД7.png
ТЕСТ ШД v7 AccelStart NoAccelStop.flp
(321.13 КБ) 17 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...

ksndz
Рядовой
Сообщения: 6
Зарегистрирован: 23.05.2016{, 20:11}
Репутация: 4

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

#47

Сообщение ksndz » 04.02.2020{, 11:35}

ingener писал(а):
31.01.2020{, 23:49}
ksndz писал(а):
31.01.2020{, 10:47}
а как блок работает с дисплеями, в частности с I2C. Как и везде - тормоза, или нет? Спасибо.
Никаких тормозов на обычной UNO даже в достаточно громоздком проекте с 2004 с русификатором и большим меню и с выводом на дисплей кол-ва шагов
Мне как бы скорость 2 метра в минуту маловато. Желательно 2 метра за 5 секунд. Поэтому пришлось обойтись двумя UNO. Так как I2C тормозит даже при обращении к дисплею в один цикл. Спасибо.

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

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

#48

Сообщение Davit07 » 05.02.2020{, 22:36}

AlexCrane, <Большое Вам спасибо за пример. Сложно было разобраться для меня , так как я далек от этого всего )))
Блок протестил и добился нужного результата. В блоке не нравиться работа ШД , как то не очень плавно он работает . Пример не окончателен, но в процессе доработки , думаю разберусь. Прилагаю пример. Прошу указать на ошибки.
Большое спасибо Вам за помощь
Вложения
ТЕСТ ШД v7 AccelStart NoAccelStop 77-энкодер.flp
(620.65 КБ) 10 скачиваний

Аватара пользователя
ivanpost
Сержант
Сообщения: 109
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 2
Откуда: Тольятти
Имя: Иван
Контактная информация:

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

#49

Сообщение ivanpost » 06.02.2020{, 17:45}

AlexCrane,
Отличный блок, но почему-то перестает работать, после включения сервы с библиотекой Servo.h. Серва на любом пине. Детач сервы не помогает. Вроде бы в комментах к библиотеке не всплывает это ограничение... Не можете что-то посоветовать?

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

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

#50

Сообщение AlexCrane » 07.02.2020{, 13:16}

ivanpost, В блоках используется прерывания по таймеру 1 и не должны работать ШИМ на 9 и 10 (UNO, Nano). Почему не работает на остальных не могу сказать.
Если не знаю, то не скажу. Если скажу, то сначала проверю...

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

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

#51

Сообщение ingener » 21.02.2020{, 10:50}

Что-то перестали компилироваться блоки в версии 6.3.1 :smile37:
Arduino: 1.8.11 (Windows 10), Плата:"Arduino Uno"

C:\Users\AND\AppData\Local\Temp\flprog\pr10\pr10.ino: In function 'void setup()':

pr10:29:11: error: 'class AccelStepper' has no member named 'setMinPulseWidth'

Stepper01.setMinPulseWidth(lengthPulse);

^~~~~~~~~~~~~~~~

C:\Users\AND\AppData\Local\Temp\flprog\pr10\pr10.ino: In function 'void loop()':

pr10:78:29: error: 'class AccelStepper' has no member named 'stop'; did you mean 'step'?

if (StopAccel01) {Stepper01.stop();}

^~~~

step

exit status 1
'class AccelStepper' has no member named 'setMinPulseWidth'

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Вложения
err.PNG
err.PNG (11.01 КБ) 177 просмотров

Ответить

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

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

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