Avtonova37.ru

Авто мастер
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое step dir для шаговых двигателей

Шаговые двигатели и моторы Ардуино 28BYJ-48 с драйвером ULN2003

В этой статье мы поговорим о шаговых двигателях в проектах Ардуино на примере очень популярной модели 28BYJ-48. Так же как и сервоприводы, шаговые моторы являются крайне важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора. В этой статье вы найдете описание схемы работы шаговых двигателей, пример подключения к Arduino с помощью драйверов на базе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.

Шаговый двигатель – принцип работы

Шаговый двигатель – это мотор, перемещающий свой вал в зависимости от заданных в программе микроконтроллера шагов и направления. Подобные устройства чаще всего используются в робототехнике, принтерах, манипуляторах, различных станках и прочих электронных приборах. Большим преимуществом шаговых двигателей над двигателями постоянного вращения является обеспечение точного углового позиционирования ротора. Также в шаговых двигателях имеется возможность быстрого старта, остановки, реверса.

Шаговый двигатель обеспечивает вращения ротора на заданный угол при соответствующем управляющем сигнале. Благодаря этому можно контролировать положение узлов механизмов и выходить в заданную позицию. Работа двигателя осуществляется следующим образом – в центральном вале имеется ряд магнитов и несколько катушек. При подаче питания создается магнитное поле, которое воздействует на магниты и заставляет вал вращаться. Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

Упрощенные анимированные схемы работы шагового двигателя

Основные виды шаговых моторов:

ДОКУМЕНТАЦИЯ

Документация

Инициализация

Библиотека поддерживает два типа драйверов:

  • STEPPER2WIRE – специализированный 2-х проводной драйвер для шагового мотора с протоколом STEP-DIR, например A4988, DRV8825, TMC2208 и прочие.
  • STEPPER4WIRE и STEPPER4WIRE_HALF – 4-х проводной драйвер, т.е. полномостовой (например L298N) или транзисторная сборка (например ULN2003). STEPPER4WIRE управляет мотором в полношаговом режиме (выше скорость и момент).
  • STEPPER4WIRE_HALF – в полушаговом (меньше скорость и момент, но больше шагов на оборот и выше точность).

При инициализации указывается тип драйвера, количество шагов на оборот и пины:

  • GStepper stepper(steps, step, dir); // драйвер step-dir
  • GStepper stepper(steps, step, dir, en); // драйвер step-dir + пин enable
  • GStepper stepper(steps, a1, a2, b1, b2); // драйвер 4 пин
  • GStepper stepper(steps, a1, a2, b1, b2, en); // драйвер 4 пин + enable
  • GStepper stepper(steps, a1, a2, b1, b2); // драйвер 4 пин полушаг
  • GStepper stepper(steps, a1, a2, b1, b2, en); // драйвер 4 пин полушаг + enable

Где steps – количество шагов на один оборот вала для расчётов с градусами, step , dir , a1 , a2 , b1 , b2 – любые GPIO на МК, en – пин отключения драйвера EN, любой GPIO на МК. Пин en опциональный, можно не указывать.

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 16 дек 2014, 22:04

Ура! Шагает паразит! Да, на clk- срабатывает. Если проводок «тюлюпать» туды сюды то даже вращается (тоже тудф сюды ) светодиод то потухнет то погаснет @RUN@
Можете подсказать что дальше? Ардуино уже на макетке я установил и дрова поставил.

Читать еще:  Чем отличается масло в коробке от двигателей

Добавлено спустя 3 часа 43 минуты 38 секунд:
В опчем не знаю.. туда аль не туда, но загрузил я в ардуино про тестовую прошивку (в папке ардуино софта) степ-чего то там. Подключил методом тыка. в общем на пине 8 ардуины мотор начал делать попытки шагов. Впрочем делает он это и если воткнуть провод драйвера и на пин 9 и 10 и.. короче на нескольких..
Пойду посмотрю, что там в этом етстовом файле зашито в плане шагов.

Вот.. попробовал залить туда прошивку степреволюшн (почему такое название?) и изменил кол-во шагов с 200 до 1200
ну и на ходу попереключал черные переключалки на драйвере.. мотор начал какой-то странный танец:

Причем довольно сильно нагрелся

Re: Arduino pro mini для управления шаговым двигателем

Myp » 17 дек 2014, 00:16

