Управление несколькими шаговиками по протоколу Step, Dir

Обсуждение и вопросы по урокам Ардуино
ПАлександрР
Сообщения: 5
Зарегистрирован: 13 ноя 2016, 17:36

Управление несколькими шаговиками по протоколу Step, Dir

Сообщение ПАлександрР » 13 ноя 2016, 17:49

Здравствуйте. А как решить задачу управления двумя или тремя шаговыми двигателями одновременно но с разными скоростями протоколом Step, Dir ?


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 13 ноя 2016, 19:15

Создаем несколько объектов типа StepDirDriver:

Код: Выделить всё

StepDirDriver myMotor1(10, 11, 12);
StepDirDriver myMotor2(7, 8, 9);


Для каждого вызываем свои функции установки режимов и скорости вращения:

Код: Выделить всё

  myMotor1.setMode(0, false);  // режим без фиксации при остановке
  myMotor1.setDivider(10);     // делитель частоты 10 (1 оборот в сек)
  myMotor2.setMode(0, true);  // режим c фиксацией при остановке
  myMotor2.setDivider(20);     // делитель частоты 20 (0,5 оборотов в сек)


В обработчике прерывания вызываем:

Код: Выделить всё

void  timerInterrupt() {
  myMotor1.control(); // управление двигателем
  myMotor2.control(); // управление двигателем
}


Для управления используем функцию step():

Код: Выделить всё

myMotor1.step(100); // сделать двигателю 1 100 шагов против часовой стрелки
myMotor2.step(-50); // сделать двигателю 2 50 шагов по часовой стрелке


Все как в уроке 35, только для нескольких экземплярах класса StepDirDriver

ПАлександрР
Сообщения: 5
Зарегистрирован: 13 ноя 2016, 17:36

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение ПАлександрР » 18 ноя 2016, 07:22

Здравствуйте!
Разрешено ли для нескольких шаговых приводов использовать один пин для сигнала ENABLE (для экономии пинов ARDUINO)?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 18 ноя 2016, 11:40

Можно его на драйверах оставить не подключенным. На драйверах будут разрешающие уровни.

ПАлександрР
Сообщения: 5
Зарегистрирован: 13 ноя 2016, 17:36

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение ПАлександрР » 06 фев 2017, 12:59

Добрый день. Пока с двумя осями получается. В библиотеки разгон движков не предусмотрен? каким образом реализовать?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 06 фев 2017, 13:03

Здравствуйте! Да разгон не реализован. Библиотека простая, компактная, очень быстрая.
Наверное, можно скорость ступенями менять. Хотя, по хорошему надо другую библиотеку с такой функцией сделать.

ПАлександрР
Сообщения: 5
Зарегистрирован: 13 ноя 2016, 17:36

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение ПАлександрР » 08 фев 2017, 14:20

Здравствуйте.
Есть желание заменить в библиотеке кол-во шагов на long, что может помешать?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 08 фев 2017, 15:10

В принципе ничего не мешает. Только выполнение кода будет требовать больше времени. Я бы лучше этого не делал. Если вызывать метод contorl() в быстром цикле и с несколькими двигателями, то это может привести к неприятностям. Я старался сделать библиотеку максимально быстрой.

ПАлександрР
Сообщения: 5
Зарегистрирован: 13 ноя 2016, 17:36

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение ПАлександрР » 08 фев 2017, 15:24

А DUE не использовали в своей практике?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 08 фев 2017, 15:28

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

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 07:59

Здравствуйте Эдуард!
Подскажите пожалуйста, а куда и какой надо добавить код, для того, чтобы можно было изменять скорость вращения двигателей в реальном времени.
Спасибо!

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 08:04

Забыл указать, скорость двигателей должна быть разная

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 05 апр 2017, 11:22

Здравствуйте!
Скорость двигателей устанавливается функцией setDivider().

Код: Выделить всё

myMotor1.setDivider(10);     // делитель частоты двигателя 1 (1 оборот в сек)
myMotor2.setDivider(20);     // делитель частоты двигателя 2 (0,5 оборотов в сек)

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 11:36

Спасибо.
А как мне тогда можно командой AT изменить скорость с начало одного двигателя потом другого, никак не могу понять (

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 11:41

Если я пишу ATD = 10 то двигатели меняют скорость одновременно

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 05 апр 2017, 11:54

Если вы имеете в виду драйвер шагового двигателя с AT командами из уроков 31 и 35, то там поддерживается только один двигатель. Надо изменять протокол и программу.

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 12:03

Да я про это и имел в виду, пытаюсь изменить, пока ничего не получается

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 05 апр 2017, 12:31

Начните с протокола. Там должен добавиться номер двигателя. Лучше его совместить с командами. Например, не ATS, а ATS1 и ATS2.

lexar
Сообщения: 6
Зарегистрирован: 05 апр 2017, 07:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение lexar » 05 апр 2017, 12:36

Понял, спасибо

Boriss
Сообщения: 1
Зарегистрирован: 21 ноя 2018, 23:26

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Boriss » 21 ноя 2018, 23:36

Всем здравствуйте!
При управлении 3 двигателями в режиме без фиксации при остановке(myMotor_x.setMode(0, false);), двигатели останавливаются одновременно после остановки двигателя, который был запущен первым. При myMotor_x.setMode(0, true); все работает нормально, двигатели управляются не зависимо. В чем причина?

Лев
Сообщения: 14
Зарегистрирован: 05 июн 2019, 19:06

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Лев » 06 июн 2019, 00:00

Добрый вечер.
Кто нибудь может поделится со школьником библиотекой StepDirDriver???
Заранее спасибо!!!

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Эдуард » 06 июн 2019, 23:19

Здравствуйте!
Напишите в контакты сайта mypractic.ru. Я вам на месяц доступ открою.

Лев
Сообщения: 14
Зарегистрирован: 05 июн 2019, 19:06

Re: Управление несколькими шаговиками по протоколу Step, Dir

Сообщение Лев » 07 июн 2019, 08:09

Хорошо, Спасибо.


Вернуться в «Уроки Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей