Урок 2. как подключить a4988 (drv8825) к arduino? скетч, библиотека

Как подключить моторчик к Arduino

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • мотор постоянного тока (Motor DC);
  • транзистор полевой/биполярный;
  • драйвер двигателей L298N;
  • провода «папа-папа», «папа-мама».

Перед выбором способа управления двигателем от Arduino Uno r3, уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.

Скетч. Подключение мотора напрямую

Подключение мотора к Ардуино напрямую — самый простой вариант включения вентилятора на Arduino или машинки. Команда для включения двигателя не отличается, от команды при подключении светодиода к микроконтроллеру. Функция digitalWrite включает/выключает подачу напряжения на цифровой порт, к которому подключен двигатель постоянного тока. Соберите схему и загрузите программу.

Пояснения к коду:

  1. для подключения мотора без драйвера можно использовать любой порт;
  2. если двигатель не включается, то, возможно, не хватает силы тока на цифровом выходе, подключите двигатель через транзистор к порту 3,3V или 5V.

Скетч. Подключение мотора через транзистор

Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.

Пояснения к коду:

  1. при необходимости можно подключить два мотора FA-130 к Ардуино;
  2. в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.

Скетч. Подключение мотора через драйвер

Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.

Источник

Работа схемы

Схема устройства представлена на следующем рисунке.

Чтобы подавать питание на соответствующие катушки шагового двигателя мы будем использовать цифровые контакты 8, 9, 10 и 11 платы Arduino, к которым подключены соответствующие контакты драйвера двигателей ULN2003. Потенциометр, с помощью которого мы будем управлять вращением шагового двигателя, подключен к аналоговому контакту A0 платы Arduino.

Драйвер мотора запитывается от контакта 5V платы Arduino. Но если вы будете подсоединять какую-нибудь нагрузку к шаговому двигателю, то вам потребуется внешний источник питания для драйвера мотора. Мы в нашем примере эксплуатируем шаговый двигатель без нагрузки, поэтому нам хватило питания от платы Arduino. И не забудьте соединить землю платы Arduino с землей драйвера мотора.

Шаг 5: Что такое мост H-bridge?

H-Bridge — схема, состоящая из 4 переключателей, которые могут безопасно управлять двигателем постоянного тока или шаговым двигателем. Эти переключатели могут быть реле или (чаще всего) транзисторами. Транзистор представляет собой твердотельный переключатель, который можно закрыть, посылая небольшой ток (сигнал) на один из его контактов.

В отличие от одного транзистора, который позволяет вам контролировать скорость двигателя, H-мосты позволяют вам также контролировать направление вращения двигателя. Он делает это, открывая различные переключатели (транзисторы), чтобы ток тек в разных направлениях и, таким образом, изменяя полярность на двигателе.

H-Bridges может помочь вам предотвратить перегорания вашего Arduino моторами, которыми вы пользуетесь. Двигатели являются индукторами, а это означает, что они хранят электрическую энергию в магнитных полях. Когда ток больше не посылается двигателям, магнитная энергия возвращается в электрическую энергию и может повредить компоненты. H-Bridge помогает изолировать ваш Arduino лучше всего. Вы не должны подключать двигатель непосредственно к Arduino.

Хотя H-Bridges можно легко сделать самому многие предпочитают покупать H-Bridge (например, чип L293NE / SN754410) из-за удобства. Это чип, который мы будем использовать в этом уроке. Физические номера контактов и их назначение ниже:

  • Пин 1 (1, 2EN) → Мотор 1 Включен/Выключен (HIGH/LOW)
  • Пин 2 (1A) → Мотор 1 логический выход 1
  • Пин 3 (1Y) → Мотор 1 терминал 1
  • Пин 4 → Земля
  • Пин 5 → Земля
  • Пин 6 (2Y) → Мотор 1 терминал 2
  • Пин 7 (2A) → Мотор 1 логический выход 2
  • Пин 8 (VCC2) → Питание для двигателей
  • Пин 9 → Мотор 2 Включен/Выключен (HIGH/LOW)
  • Пин 10 → Мотор 2 логический выход 1
  • Пин 11 → Мотор 2 терминал 1
  • Пин 12 → Земля
  • Пин 13 → Земля
  • Пин 14 → Мотор 2 терминал 2
  • Пин 15 → Мотор 2 логический выход 2
  • Пин 16 (VCC1) → Питание для H Bridge (5В)

Код для Arduino управления драйвером A4988 (DRV8825)с использованием библиотеки AccelStepper.

Управление шаговым двигателем без библиотеки идеально подходит для простых проектов на Arduino с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, вам понадобится библиотека. Итак, для нашего следующего примера будем использовать библиотеку шаговых двигателей под названием AccelStepper library.

AccelStepper library поддерживает.

Ускорение и замедление. Несколько одновременных шаговых двигателей с независимыми одновременными шагами на каждом шаговом двигателе. Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.

Установка библиотеки AccelStepper.

Чтобы установить библиотеку, перейдите в «Скетч» -> «Подключить библиотеку» -> «Управление» библиотеками. Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте свой поиск, набрав «Accelstepper». Щелкните первую запись и выберите «Установка».

Код Arduino с использованием библиотеки AccelStepper.

Вот простой пример, который ускоряет шаговый двигатель в одном направлении, а затем замедляется до полной остановки. Как только двигатель делает один оборот, меняет направление вращения. Данный цикл повторяется снова и снова.

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>
// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1
// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Устанавливаем максимальную скорость, коэффициент ускорения,
  // начальную скорость и целевую позицию
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(50);
  myStepper.setSpeed(200);
  myStepper.moveTo(100);
}
void loop() {
  // Изменение направления вращения, когда двигатель достигнет заданного положения
  if (myStepper.distanceToGo() == 0) 
  {
    myStepper.moveTo(-myStepper.currentPosition());
  }
  // Передвинуть на 1 шаг
  myStepper.run();
}

Пояснение к коду:

Подключаем библиотеку AccelStepper.

#include <AccelStepper.h>

Дальше определяем выводы Arduino, к которым подключаются
выводы
STEP и DIR A4988. Мы также
устанавливаем
motorInterfaceType на 1. (1 означает внешний шаговый драйвер с
выводами
Step и Direction).

const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1

Затем мы создаем экземпляр библиотеки под названием myStepper.

// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

В функции настройки мы сначала устанавливаем максимальную скорость
двигателя равной тысяче. Затем мы устанавливаем коэффициент ускорения для
двигателя, чтобы добавить ускорение и замедление к движениям шагового
двигателя. Дальше устанавливаем обычную скорость 200 и количество шагов,
которое мы собираемся переместить, например, 200 (поскольку NEMA 17 делает 200
шагов за оборот).

void setup() {
    myStepper.setMaxSpeed(1000);
    myStepper.setAcceleration(50);
    myStepper.setSpeed(200);
    myStepper.moveTo(100);
}

В основном цикле loop() используем оператор if, чтобы
проверить, как далеко двигателю нужно проехать (путем чтения свойства
distanceToGo), пока он не достигнет целевой позиции (установленной moveTo). Как
только
distanceToGo достигнет нуля, поменяем направление вращения двигателя в
противоположном направлении, изменив значение
moveTo на отрицательное по
отношению к его текущему значению. Теперь вы заметите, что в конце цикла мы
вызвали функцию
run (). Это самая важная функция, потому что шаговый двигатель
не будет работать, пока эта функция не будет выполнена.

void loop() {
    if (myStepper.distanceToGo() == 0) 
        myStepper.moveTo(-myStepper.currentPosition());
    myStepper.run();
}

Это небольшой пример использования библиотеки AccelStepper. В следующем уроке подробнее рассмотрим данную библиотеку и сделаем пару классных примеров использования шаговых двигателей в Arduino проектах.

Понравился Урок 2. Как подключить A4988 (DRV8825) к Arduino? Скетч, библиотека? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 107 Скачать
Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 86 Скачать
библиотека AccelStepper.zip 86 Kb 104 Скачать

БИБЛИОТЕКА GYVERSTEPPER

GyverStepper v1.5

