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

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

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

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

#1

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

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

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

Работает на библиотеке 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 КБ) 736 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 677 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 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 КБ) 1068 скачиваний
Вложения
ШД AlexCrane v1.3.ubl
(780.74 КБ) 1026 скачиваний
Последний раз редактировалось AlexCrane 12.11.2020{, 18:48}, всего редактировалось 9 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#41

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

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

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

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

#42

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

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

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

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

#43

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

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

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

Шаговый двигатель на 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 МБ) 179 скачиваний

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

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

#45

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

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

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

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

#46

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

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

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
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#48

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

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

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

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

#49

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

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

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

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

#50

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

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

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

Шаговый двигатель на 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 КБ) 2711 просмотров

Gennadij2
Рядовой
Сообщения: 15
Зарегистрирован: 11.03.2020{, 16:25}
Репутация: 0
Откуда: Germania
Имя: Gennadij

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

#52

Сообщение Gennadij2 » 20.03.2020{, 14:23}

Здраствуйте,

у меня токая проблема, если я делаю с одним ШД всё работает, а если с двумя то FLProg говарит что всё ОК а Arduino пишет ошибку.
за рание благадарю.

Arduino: 1.8.11 (Windows 7), Board: "Arduino Uno"

C:\Users\AGG\AppData\Local\Temp\flprog\pr80\pr80.ino: In function 'void timerInterrupt()':

pr80:608:6: error: redefinition of 'void timerInterrupt()'

void timerInterrupt()

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

C:\Users\AGG\AppData\Local\Temp\flprog\pr80\pr80.ino:598:6: note: 'void timerInterrupt()' previously defined here

void timerInterrupt()

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

exit status 1
redefinition of 'void timerInterrupt()'

[img]C:\Users\AGG\Pictures[/img]
Вложения
WickelnMaschina4.flp
(882.87 КБ) 68 скачиваний
Fehler.jpg

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

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

#53

Сообщение ingener » 20.03.2020{, 16:05}

зачем два раза размещаете основной блок

Gennadij2
Рядовой
Сообщения: 15
Зарегистрирован: 11.03.2020{, 16:25}
Репутация: 0
Откуда: Germania
Имя: Gennadij

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

#54

Сообщение Gennadij2 » 20.03.2020{, 17:37}

Хорошо. Спасибо, сейчас попробую.

Отправлено спустя 25 минут 19 секунд:
Спасибо.... всё работает.

grover
Рядовой
Сообщения: 22
Зарегистрирован: 14.01.2018{, 22:08}
Репутация: 0

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

#55

Сообщение grover » 31.03.2020{, 00:07}

ingener писал(а):
21.02.2020{, 10:50}
Что-то перестали компилироваться блоки в версии 6.3.1
Arduino: 1.8.11 (Windows 10), Плата:"Arduino Uno"
Тоже такая проблема. Подскажите в чем дело?

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

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

#56

Сообщение ingener » 31.03.2020{, 11:29}

может быть дело в неверной библиотеке
надо пробовать именно ту что в первом посту указана

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

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

#57

Сообщение Sanbi4 » 06.04.2020{, 10:34}

Здравствуйте, есть возможность создать данный блок, но под NodeMCU v3 и esp32?

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

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

#58

Сообщение AlexCrane » 06.04.2020{, 17:23}

Обновил блоки до версии 1.3 скачать здесь в самом низу
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#59

Сообщение AlexCrane » 06.04.2020{, 17:25}

Sanbi4, Блоки используют прерывания, как использовать прерывания на ESP я не знаю.

Если без прерываний то попробуй пример из поста 13 viewtopic.php?t=5919#p83028
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

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

#60

Сообщение Sanbi4 » 07.04.2020{, 16:52}

AlexCrane, Да, блок работает! Работает ровно, плавно, даже если использовать передачу переменной для входа steps по wifi. единственное что - можете в него внести изменения, согласно ранее найденным багам в других блоках для ардуино, и возможность использовать хотя бы 3 блока на 1 контроллер.

Ответить

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