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

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

viktorz1
Рядовой
Сообщения: 11
Зарегистрирован: 24.09.2020{, 00:08}
Репутация: 0
Имя: Виктор

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

#161

Сообщение viktorz1 » 13.10.2020{, 20:40}

AlexCrane писал(а):
11.10.2020{, 19:37}
viktorz1, Попробуйте на ходу вместе со значением MaxSpeed поменять и значение Acceleration...
Как вариант можно наверное при регулировке MaxSpeed переключать константу Acceleration на максимальную. Думаю будет работать. Позже проверю. А можно как то в вашем блоке задать бесконечные шаги?
Свой проект я в принципе уже закончил, на макетке всё отрабатывает. Осталось закончить механику и обкатать уже в сборе. Единственное, что осталось, так это победить энкодер. Блоки которые нашёл на форуме, все пропускают шаги, к тому же всем нужны пины прерывания, а они заняты шильдой драйверов. Ну или энкодеры у меня сильно китайские :) Наверное придётся свою плату рисовать и разводить уже с учётом пинов для энкодера.
В любом случае спасибо за подсказки и участие. Я ещё на шаг продвинулся в использовании FLProg и созданию своих девайсов.

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

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

#162

Сообщение ingener » 14.10.2020{, 14:55}

AlexCrane писал(а):
11.10.2020{, 19:37}
ingener, На DUE можно получить 16000 шагов в секунду при использовании ускорений и 40000 ш/с при простом вращении... На расчеты ускорений требуются ресурсы...
купил DUE но что-то ругается.....
Arduino: 1.8.11 (Windows 10), Плата:"Arduino Due (Programming Port)"

ПРЕДУПРЕЖДЕНИЕ: библиотека TimerOne должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре sam.
C:\Users\AND\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void setup()':

pr2:34:8: error: 'class TimerOne' has no member named 'initialize'
Timer1.initialize( 100 ); // инициализация таймера 1,
pr2:35:8: error: 'class TimerOne' has no member named 'attachInterrupt'
Timer1.attachInterrupt ( timerInterrupt, 100 ); // задаем обработчик прерываний

нашел библиотеку DUE Timer master, может быть, надо ее применить? Но как заменить ее в блоках ШД? :shok:
https://github.com/ivanseidel/DueTimer

^

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

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

#163

Сообщение AlexCrane » 14.10.2020{, 18:26}

ingener, Вот тут выкладывал ранее для 1-го ШД для DUE, испытай, погоняй и отпишись viewtopic.php?t=5919&start=120#p94186
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#164

Сообщение ingener » 14.10.2020{, 20:46}

AlexCrane, пока танцы с бубнами - не видит домашний комп ее в ком-порту (Win 7)
на работе все было норм (Win10)
другие ардуины и ESP комп видит.....
если не получится победить. то только в пятницу смогу :smile37:

Отправлено спустя 19 минут 38 секунд:
сорри за кипишь - увидел - нужен был FTDI драйвер.
НО сигнала на 10 пине нет...
13 выход - индикатор генератора - 5 сек вкл 5 сек выкл

PS - если все убрать и просто инвертировать En то работает. но максимальная частота 10кГц всего (max speed ставил 16000) :smile37:
Вложения
due3.PNG
due2.PNG
due2.PNG (6.01 КБ) 2134 просмотра

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

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

#165

Сообщение ingener » 14.10.2020{, 22:10}

AlexCrane, пока такие наблюдения по блоку с DUE
- максимальная частота шагов как в ручном. так и с ускорениями - 10000
(изменение ускорения 1000...15000. на частоту не повлияло)
- блок не стартует по входу En через Rtrig - такое впечатление. что не успевает. Стартует нормально через одновибратор 100 мсек.

PS - настораживает фраза - "используется 6 прерывание" - как ее понять и применить? :smile37:
Вложения
1.flp
(250.14 КБ) 51 скачивание

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

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

#166

Сообщение ingener » 15.10.2020{, 21:10}

поменял период прерываний в главном блоке со 100 до 50 мкС (DUE все-таки)
частота увеличилась до 14.7 кГц.
дальше понижать (пробовал 20) - смысла нет. все равно лимит 14.7

PS - странное наблюдение - не работает блок RTrig, Может. он как-то не рассчитан на работу с DUE? проверялось подключением 13 вывода через Rtrig от генератора. НЕ мигает.....
Другие триггеры пока не проверялись.
Есть на форуме воадельцы DUE? :smile37:

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

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

#167

Сообщение AlexCrane » 15.10.2020{, 21:53}

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

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

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

#168

Сообщение ingener » 20.10.2020{, 10:16}

