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

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

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

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

#1

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

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

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

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

ztekem
Рядовой
Сообщения: 3
Зарегистрирован: 04.12.2018{, 17:51}
Репутация: 0
Имя: Андрей

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

#201

Сообщение ztekem » 02.01.2021{, 09:58}

Спасибо что помогаете, но теперь вот такое
теперь ругается на
ПРЕДУПРЕЖДЕНИЕ: библиотека TimerOne должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp8266.
C:\Users\zteke\AppData\Local\Temp\flprog\pr2\pr2.ino:7:28: warning: extra tokens at end of #include directive [enabled by default]

#include "user_interface.h";

^

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

pr2:51:8: error: 'class TimerOne' has no member named 'initialize'

Timer1.initialize( 100 ); // инициализация таймера 1,

^

pr2:52:8: error: 'class TimerOne' has no member named 'attachInterrupt'

Timer1.attachInterrupt ( timerInterrupt, 100 ); // задаем обработчик прерываний

^

Несколько библиотек найдено для "AccelStepper.h"
Используется: c:\Program
Не используется: c:\Program
exit status 1
'class TimerOne' has no member named 'initialize'

проверил начие дублей, нет нигде. почему ругается не пойму.

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

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

#202

Сообщение AlexCrane » 02.01.2021{, 14:32}

ztekem, Для esp8266 вот такой попробуй без основного
Вложения
ШД1_ESP_v1.5_(CODE).ubi
(128.96 КБ) 92 скачивания
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Vadimbol
Рядовой
Сообщения: 1
Зарегистрирован: 24.01.2021{, 09:27}
Репутация: 0
Имя: Vadim

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

#203

Сообщение Vadimbol » 24.01.2021{, 09:45}

Добрый день. Спасибо за блок. Не могли бы Вы подсказать в чем может быть проблема - при использовании 6 шаговых моторов происходит полный ужас, моторы начинают прыгать и пропускать шаги. Но если использовать 3 ШД то все плавно и без пропусков. Плата MEGA питание 24 вольта, 10 ампер. Межет быть проблема с библиотекой TIMERONE ? с прерыванием? Или только на каких-то определенных выводах нужно работать ? Я подключил на следующие STEP - 44,45,46,6,7,8 и DIR- 26,27,28,29,30,31.

Wadim77
Рядовой
Сообщения: 21
Зарегистрирован: 20.08.2020{, 19:23}
Репутация: 0
Имя: Wadim

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

#204

Сообщение Wadim77 » 12.02.2021{, 01:25}