переключать на ходу нельзя, убьёшь драйвер.(ну то есть в некоторых случаях можно но пока не знаешь нельзя)

с дуру можно и Х.. сломать, ты бы вначале прочитал что там в примере за драйвер используется
там прям сверху английским по бело написано.
пример вобще для другого типа драйверов и для драйвера степ/дир вобще не подходит.

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 17 дек 2014, 01:03

Re: Arduino pro mini для управления шаговым двигателем

Myp » 17 дек 2014, 11:38

Re: Arduino pro mini для управления шаговым двигателем

RootAdmin » 17 дек 2014, 15:05

То, что заработало — уже хорошо.
Будем ваять скрипт.
Для начала — попробуем просто включить двигатель и повернуть.
Ногу 6 подключаем к STEP
Ногу 5 подключаем к DIR

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 17 дек 2014, 16:01

Re: Arduino pro mini для управления шаговым двигателем

RootAdmin » 17 дек 2014, 16:14

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 17 дек 2014, 17:00

В обчем не увидел сначала сообщени. подключил 6 на clk+ и 5 на clk-
Мотор начал типа двигаться, то так..не охотно, типа паровоза старого «чух-чух-чух» издаёт звуки и потихоньку вращается по часовой. Это ожидаемо?

п.с. сейчас полез переключать правильно.

Добавлено спустя 4 минуты 19 секунд:
Так не получилось.. ничего. просто всё молчит. Мотор отруки вращается, т.е. на него ничего не идёт.

Re: Arduino pro mini для управления шаговым двигателем

Myp » 17 дек 2014, 17:42

так работать не будет.
если импульсы управления положительные то используем провод CLK+
если отрицательные то CLK-
на драйвере они сделаны отдельно тупо для удобства, чтобы чтобы не пришлось делать инверсию выводов в программе прошивке контроллера.

в нашем случае контакты с знаком минус вобще не нужны и про них можно забыть.
использовать только контакты с знаком плюс
CLK расшифровывается как CLocK по нашему «Тик», как часы «тик-тик-тик», то-есть на этот провод нужно подавать импульсы для делания шага, другое название STEP.
EN это ENable, то-есть этим проводов включается и выключается драйвер.
CW это CW/CCW , ClockWise/CounterClockWise. направление, по часовой стрелки/против часовой стрелки, тоесть Dir от Direction. подали напряжение крутимся по часовой, убрали напряжение — крутимся против.

Читать еще:  Что делает дроссельная заслонка в инжекторном двигателе

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 17 дек 2014, 17:54

Re: Arduino pro mini для управления шаговым двигателем

Myp » 17 дек 2014, 22:43

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 17 дек 2014, 22:58

Re: Arduino pro mini для управления шаговым двигателем

Myp » 18 дек 2014, 10:28

Re: Arduino pro mini для управления шаговым двигателем

Revenger » 18 дек 2014, 13:23

Re: Arduino pro mini для управления шаговым двигателем

RootAdmin » 18 дек 2014, 13:48

Наверно я не сильно хорошо смотрел на фото, но ИМХО стоят там на развязке обычные оптроны. У светодиода которых анод и катод ессно. Вот эти аноды и катоды выведены на клеммы. И подключай как хочешь. Я бы все катоды (выводы с «-«) подключил на землю. Землю ардуины. А выводы с «+» — использовал для управления.

На фото на 5 вывод ардуины прицеплен какой контакт драйвера?
Dir? Поменяйте местами.

Добавлено спустя 2 минуты 39 секунд:
И да, скетч еще недоработан. Двигатель должен вращаться с частотой заданной в timerLoadValue=SetupTimer2(120);
Шестьдесят шагов в секунду.

Настройка микрошага драйвера DRV8825.

Драйвер DRV8825 может работать в микрошаговом режиме, то есть может подавать питание на катушки с промежуточным уровнем. Например, если взять двигатель NEMA17 с шагом 1.8 градусов или 200 шагов на оборот, в режиме 1/4, двигатель будет выдавать 800 шагов за оборот.

Дня настройки микрошага на драйвере DRV предусмотрены три выхода, а именно M0, M1 и M2. Установив соответствующие логические уровни для этих выводов, можно выбрать режим микрошага.

Выводы M0, M1 и M2 в микросхеме DRV8825 подтянуты резистором к земле, поэтому, если не подключать их, двигатель будет работать в режиме полного шага.