AlexCrane, сложно сделать выход из блока, на котором будет переменная, определяющая частоту работы внутреннего генератора?
смысл в том, чтобы ее использовать для пропорционального управления внешним генератором высокой частоты (до 32 кГц) с учетом ускорений.
пробовал сделать такое на базе скоростного счетчика (подсчет времени паузы импульсов), но что-то как-то это громоздко и нестабильно выходит(

Trivius
Рядовой
Сообщения: 11
Зарегистрирован: 16.08.2020{, 20:41}
Репутация: 0
Имя: Trivius

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

#169

Сообщение Trivius » 27.10.2020{, 09:47}

AlexCrane, Можете адаптировать Due версию для ESP8266?

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

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

#170

Сообщение Davit07 » 01.11.2020{, 21:23}

AlexCrane, доброго дня. Как использовать 2 шд в одном проекте?

Отправлено спустя 2 минуты 23 секунды:
Trivius писал(а):
27.10.2020{, 09:47}
AlexCrane, Можете адаптировать Due версию для ESP8266?
с помощью ESP возможно увеличить частоту ?
Есть пример ?

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

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

#171

Сообщение Davit07 » 07.11.2020{, 22:23}

AlexCrane,
Доброго дня . Подскажите пожалуйста . Как использовать 2 блока шагового двигателя на плате Ардуино ?
Спасибо

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

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

#172

Сообщение AlexCrane » 08.11.2020{, 16:04}

Davit07, Добавить блок ШД основной для 2х ШД v1.3 и два блока ШД1_v1.3 и ШД2_v1.3
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#173

Сообщение Davit07 » 09.11.2020{, 21:13}

AlexCrane писал(а):
08.11.2020{, 16:04}
Davit07, Добавить блок ШД основной для 2х ШД v1.3 и два блока ШД1_v1.3 и ШД2_v1.3
Да , но второго блока для платы Due не могу найти

Отправлено спустя 51 минуту 20 секунд:
Или как самостоятельно изменить номерацию?

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

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

#174

Сообщение AlexCrane » 10.11.2020{, 08:20}

Davit07, Тут есть для всех
ШД AlexCrane v1.3.ubl
(780.74 КБ) 68 скачиваний

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

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

#175

Сообщение Davit07 » 11.11.2020{, 20:00}

AlexCrane писал(а):
10.11.2020{, 08:20}
Davit07, Тут есть для всех
ШД AlexCrane v1.3.ubl
спасибо

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

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

#176

Сообщение Davit07 » 20.11.2020{, 01:27}

AlexCrane,
Доброго дня.
Прошу, в очередной раз подсказать. Как можно полученное значение с выхода Position обнулять?
Как произвести подсчет импульсов с точки А , до точки Б? . Хочу сделать лимп , и наблюдать
визуально перемешени в мм (0.01мм)
Благодарю за помощь .

Отправлено спустя 31 минуту 13 секунд:
Прочитав внимательно описание , нашел решение .

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

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

#177

Сообщение Davit07 » 22.11.2020{, 12:44}

Всем участникам форума, доброго дня.
Хочу обратиться к Вам за помощью.
Опыта в программирование нету и не могу понять в чем сложность.
Возможно пишу не той теме , но прошу не ругать.
На плпте, Mega 2560 создаю проект управление ШД с пункта меню (ввода характеристик с пункта меню). С одним блоком ШД все работает коректно, после добавления второго блока ШД, меню виснет.
1)Как можно исправить зависание или замедление работы блока меню?
2) Можно ли как то использовать блоки ШД на разных платах и соединить их как то по UART?
3) Какое самое эффективные решение будет в данном проекте ?
4) При использование 2х блоков ШД на одной плпте, какие пины рекомендуються использовать для корректной работы ?
Прилагаю то, что получилось, прошу строго не судить и указать на ошибки
Всем спасибо !

Отправлено спустя 38 минут 38 секунд:
Решил попробовать на плату DUE, вроде как мощнее. Но выкидывает ошибку при компиляции
Вложения
2020-09-23_23-50-59.png
меню шд1.flp
(1.06 МБ) 54 скачивания

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

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

#178

Сообщение ingener » 22.11.2020{, 18:54}

Возможно. нужно присвоить всем пунктам меню стартовое значение и поставить галочку - сохранять в еепром
Да. и у обоих блоков ШД назначены одинаковые пины выходов :smile110:

Аватара пользователя
leons
Сержант
Сообщения: 141
Зарегистрирован: 18.06.2017{, 17:07}
Репутация: 3

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

#179

Сообщение leons » 23.11.2020{, 00:14}

К выше перечисленному добавлю , в блоке значение пункта меню добавить галочку "разрешение обновления значения " появится вход инвертируйте
на каком значении шага зависает ?

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

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

#180

Сообщение Davit07 » 23.11.2020{, 01:27}

ingener писал(а):
22.11.2020{, 18:54}
Возможно. нужно присвоить всем пунктам меню стартовое значение и поставить галочку - сохранять в еепром
Да. и у обоих блоков ШД назначены одинаковые пины выходов :smile110:
до блоков ШД ещё не дошел , потому и не произвел изменения . Присваивал , ставил галочку сохранить , но после появляются какие то символы на другой строке. Исчезают , после снятие галочки

Отправлено спустя 22 минуты 28 секунд:
ingener писал(а):
15.10.2020{, 21:10}
поменял период прерываний в главном блоке со 100 до 50 мкС (DUE все-таки)
частота увеличилась до 14.7 кГц.
дальше понижать (пробовал 20) - смысла нет. все равно лимит 14.7

PS - странное наблюдение - не работает блок RTrig, Может. он как-то не рассчитан на работу с DUE? проверялось подключением 13 вывода через Rtrig от генератора. НЕ мигает.....
Другие триггеры пока не проверялись.
Есть на форуме воадельцы DUE? :smile37:

Есть), поздно прочитал ваше сообщение . Данный блок тестировал на 5и платах : Nano, Uno, Mega, Due, Esp. Максимальную скорость получилось развить 1200 об/мин, но на кнопку блок не реагируб для остановки . С Esp работает кнопка , но разогнать больше не получилось , на данных скоростях очень большое ускорение и ШД пропускает шаги и тормозит. Сейчас иметься ШД с обратной связью, проведу тесть и сообщу максимальную скорость на плате Due.

Ответить

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