Ребята, доброго времени суток. Помогите пожалуйста! Не могу сообразить ((( Нужна блок-схема основанная на данной теме (Шаговый двигатель на AccelStepper). суть очень простая - при запуске шаговик крутит назад (лево) пока не упрется в концевой датчик. ЗАмыкается контакт концевика и Устанавливается как нулевая позиция. Затем количество оборотов от нулевой точки меняться относительно значений со входа с потенциометра. Большое спасибо! Буду примного признателек если выложите здесь такой блок-программу. МИР.

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

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

#205

Сообщение AlexCrane » 12.02.2021{, 17:09}

Wadim77, Это частный случай примера из 1 топика
Тест ШД 06 test.flp
(420.76 КБ) 38 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

AndrewPan
Рядовой
Сообщения: 6
Зарегистрирован: 21.02.2021{, 13:35}
Репутация: 0
Имя: Андрей

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

#206

Сообщение AndrewPan » 21.02.2021{, 22:07}

Здравствуйте.
Прошу извинить - вроде как вопрос уже звучал, однако я так и не понял как работает (работает ли вообще параметр ускорения)
Пытался ставить различные значения, но результата не увидел.

Пришлось делать костыль в виде постепенного увеличения скорости до заданного в меню значения (картинка во вложении)
flprog.jpg

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

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

#207

Сообщение AlexCrane » 22.02.2021{, 08:13}

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

AndrewPan
Рядовой
Сообщения: 6
Зарегистрирован: 21.02.2021{, 13:35}
Репутация: 0
Имя: Андрей

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

#208

Сообщение AndrewPan » 24.02.2021{, 14:24}

AlexCrane писал(а):
22.02.2021{, 08:13}
ускорение используется только через вход Steps
Спасибо за ответ.
В соответствии с этим возник еще вопрос - можно ли остановить без ускорения (учитывая, что стартует с ускорением) ?

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

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

#209

Сообщение AlexCrane » 24.02.2021{, 19:22}

AndrewPan, На входе Acceleration значение можно менять на ходу, т.е. стартовать с одним ускорением, а останавливаться с другим (вплоть до нулевого). Ну или наоборот...

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

AndrewPan
Рядовой
Сообщения: 6
Зарегистрирован: 21.02.2021{, 13:35}
Репутация: 0
Имя: Андрей

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

#210

Сообщение AndrewPan » 24.02.2021{, 20:21}

AlexCrane писал(а):
24.02.2021{, 19:22}
А вообще задача какая стоит?
из того что есть сделать управление шаговиком, к сожалению мощи стартануть сразу на нужной скорости не хватает, а если останавливаться с замедлением то получаются рывки ((
Пробовал менять на ходу значение ускорения - вроде бы и меняется на 0 (вывел значение на экран) при выключении, но программа этого не учитывает (подцепил вторую ардуинку в качестве счетчика импульсов и вижу что при выключении идет плавное затухание от значения ускорителя что было при включении мотора)

Конечно можно отключать сам драйвер напрямую, но хотелось бы понять в чем допускаю ошибку при компиляции схемы в FLProg
SoftForMoscow4-test.flp
(1.32 МБ) 22 скачивания
flprog2.jpg

nehilo
Рядовой
Сообщения: 7
Зарегистрирован: 31.12.2020{, 11:56}
Репутация: 0
Имя: Георгий

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

#211

Сообщение nehilo » 13.03.2021{, 10:23}

Помогите пожалуйста решить проблему с работой шаговика на esp8266. Вращение прерывисто как бы импульсами. Пробовал ставить скорость постоянной переменной так же без изменений(
Вложения
esp1.flp
(791.36 КБ) 55 скачиваний

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

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

#212

Сообщение AlexCrane » 13.03.2021{, 16:58}

nehilo, Этот блок не использует прерывания, и esp8266 чем то сильно занят что прерывает работу шаговика.
Я бы не рекомендовал использовать ШД на esp8266.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ardudue
Лейтенант
Сообщения: 318
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 16
Имя: Антон

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

#213

Сообщение Ardudue » 17.03.2021{, 17:44}

AlexCrane, почему блок делали на AccelStepper , а не на библиотеке GyverStepper ?

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

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

#214

Сообщение AlexCrane » 17.03.2021{, 20:09}

Ardudue, Не знал такую библиотеку при написании этих блоков. Есть потребность на библиотеке Гайвера?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ardudue
Лейтенант
Сообщения: 318
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 16
Имя: Антон

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

#215

Сообщение Ardudue » 18.03.2021{, 15:01}

AlexCrane писал(а):
17.03.2021{, 20:09}
Не знал такую библиотеку при написании этих блоков. Есть потребность на библиотеке Гайвера?
Да я тут инфракрасную паяльную станцию делаю и в качестве привода хочу использовать шаговый от DVD Sony , есть драйвер A4988 вот, и штудирую почву.
Ну и как всегда заглянул к Гайверу.
Гайвер то всегда говорит, что его самое лучшее ))).
Подумал, может, Вы сравнивали в работе разные библиотеки перед созданием блока.
Ну ,и вдруг уже делали блок с бибилиотекой Гайвера.

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

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

#216

Сообщение ingener » 18.03.2021{, 15:59}

Когда-то вопрос поднимался
viewtopic.php?f=63&t=6802
как отдельный код только для шаговика эта библиотека работает быстрее - частоты в десятки кГц - можно организовать деление шагов с очень плавным движением.
Но в проекте недопустимо наличие дисплея и прочих тяжелых блоков - скорость сразу на порядки падает.
Блоки же на AccelStep работают в любых громоздких проектах.
Приходится ограничиваться частотой 3800Гц - немного грубее работает мотор.

EgorKa
Сержант
Сообщения: 191
Зарегистрирован: 09.03.2019{, 17:49}
Репутация: 18
Имя: Egor

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

#217

Сообщение EgorKa » 19.03.2021{, 17:08}

ingener писал(а):
18.03.2021{, 15:59}
Но в проекте недопустимо наличие дисплея и прочих тяжелых блоков - скорость сразу на порядки падает.
Gayver пишет что у него там на аппаратных таймерах все организовано.
По сути все что крутится в loop не должно влиять на работу аппаратного таймера.
Что Вы смотрите на дисплее? Подключение дисплея по i2C?

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

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

#218

Сообщение AlexCrane » 19.03.2021{, 17:36}

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

EgorKa
Сержант
Сообщения: 191
Зарегистрирован: 09.03.2019{, 17:49}
Репутация: 18
Имя: Egor

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

#219

Сообщение EgorKa » 19.03.2021{, 17:46}

AlexCrane писал(а):
19.03.2021{, 17:36}
В этом блоке тоже на первом таймере все крутится....
да, я знаю. Я у ingener, хотел выяснить как отчего тормозит библиотека Гайвера.
По описанию Гайвера вроде его библиотека так же как и библиотека в Вашем блоке не должна тормозить.

Wadim77
Рядовой
Сообщения: 21
Зарегистрирован: 20.08.2020{, 19:23}
Репутация: 0
Имя: Wadim

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

#220

Сообщение Wadim77 » 20.03.2021{, 16:49}

AlexCrane писал(а):
17.03.2021{, 20:09}
Ardudue, Не знал такую библиотеку при написании этих блоков. Есть потребность на библиотеке Гайвера?
Добрый день!
Если есть возможность - сделайте на его библиотеке. Посмотрим как будет работать и думаю пользователи оценят Ваш труд. П.С. я удивлен - почему автор программы FL не интегрирует нормальные рабочие блоки от тогоже гайвера. Например - по умолчанию блок в программе управления шаговиком - древний и на нафиг никому не нужных моторчиках и драйвере ULN2003. я вообще не понимаю кто этим унынием пользуется. Очевидно же , сейчас сейчас все используют драйвера step/dir. Так же и с серво приводом. В программе дреняя библиотека управления сервой.хотя можно сделать по умолчанию блок с управлением ускорением. В общем - лично от меня просьба - сделайте пожалуйста блок управления ШД на основе библы от Гайвера. БОЛЬШИЕ ВАМ СПАСИБО.

Ответить

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