Страница 3 из 16

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

Добавлено: 04.12.2019{, 22:24}
AlexCrane
Бок управления шаговым двигателем на библиотеке AccelStepper

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

Работает на библиотеке 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 КБ) 749 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
ТЕСТ ШД v6.flp
(225.63 КБ) 687 скачиваний
- здесь блоки старые оставил просто как пример (новые внизу)
------------------------------------------------
Обновил 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 КБ) 1086 скачиваний

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

Добавлено: 31.01.2020{, 10:47}
ksndz
Всем добра. Александр, а как блок работает с дисплеями, в частности с I2C. Как и везде - тормоза, или нет? Спасибо.

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

Добавлено: 31.01.2020{, 13:11}
AlexCrane
ksndz, Скорее всего да, если для дисплеев типа 1602, 4004 использовать сторонние блоки с выводом на экран раз в несколько циклов или секунд, то приемлемо

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

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

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

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

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

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

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

Добавлено: 02.02.2020{, 21:45}
AlexCrane
Davit07, Внес кое какие изменения, попробуйте и отпишитесь
ШД7.png
ТЕСТ ШД v7 AccelStart NoAccelStop.flp
(321.13 КБ) 145 скачиваний

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

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

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

Добавлено: 05.02.2020{, 22:36}
Davit07
AlexCrane, <Большое Вам спасибо за пример. Сложно было разобраться для меня , так как я далек от этого всего )))
Блок протестил и добился нужного результата. В блоке не нравиться работа ШД , как то не очень плавно он работает . Пример не окончателен, но в процессе доработки , думаю разберусь. Прилагаю пример. Прошу указать на ошибки.
Большое спасибо Вам за помощь

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

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

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

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

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

Добавлено: 21.02.2020{, 10:50}
ingener
Что-то перестали компилироваться блоки в версии 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'

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

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

Добавлено: 20.03.2020{, 14:23}
Gennadij2
Здраствуйте,

у меня токая проблема, если я делаю с одним ШД всё работает, а если с двумя то 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]

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

Добавлено: 20.03.2020{, 16:05}
ingener
зачем два раза размещаете основной блок

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

Добавлено: 20.03.2020{, 17:37}
Gennadij2
Хорошо. Спасибо, сейчас попробую.

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

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

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

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

Добавлено: 31.03.2020{, 11:29}
ingener
может быть дело в неверной библиотеке
надо пробовать именно ту что в первом посту указана

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

Добавлено: 06.04.2020{, 10:34}
Sanbi4
Здравствуйте, есть возможность создать данный блок, но под NodeMCU v3 и esp32?

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

Добавлено: 06.04.2020{, 17:23}
AlexCrane
Обновил блоки до версии 1.3 скачать здесь в самом низу

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

Добавлено: 06.04.2020{, 17:25}
AlexCrane
Sanbi4, Блоки используют прерывания, как использовать прерывания на ESP я не знаю.

Если без прерываний то попробуй пример из поста 13 viewtopic.php?t=5919#p83028

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

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