GyverStepper – производительная библиотека для управления шаговыми моторами

  • Поддержка 4х фазных (шаг и полушаг) и STEP-DIR драйверов
  • Автоматическое отключение питания при достижении цели
  • Режимы работы:
    • Вращение с заданной скоростью
    • Следование к позиции с ускорением и ограничением скорости
    • Следование к позиции с заданной скоростью (без ускорения)
  • Быстрый алгоритм управления шагами
  • Два алгоритма плавного движения:
    • Модифицированный планировщик из библиотеки AccelStepper: максимальная плавность и скорость до 7’000 шагов/сек с ускорением (для активации пропиши дефайн SMOOTH_ALGORITHM )
    • Мой планировщик обеспечивает максимальную производительность: скорость до 30’000 шагов/сек с ускорением (активен по умолчанию). Т.е. на небольшой скорости экономит кучу процессорного времени для других задач.

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версия 1.1: добавлена возможность плавно менять скорость в режиме KEEP_SPEED. Добавлены примеры multiStepper и accelDeccelButton Версия 1.2: добавлена поддержка ESP и других Ардуино-совместимых плат Версия 1.3: исправлена логика setTarget(val, RELATIVE) Версия 1.4: добавлена задержка между STEP HIGH и STEP LOW

Принцип работы шагового двигателя

В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).

Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.

БИБЛИОТЕКА GYVERSTEPPER

GyverStepper v1.5

GyverStepper – производительная библиотека для управления шаговыми моторами

  • Поддержка 4х фазных (шаг и полушаг) и STEP-DIR драйверов
  • Автоматическое отключение питания при достижении цели
  • Режимы работы:
    • Вращение с заданной скоростью
    • Следование к позиции с ускорением и ограничением скорости
    • Следование к позиции с заданной скоростью (без ускорения)
  • Быстрый алгоритм управления шагами
  • Два алгоритма плавного движения:
    • Модифицированный планировщик из библиотеки AccelStepper: максимальная плавность и скорость до 7’000 шагов/сек с ускорением (для активации пропиши дефайн SMOOTH_ALGORITHM )
    • Мой планировщик обеспечивает максимальную производительность: скорость до 30’000 шагов/сек с ускорением (активен по умолчанию). Т.е. на небольшой скорости экономит кучу процессорного времени для других задач.

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версия 1.1: добавлена возможность плавно менять скорость в режиме KEEP_SPEED. Добавлены примеры multiStepper и accelDeccelButton Версия 1.2: добавлена поддержка ESP и других Ардуино-совместимых плат Версия 1.3: исправлена логика setTarget(val, RELATIVE) Версия 1.4: добавлена задержка между STEP HIGH и STEP LOW

Алгоритм

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

Вот его принцип:

Вводим следующие константы: — verticalSticCenter – значения, соответствующие центральному положению джойстика в вертикальной оси (средняя скорость робота равна ); — horizontalSticPin – значения, соответствующие центральному положению джойстика в горизонтальной оси (скорость разворота равна ) — k – коэффициент отклонения, от центральных положений, позволяет исключить влияния «шумов» на показания в положении полной остановки робота) Считываем показания вертикальной оси потенциометра в переменную speed , хранящую значение средней скорости. Считанные значения нужно перевести в диапазон типа byte , разделив на 4 (можно использовать функцию map ), в таком случае средняя скорость будет изменяться от 255 до 0. Затем вычесть из них значение verticalSticCenter , теперь средняя скорость изменяется от 128 до -128

Но для удобства расчетов хотелось бы видеть изменения скорости в диапазоне от -128 до 128 (тогда центральное положение будет давать 0, что очень важно), для этого делим показания на единицу. Смотрим, если значения относительной скорости отличаются от 0 менее чем на k (джойстик находиться в центральном положении по вертикальной оси), то приравниваем ее к 0

Считываем значения горизонтальной оси в переменную horizontal_value так же приведя к диапазону byte , будем называть их скоростью поворота. Если значения скорости поворота отклонились более, чем на k от центра в право, то скорость левого двигателя приравниваем к сумме средней скорости и величине отклонения в угловой скорости от условного 0 (вычитаем значения скорости поворота из значений ее центра), а скорость правого к их разности. Если значения скорости поворота отклонились более, чем на k от центра влево, то скорость левого двигателя приравниваем к разности средней скорости и величине отклонения от условного центра (из скорости поворота вычитаем значения условного 0), а правого к их сумме. Не выполнение условий пунктов 5 и 6 говорит о том, что значения скорости поворота лежат в пределах центра (условного 0), в этом случае приравниваем скорости обоих двигателей к средней скорости. Теперь необходимо ограничить полученные значения скоростей, что бы по модулю они не выходили за половину максимального значения типа byte для предотвращения переполнения переменных в пункте 9. Просто сравним значения с константно-объявленной границей, и если они больше, то приравняем их к ней. Сейчас скорости двигателей лежат в диапазоне от -128 до 128, но мы хотим хранить их в массиве типа byte , который не может хранить отрицательные числа, поэтому «зашифруем их»: — элемент массива data будет хранить скорость левого двигателя, а 1 скорость второго. — Если скорость будет отрицательной, мы положим в data ее модуль, а если положительной, то прибавим к ней половину диапазона значений типа byte . Таким образом значения от 0 до 128 хранят скорость вращения назад, а значения от 128 до 255 вперед.

Шаговый двигатель от CD-ROM — запуск на Arduino без драйвера

Добрый вечер ребята. У меня такой вопрос. Как правильно подключить и запустить на ардуино шаговый двигатель от дисковода без драйвера и как урправлять реверсом? Заранее всем откликнувшимся большое спасибо за помощь.

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

Там нет шагового двигателя. Там три других двигателя: один обычный коллекторный моторчик, который открывает/закрывает каретку. И два трёхфазных бесколлекторных двигателя: один крутит диск (побольше), другой двигает лазерную головку (поменьше).

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

Хмм . А я видел привод каретки и от коллекторного и от шагового движков.

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

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

Меня значит интересует тот который двигает лазерную головку ( у него 4 контакта). Как его можно подключить без драйвера к ардуино и сделать реверс программно??

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

Похоже я ошибся и двигатель, который двигает головку всё-таки биполярный шаговый.

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

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

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

А как можно реализовать через ардуино реверс обычного постоянного мотора (например от лотка дисковода)? Мотор собираюсь запускать через транзистор подавая на базу сигнал с ардуино. Спасибо за вашу помощь заранее.

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

Через транзистор реверсить не получится надо или мост или полумост.

вообщетто непонятно , как Вы нашли этот форум, если не умеете пользоваться поиском?

а если умеете то почему не ищете сами?

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

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

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

Спасибо вам. через Н-мост попробую Но я так понимаю если случайно запусить оба транзистора то будет короткое замыкание цепи (например нажал на пульте две кнопки Вперед и Назад одновременно).

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

Да, будет коротыш. Именно роэтому лучше применить мелкосхему, там есть защита.

откуда такой антагонизм к драйверам? Драйвер на мелкосхеме — тот же Нмост с защитами и в одном корпусе. Очень удобно.

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

Да не антагонизм к драйверам. Просто нет в наличии пока. А так понимаю что очень удобно

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

Хмм. L293 достаточно распрострненная и недорогая. На ебээ вообще копейки стоит.

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

Заказать собираюсь либо на алике или а ебее

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

Спасибо за совет вам. Вопрос такой L293 может управлять 12В моторами? Какое количество моторов можно задействовать максимально. Я так понимаю он служит вроде ключа для открывания (пропукскания) питания на моторы, а также реверсы делать.

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

В даташите всё написано:

Wide Supply-Voltage Range: 4.5 V to 36 V Output Current 1 A Per Channel (600 mA for L293D) Peak Output Current 2 A Per Channel (1.2 A for L293D)

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

БЛАГОДАРЮ ВСЕХ ЗА ОКАЗАННУЮ ВАМИ МНЕ ПОМОЩЬ))))))))))))))))))))))))))))))))))

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

Там нет шагового двигателя. Там три других двигателя: один обычный коллекторный моторчик, который открывает/закрывает каретку. И два трёхфазных бесколлекторных двигателя: один крутит диск (побольше), другой двигает лазерную головку (поменьше).

Не будьте столь категоричны: недавно разбирал CD-Drive, так там головку двигает мотор, к которому идет ровно 2 провода — красный и черный. Вы уверены, что это трехфазный бесколлекторный?

Источник

Печать корпуса и сборка

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

Вплавьте две резьбовые вставки в корпус вращающегося диска, на котором будет закрепляется датчик нужно вплавить вставные гайки. Для этого можно использовать паяльник:

Теперь пропускаем провода от скользящих контактов через отверстие вращающегося диска:

После чего берём датчик и припаиваем к нему 4 провода (+5V, GND, SCL и SDA) от скользящих контактов:

С помощью двух болтов М3 закрепляем модуль дальномера на корпусе вращающегося диска:

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

Когда датчик будет закреплён, вращающийся диск надевается на подшипник:

На вращающуюся крышку приклеивается неодимовый магнит, а в верхнюю крышку вставляется датчик холла:

Магнит служит для того, чтобы на него на него срабатывал датчик Холла и в этот момент в коде происходит установка переменной «угол» в некоторое значение. Если магнит по размерам позволяет наклеить его по центру под датчиком, это будет самый лучший вариант, т.к. при срабатывании переменной «угол» нужно будет присвоить значение 0. Если нет, магнит можно наклеить возле датчика. Тогда переменной «угол» нужно будет присвоить не 0, а соответствующее значение (на какой угол относительно магнита повёрнут датчик). Если магнит находится с противоположной стороны, нужно присвоить 180. Если угол составляет 20 градусам (на фото выше угол немного больше):

Тогда переменной «угол» нужно присвоить 20 и т.д.

На макетную плату по схеме, приведенной ранее, запаиваем конденсатор, драйвер мотора, 10K резистор, датчик Холла, провода от Arduino и стабилизатора питания:

Всё припаяно, теперь закрепляем (двусторонней липкой лентой, клеем, термоклеем и т.д.) Arduino Nano внутри корпуса и наш лидар почти готов:

Осталось вплавить в нижнюю крышку корпуса три вставные гайки, затем прикрутить крышку корпуса, надеть на шкив пасик и можно переходить к программированию и экспериментам.

Драйвер шагового двигателя Ардуино

Шаговый двигатель — это бесколлекторный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока в которых происходит вращение вала, вал шаговых двигателей совершает дискретные перемещения, то есть вращается не постоянно, а шагами. Каждый шаг вала (ротора) представляет собой часть полного оборота.

Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.

Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.

Типы шаговых двигателей

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

По конструкции ротора

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

Реактивный

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

С переменным магнитным сопротивлением

Весомым плюсом такой конструкции шагового привода является отсутствие стопорящего момента, образуемого полем по отношению к арматуре. По факту это тот же синхронный двигатель, в котором поворот ротора идет в соответствии с полем статора. Недостатком является снижение величины вращающего момента. Шаг для реактивного двигателя колеблется от 5 до 15°.

С постоянными магнитами

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

С постоянным магнитом

Гибридные

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

По виду обмоток

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

Униполярный

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

Униполярный ШД

Для использования всей мощности катушки средний вывод оставляют не подключенным. Рассмотрите конструкции униполярных агрегатов, они могут содержать 5 и 6 выводов. Их количество будет зависеть от того, выводится срединный провод отдельно от каждой обмотки двигателя или они соединяются вместе.

Схема а) с различными, б) с одним выводом

Биполярный

Биполярный шаговый двигатель подключается к контроллеру через 4 вывода. При этом обмотки могут соединяться внутри как последовательно, так и параллельно. Рассмотрите пример его работы на рисунке.

Биполярный шаговый двигатель

В конструктивной схеме такого двигателя вы видите с одной обмоткой возбуждения в каждой фазе. Из-за этого смена направления тока требует использовать в электронной схеме специальные драйверы (электронные чипы, предназначенные для управления). Добиться подобного эффекта можно при помощи включения Н-моста. В сравнении с предыдущим, биполярное устройство обеспечивает тот же момент при гораздо меньших габаритах.

Исходный код программы (скетча)

Arduino

#include <Stepper.h>
#define STEPS 200
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver
Stepper stepper(STEPS, 2, 3); // Pin 2 connected to DIRECTION & Pin 3 connected to STEP Pin of Driver
#define motorInterfaceType 1
int Pval = 0;
int potVal = 0;
void setup() {
// Set the maximum speed in steps per second:
stepper.setSpeed(1000);
}
void loop() {

potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(10);
if (potVal<Pval)
stepper.step(-10);
Pval = potVal;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <Stepper.h>
#define STEPS 200
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver

Stepperstepper(STEPS,2,3);// Pin 2 connected to DIRECTION & Pin 3 connected to STEP Pin of Driver

#define motorInterfaceType 1

intPval=;

intpotVal=;

voidsetup(){

// Set the maximum speed in steps per second:

stepper.setSpeed(1000);

}

voidloop(){

potVal=map(analogRead(A0),,1024,,500);

if(potVal>Pval)

stepper.step(10);

if(potVal<Pval)

stepper.step(-10);

Pval=potVal;

}

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий