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

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

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

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

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

#1

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

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

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

Работает на библиотеке 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 КБ) 313 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 288 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 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 КБ) 210 скачиваний
Вложения
ШД AlexCrane v1.3.ubl
(780.74 КБ) 166 скачиваний
Последний раз редактировалось 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
Лейтенант
Сообщения: 503
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 116
Откуда: Ульяновск
Имя: Александр

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

#202

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

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

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
Рядовой
Сообщения: 5
Зарегистрирован: 20.08.2020{, 19:23}
Репутация: 0
Имя: Wadim

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

#204

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

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

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

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

#205

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

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

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

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

#206

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

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

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

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

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

#207

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

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

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

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

#208

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

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

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

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

#209

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

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

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

AndrewPan
Рядовой
Сообщения: 5
Зарегистрирован: 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 МБ) 3 скачивания
flprog2.jpg

Ответить

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