Система охлаждения DRV8825.

При интенсивной работе микросхемы драйвер DRV8825 начинает сильно греться и если температура превысит предельное значение, то он может сгореть. По документации DRV8825 может работать с током до 2,5 А. на катушку, но на практике микросхема не греется, если ток не превышает 1,2 А. на катушку. Поэтому если ток выше 1,2 А. необходимо устанавливать радиатор охлаждения, который идет в комплекте.

↑ Богатство выбора

Из готовых — наиболее распространённые и недорогие драйверы на микросхемах Allegro A4988 (до 2А), Texas Instruments DRV8825 (до 2,5А).
Поскольку модули изначально разрабатывались для использования в 3D принтерах типа Rep-rap проекта Arduino, они не являются законченными модулями (например, им нужно еще питание логики (+5V), которое подается с так называемой рампы (Ramp).

Еще есть решения на DRV8811 (до 1,9 А), A3982 (до 2 А), A3977 (до 2,5 А), DRV8818 (до 2,5 А) DRV8825 (до 2,5 А), Toshiba TB6560 (до 3 А) и другие.

Читать еще:  Что будет если завести двигатель без масла в акпп

Поскольку мне интересно что-то сделать самому, плюс появилась возможность «попробовать на вкус» микросхемы Allegro A3982 и A3977, решил сделать пару драйверов самостоятельно.

Готовые решения на A4988 не понравились, прежде всего, из-за миниатюризации размеров печатной платы в ущерб хорошему охлаждению. Типовое сопротивление открытых транзисторов у A4388 при токе 1,5А 0,32+0,43 Ом, плюс 0,1-0,22 Ома «измерительный» резистор — получается около 0,85 Ом. А таких каналов два, и хотя и работают они импульсно, но 2-3 Ватта тепла надо рассеивать. Ну не верю я в многослойную плату и малюсенький радиатор охлаждения — в даташите нарисована плата гораздо больших размеров.

Провода мотора нужно сделать короткими, драйвер устанавливать рядом с двигателем. Существует 2 технических решения в звукотехнике: длинный сигнальный кабель к усилителю + короткие провода к акустической системе, или короткий сигнальный кабель к усилителю + длинные провода, а акустической системе. Оба решения имеют свои плюсы и минусы. С моторами — так же. Я выбрал длинные провода управления и короткие провода к мотору.

Управляющие сигналы — «шаг» (step), «направление» (dir), «включение» (enable), индикация состояния сигналов управления. Некоторые схемы не используют сигнал «Enable», но это приводит в режиме простоя к ненужному нагреву и микросхемы и двигателя.

Одно питание 12-24 вольта, источник питания логики (+5B) — на плате. Размеры платы — достаточные для хорошего охлаждения, двухсторонняя печать с большой областью «меди», возможность приклеить на микросхему радиатор (применяемой для охлаждения памяти видеокарт).

Давайте мы перейдём к интересной части нашей статьи. Это описание двух библиотек для работы с двигателями myStepper и AccelStepper. Больше буду обращать внимание на библиотеку AccelStepper, так как у нее больше функции, а именно:

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

Определение конфигурации моторов

AccelStepper mystepper (1, pinStep, pinDirection);

Для управления шаговым двигателем.

AccelStepper mystepper (2, pinA, pinB);

Биполярный ШД, управляемый Н-мостом.

AccelStepper mystepper (4, pinA1, pinA2, pinB1, pinB2);

Униполярный мотор, управляемый четырмя транзисторами.

Максимальная скорость двигателя. Скорость заведомо низкая. Сначала моторчик ускоряется до этой скорости, затем снижает её

Ускорение шаговика, в шагах в секунду.

Управление положением

Переместиться в абсолютно указанное положение. Само движение запускается функцией run ().

Переместиться в относительно указанное положение. Само движение запускается функцией run (). Значение distance может быть больше или меньше нуля.

Вернуть текущее абсолютное положение.

Вернуть расстояние до указанного положения. Может использоваться для проверки, достиг ли моторчик указанной конечной точки.

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Начать движение и подождать когда двигатель достигнет указанной точки. Функция не осуществляет возврата пока он не остановится.

Управление скоростью

Установить скорость в шагах за секунду. Сам процесс запускается функцией runSpeed ().

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Как видите функции управления в принципе не сложны, достаточно посидеть несколько вечеров.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector