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

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

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

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

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

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

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

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

  • Двигатели с переменными магнитами (применяются довольно редко);
  • Двигатели с постоянными магнитами;
  • Гибридные двигатели (более сложные в изготовлении, стоят дороже, но являются самым распространенным видом шаговых двигателей).

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

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

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

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

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Драйвер двигателя L298N

Драйвер шагового двигателя ULN2003

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

Другие драйвера

Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Подключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Подключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Принципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.

Заключение

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

Делаем на основе Arduino двигатель своими руками

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

Включение детали в проект – непростая задача, которая требует максимума усилий и внимания. Особенно сложно дело обстоит у начинающих электронщиков, не разбирающихся с приводами.

Ниже мы подробно расскажем читателю о моторе, сконструированном на микропроцессоре Aрдуино, и поможем построить прибор правильно.

Назначение двигателя Aрдуино и принцип работы

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

Поэтому, в зависимости от размера прибора, мы можем просто подключить выход PWM Arduino к базе транзистора или к затвору MOSFET и управлять скоростью двигателя, контролируя выход PWM. Сигнал PWM с низким уровнем мощности Arduino включает и выключает затвор на MOSFET, через который приводится прибор высокой мощности. Ардуино GND и источник питания двигателя GND должны быть соединены вместе.

Сборка двигателя

Транзистор – это электрический выключатель, который активирует цифровые контакты или пины микропроцессора Aрдуино. В этом примере он управляется выводом 9, таким же образом, как и светодиод, за исключением того, что транзистор включает и выключает схему приспособления.

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

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

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

Необходимые инструменты и материалы

Для проекта понадобится простая схема управления, чтобы включить и выключить прибор.

Список необходимых инструментов и материалов для конструирования:

  1. Arduino Uno.
  2. Макет.
  3. Транзистор.
  4. Двигатель постоянного тока.
  5. Диод.
  6. Резистор 2,2 кОм.
  7. Переходные провода.

Для питания прибора подается 5V через него, а затем на землю. Это напряжение вращает устройства, но пользователь контролирует его. Чтобы передать Arduino управление мощностью прибора и, следовательно, вращение, устанавливается транзистор сразу после мотора.

Значения драйвера в составе устройства и работа с ним

L298N – это двойной драйвер H-Bridge, который позволяет одновременно управлять скоростью и направлением двух приспособлений постоянного тока. Модуль может приводить в действие приборы постоянного тока с напряжением от 5 до 35 В с пиковым током до 2А.

Давайте подробнее рассмотрим распиновку модуля L298N и объясним, как это работает. Модуль имеет два винтовых клеммных блока для A и B и еще одну винтовую клеммную колодку для заземляющего контакта, VCC для двигателя и вывод 5 В, который может быть либо входом, либо выходом.

Это зависит от напряжения, используемого на двигателях VCC. Модуль имеет встроенный 5V-регулятор, который либо включен, либо выключен с помощью перемычки. Если напряжение питания двигателя до 12 В, мы можем включить регулятор 5V, а вывод 5V можно использовать в качестве выхода, например, для питания платы Arduino. Но если напряжение двигателя больше 12 В, мы должны отключить перемычку, поскольку эти напряжения могут повредить встроенный регулятор 5 В. В этом случае вывод 5V будет использоваться в качестве входного сигнала, так как мы должны подключить его к источнику питания 5 В, чтобы IC работал правильно.

Здесь можно отметить, что эта ИС уменьшает падение напряжения примерно на 2 В. Так, например, если мы используем источник питания 12 В, напряжение на клеммах двигателей будет составлять около 10 В, а это означает, что мы не сможем получить максимальную скорость от нашего 12-вольтового двигателя постоянного тока.

Далее следуют логические управляющие входы. Для включения и управления скоростью двигателя используются кнопки включения и включения B. Если на этом контакте имеется перемычка, двигатель будет включен, и работать с максимальной скоростью, и если мы удалим перемычку, мы сможем подключить вход ШИМ к этому выводу и, таким образом, контролировать скорость двигателя. Если мы подключим этот контакт к заземлению, двигатель отключится.

Затем штифты Input 1 и Input 2 используются для управления направлением вращения двигателя A, а входы 3 и 4 – для двигателя B. Используя эти контакты, мы фактически управляем переключателями H-Bridge внутри IC L298N. Если вход 1 LOW, а вход 2 – HIGH, приспособление будет двигаться вперед, и наоборот, если вход 1 HIGH, а вход 2 LOW, агрегат будет двигаться назад. Если оба входа одинаковы, либо LOW, либо HIGH, прибор остановится. То же самое относится ко входам 3,4 прибора B.

Установка программного обеспечения

Постройте схему, как показано на рисунке, и откройте новый эскиз Arduino. Выберите кнопку «Сохранить» и сохраните эскиз с запоминающимся именем, например myMotor; введите следующий код:

После того, как вы набрали эскиз, сохраните его и нажмите кнопку «Скомпилировать», чтобы проверить свой код. Arduino Environment проверяет ваш код на любые синтаксические ошибки (грамматику для вашего кода) и выделяет их в области сообщений. Наиболее распространенные ошибки включают опечатки, отсутствующие точки с запятой и чувствительность к регистру.

Если эскиз скомпилирован правильно, нажмите «Загрузить», чтобы загрузить эскиз на микропроцессор. Вы должны видеть, что ваш двигатель вращается в течение одной секунды и останавливается в течение одной секунды.

Если это не так, вам следует дважды проверить свою проводку:

  1. Убедитесь, что вы используете вывод № 9.
  2. Убедитесь, что ваш диод обращен правильно, при этом лента обращена к соединению 5v.
  3. Проверьте соединения на макете. Если провода или компоненты не подключены с использованием правильных строк в макете, они не будут работать.

Запуск и настройка устройства

Для начала соединяем провода для питания и земли. На иллюстрации красный означает мощность, а черный означает заземление; они соединяются с двумя длинными вертикальными рядами на стороне макета. Это обеспечивает доступ к источнику питания и напряжению на 5 вольт.

Помещаем кнопку на макет, оседлав центр. Провод соединяет цифровой контакт 2 с одной ногой кнопки. Ножка кнопки, не подключенная к плате Aрдуино, должна быть подключена к источнику питания на 5 вольт.

Подключаем контакт или пин 9 на Arduino к базовому выходу TIP120 . Если смотрите на транзистор, чтобы металлический язычок был обращен от вас, базовый штифт находится на левой стороне транзистора. Это контакт, который управляет открытием или закрытием. Транзисторный коллектор соединяется с одним выводом двигателя.

Другой конец двигателя подключается к положительному выводу 9-вольтовой батареи. Подключаем заземление аккумулятора к земле Arduino и запускаем проект.

Тестирование

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

В этом примере используется TIP120, который может переключаться до 60 В на 5 А.

Motor Shield

Хотите подключить мотор к Arduino или Iskra JS?! К сожалению микроконтроллер установленный на управляющих платформах не сможет без посторонней помощи управлять большой нагрузкой. Motor Shield поможет микроконтроллеру управлять коллекторными моторами и шаговыми двигателями.

Motor Shield — это плата расширения, предназначенная для двухканального управления скоростью и направлением вращения коллекторных двигателей постоянного тока, напряжением 5–24 В и максимальным током до двух ампер на канал.

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

Видеообзор

Подключение и настройка

Примеры работы для Arduino

Управление коллекторными двигателями

Подключите два коллекторных мотора к клеммникам M1 и M2 соответственно.

Схема устройства

Код программы

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

Код программы

Усложним задачу. Будем плавно увеличивать скорость первого мотора до максимальной скорости, а потом понижать до полного выключения. Аналогично проделываем со вторым мотором.

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

Драйвер моторов может на себя также взять управления шаговым двигателем. В качестве примера подключим шаговый двигатель 42STH47-0406A.

Схема устройства

Управление без библиотек

Motor Shield поддерживает три режима управления биполярным шаговым двигателем:

Код программы

Протестируем по очереди три режима управления.

Скорость вращения шагового двигателя очень сильно влияет на развиваемый мотором момент. Убедитесь сами. Запустите этот же пример с разными значениями delayTime .

Обратите внимание, что двигатель в однофазном полношаговом режиме позволяет развить гораздо меньший момент, чем в двухфазном полношаговом режиме.

Управление через готовую библиотеку

Для лёгкого и быстрого управления шаговым двигателем мы написали библиотеку AmperkaStepper. Она скрывает в себе все тонкости работы с мотором и предоставляет удобные методы.

Пример работы в различных режимах

Пример работы для Espruino

Управление коллекторными двигателями

Подключите два коллекторных мотора к клеммникам M1 и M2 соответственно.

Схема устройства

Код программы

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

Код программы

Усложним задачу. Будем плавно увеличивать скорость первого мотора до максимальной скорости, а потом понижать до полного выключения. Аналогично проделываем со вторым мотором.

Элементы платы

Драйвер двигателей

Сердце и мускулы платы — микросхема двухканального H-моста L298P.

Термин «H-мост» появился благодаря графическому изображению схемы, напоминающему букву «Н». H-мост состоит из четырёх ключей. В зависимости от текущего состояние переключателей возможно разное состояние мотора.

S1 S2 S3 S4 Результат
1 0 0 1 Мотор крутится вправо
0 1 1 0 Мотор крутится влево
0 0 0 0 Свободное вращение мотора
0 1 0 1 Мотор тормозит
1 0 1 0 Мотор тормозит
1 1 0 0 Короткое замыкание источника питания
0 0 1 1 Короткое замыкание источника питания

Ключи меняем на транзисторы для регулировки скорости мотора с помощью ШИМ-сигнала.

H-мост с силовыми ключами — основная начинка микросхемы L298P для управления скоростью и направлением двигателей.

Питание

На плате расширения Motor Shield два контура питания.

Если отсутствует хотя бы один из контуров питания — Motor Shield работать не будет.

Силовое питание подключается через клеммник PWR . Диапазон входного напряжения:

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

Джампер объединения питания

Motor Shield использует два контура питания: силовое и цифровое. По умолчанию для питания всей конструкции необходимо два источника напряжения:

При установки джампера в положение PWR JOIN , происходит объединение контакта Vin управляющей платформы и положительного контакта клеммника PWR . Режим объединённого питания позволяет запитывать управляющую платформу и силовую часть драйвера от одного источника питания.

При объединённом режиме напряжение может быть подано двумя способами:

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

В режиме совместного питания управляющей платформы и Motor Shield, используйте входное напряжение в диапазоне 7–12 вольт. Напряжение более 12 вольт убьёт управляющую платформу. Если вы хотите работать с Motor Shield в диапазоне 5–24 вольта, используйте два отдельных источника питания.

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

При объединённом питании используйте литий-ионные и никель-металлгидридные аккумуляторы. Если вы используете другие источники питания, лучше воспользуйтесь раздельной схемой питания управляющей платформы и Motor Shield.

Нагрузка

Нагрузка разделена на два независимых канала. К каждому каналу можно подключить один коллекторный мотор. Первый канал на плате обозначен шёлком M1 , второй канал — M2 .

Обозначения «+» и «−» показывают воображаемые начало и конец обмотки. Если подключить два коллекторных двигателя, чтобы их одноимённые контакты щёточного узла соответствовали одному и тому же обозначению на плате, то при подаче на Motor Shield одинаковых управляющих импульсов, моторы будут вращаться в одну и ту же сторону.

Светодиодная индикация

Имя светодиода Назначение
PWR Индикация состояния силового питания. Есть питание — светодиод горит, нет питания — не горит.
H1 Индикация состояния направления первого канала M1 . При высоком логическом уровне светится зелёным светом, при низком — красным.
H2 Индикация состояния направления второго канала M2 . При высоком логическом уровне светится зелёным светом, при низком — красным.
E1 Индикация скорости первого канала M1 . Яркость светодиода пропорциональна скорости вращения двигателя.
E2 Индикация скорости второго канала M2 . Яркость светодиода пропорциональна скорости вращения двигателя.

Пины управления скоростью вращения двигателей

Для запуска двигателя на первом или втором канале установите высокий уровень на пинах скорости E1 или E2 соответственно. Для остановки моторов установите на соответствующих пинах низкий уровень.

Управление скоростью происходит при помощи ШИМ, за счёт быстрого включения и выключения нагрузки.

Пины управления направлением вращения двигателей

Пины направления H1 или H2 отвечают за направление вращения двигателей. Смена направления вращения коллекторных двигателей достигается за счёт изменения полярности приложенного к ним напряжения.

Контакты выбора управляющих пинов

По умолчанию Motor Shield для управления скоростью и направлением вращения моторов использует пины управляющей платы:

Назначение Канал 1 Канал 2
Скорость 5 6
Направление 4 7

Если в вашем устройстве эти пины уже заняты, например используются для управления Relay Shield), вы можете использовать другой свободный пин.

Контакты отвечающие за направления — H1 и H2 можно заменять на любые другие. А вот контакты управляющие скоростью моторов — E1 и E2 , можно перебрасывать только на пины с поддержкой ШИМ.

Для переброски пинов снимите джампер напротив занятого пина и припаяйте проводок между луженым отверстием рядом со снятым джампером и луженым отверстием напротив нужного пина. На этой картинке мы перекинули:

Arduino — двигатель постоянного тока

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

Есть три разных типа двигателей —

  • Двигатель постоянного тока
  • Серводвигатель
  • Шаговый двигатель

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

Предупреждение. Запрещается приводить двигатель в движение непосредственно от выводов платы Arduino. Это может повредить доску. Используйте схему драйвера или IC.

Мы разделим эту главу на три части —

  • Просто сделай мотор крутится
  • Контроль скорости двигателя
  • Контролировать направление вращения двигателя постоянного тока

Необходимые компоненты

Вам понадобятся следующие компоненты —

  • 1x Arduino UNO доска
  • 1x PN2222 Транзистор
  • 1x малый 6В постоянного тока
  • 1x 1N4001 диод
  • 1x 270 Ом Резистор

Процедура

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

Меры предосторожности

При подключении соблюдайте следующие меры предосторожности.

Сначала убедитесь, что транзистор подключен правильно. Плоская сторона транзистора должна быть обращена к плате Arduino, как показано на схеме.

Во-вторых, полосатый конец диода должен быть направлен к линии питания + 5 В в соответствии с расположением, показанным на рисунке.

Сначала убедитесь, что транзистор подключен правильно. Плоская сторона транзистора должна быть обращена к плате Arduino, как показано на схеме.

Во-вторых, полосатый конец диода должен быть направлен к линии питания + 5 В в соответствии с расположением, показанным на рисунке.

Spin ControlArduino Code

Код для заметки

Транзистор действует как переключатель, управляющий питанием двигателя. Контакт 3 Arduino используется для включения и выключения транзистора, и на эскизе ему присваивается название «motorPin».

Результат

Двигатель будет вращаться на полной скорости, когда вывод Arduino № 3 поднимется высоко.

Контроль скорости двигателя

Ниже приведена принципиальная схема двигателя постоянного тока, подключенного к плате Arduino.

Arduino Code

Код для заметки

Транзистор действует как переключатель, управляющий мощностью двигателя. Контакт 3 Arduino используется для включения и выключения транзистора, и на эскизе ему присваивается название «motorPin».

Когда программа запускается, она предлагает вам ввести значения для управления скоростью двигателя. Вам необходимо ввести значение от 0 до 255 в Serial Monitor.

В функции «loop» команда «Serial.parseInt» используется для считывания числа, введенного в виде текста в Serial Monitor, и преобразования его в «int». Вы можете ввести любой номер здесь. Оператор ‘if’ в следующей строке просто выполняет аналоговую запись с этим номером, если число находится в диапазоне от 0 до 255.

Результат

Двигатель постоянного тока будет вращаться с различными скоростями в соответствии со значением (от 0 до 250), полученным через последовательный порт.

Контроль направления вращения

Для управления направлением вращения двигателя постоянного тока без замены проводов можно использовать схему, называемую H-мостом . H-мост — это электронная схема, которая может управлять двигателем в обоих направлениях. H-мосты используются во многих различных приложениях. Одним из наиболее распространенных приложений является управление двигателями в роботах. Он называется H-мостом, потому что он использует четыре транзистора, соединенных таким образом, что принципиальная схема выглядит как «H».

Мы будем использовать L298 H-Bridge IC здесь. L298 может контролировать скорость и направление двигателей постоянного тока и шаговых двигателей, а также может управлять двумя двигателями одновременно. Его текущий рейтинг составляет 2А для каждого двигателя. Однако при таких токах вам необходимо использовать радиаторы.

Необходимые компоненты

Вам понадобятся следующие компоненты —

  • 1 × L298 мостовая ИС
  • 1 × двигатель постоянного тока
  • 1 × Arduino UNO
  • 1 × макет
  • 10 × перемычек

Процедура

Ниже приведена принципиальная схема интерфейса двигателя постоянного тока с платой Arduino Uno.

На схеме выше показано, как подключить микросхему L298 для управления двумя двигателями. Для каждого двигателя имеется три входных контакта: Вход1 (IN1), Вход2 (IN2) и Разрешить1 (EN1) для Двигателя1 и Вход3, Вход4 и Разрешить2 для Двигателя2.

Поскольку в этом примере мы будем управлять только одним двигателем, мы подключим Arduino к IN1 (контакт 5), IN2 (контакт 7) и Enable1 (контакт 6) микросхемы L298. Контакты 5 и 7 являются цифровыми, т. Е. Входы ВКЛ или ВЫКЛ, а для вывода 6 требуется сигнал с широтно-импульсной модуляцией (ШИМ) для контроля скорости двигателя.

В следующей таблице показано направление вращения двигателя на основании цифровых значений IN1 и IN2.

В 1 IN2 Мотор Поведение
ТОРМОЗНАЯ
1 ВПЕРЕД
1 BACKWARD
1 1 ТОРМОЗНАЯ

Контакт IN1 микросхемы L298 подключен к контакту 8 Arduino, а IN2 подключен к контакту 9. Эти два цифровых контакта Arduino контролируют направление двигателя. EN Контакт IC подключен к выводу 2 ШИМ Arduino. Это будет контролировать скорость двигателя.

Чтобы установить значения выводов Arduino 8 и 9, мы использовали функцию digitalWrite (), а для установки значения вывода 2 мы должны использовать функцию analogWrite ().

Шаги подключения

  • Подключите 5V и заземление IC к 5V и заземлению Arduino соответственно.
  • Подключите двигатель к контактам 2 и 3 микросхемы.
  • Подключите IN1 IC к контакту 8 Arduino.
  • Подключите IN2 IC к контакту 9 Arduino.
  • Подключите EN1 IC к контакту 2 Arduino.
  • Подключите SENS A контакт IC к земле.
  • Подключите Arduino с помощью USB-кабеля Arduino и загрузите программу в Arduino с помощью программного обеспечения Arduino IDE.
  • Подайте питание на плату Arduino с помощью блока питания, аккумулятора или USB-кабеля.

Arduino Code

Результат

Двигатель будет сначала вращаться в направлении по часовой стрелке (CW) в течение 3 секунд, а затем в течение 3 секунд против часовой стрелки (CCW).

Как подключить электродвигатель к Arduino

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

Для проекта нам понадобятся:

  • коллекторный электродвигатель постоянного тока или аналогичный;
  • драйвер двигателя L9110S, или шилд на микросхеме L293D или аналогичный;
  • шаговый двигатель 28BYJ-48 с драйвером ULN2003 или аналогичный;
  • Arduino UNO или иная совместимая плата;
  • соединительные провода (например, вот такой набор);
  • макетная плата;
  • персональный компьютер со средой разработки Arduino IDE.

1 Что такое драйвер двигателей и для чего он нужен

Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

Различные варианты исполнения драйверов двигателей

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

2 Схема подключения коллекторного двигателяи драйвера двигателей к Arduino

Самые простые электродвигатели – коллекторные двигатели. У таких моторов всего два управляющих контакта. В зависимости от полярности приложенного к ним напряжения меняется направление вращения вала двигателя, а величина приложенного напряжения изменяет скорость вращения.

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).

Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей

Должно получиться что-то подобное:

Двигатель подключён к драйверу двигателей и Arduino

3 Скетч для управления коллекторным двигателем

Напишем скетч для управления коллекторным двигателем. Объявим две константы для ножек, управляющих двигателем, и одну переменную для хранения значения скорости. Будем передавать в последовательный порт значения переменной Speed и менять таким образом скорость (значением переменной) и направление вращения двигателя (знаком числа).

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.

Управление электромотором с помощью драйвера двигателей и Arduino

А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:

4 Управление шаговым двигателем с помощью Arduino

Шаговый двигатель позволяет вращать ротор на определённый угол. Это бывает полезно, когда необходимо задать положение какому-либо механизму или его узлу. Шагом двигателя называется минимальный угол, на который можно повернуть ротор двигателя. Угол поворота и направление движения задаются в управляющей программе. Существует большое разнообазие шаговых двигателей. Рассмотрим работу с ними на примере двигателя 28BYJ-48 с драйвером ULN2003.

Шаговый двигатель с контроллером –> Шаговый двигатель с контроллером

Характеристики двигателя 28BYJ-48:

Характеристика Значение
Количество фаз 4
Напряжение питания от 5 до 12 В
Число шагов 64
Размер шага 5,625°
Скорость вращения 15 об./сек
Крутящий момент 450 г/см

Модуль с микросхемой драйвера для управления шаговым двигателем выглядит так:

Модуль с драйвером ULN2003

На входы IN1…IN4 подаются управляющие сигналы от Arduino. Используем любые 4 цифровых пина, например, D8…D11. На вход питания необходимо подать постоянное напряжение от 5 до 12 В. Двигателю желательно обеспечить отдельное питание. Но в данном случае, т.к. не планируется использовать двигатель на постоянной основе, можно подать питание и от Arduino. Перемычка «Вкл/выкл» просто разрывает «плюс» питания, подаваемого на драйвер. В «боевом» изделии сюда можно, например, коммутировать питание с помощью реле, когда это необходимо, чтобы снизить потребление всего изделия. Итак, схема подключения будет такой:

Схема подключения шагового двигателя с драйвером ULN2003 к Arduino

Соберём всё по схеме.

Подключение шагового двигателя 28BYJ-48 к Arduino

Для Arduino «из коробки» существует готовая библиотека для управления шаговыми двигателями. Она называется Stepper. Можно посмотреть готовые примеры в среде разработки для Arduino: File Examples Stepper. Они позволяют управлять шаговым двигателем, изменяя скорость и направление движения, поворачивать ротор на заданный угол. Как говорится – бери и пользуйся. Но давайте попробуем разобраться с принципом работы шагового двигателя самостоятельно, не применяя никаких библиотек.

Двигатель 28BYJ-48 имеет 4 фазы. Это означает, что у него имеются 4 электромагнитные катушки, которые под действием электрического тока притягивают сердечник. Если напряжение подавать на катушки поочерёдно, это заставит сердечник вращаться. Рисунок иллюстрирует данный принцип.

Схема работы шагового двигателя

Здесь на (1) напряжение подано на катушки A и D, на (2) – на A и B, (3) – B и С, (4) – C и D. Далее цикл повторяется. И таким образом ротор двигателя вращается по кругу.

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

Простейший скетч управления шаговым двигателем (разворачивается)

Как можно догадаться, задержка del определяет скорость вращения двигателя. Уменьшая или увеличивая её можно ускорять или замедлять двигатель.

Если загрузить этот скетч, то увидим, что шаговый двигатель вращается против часовой стрелки. Соответственно, можно вынести цикл вращения в одну сторону в отдельную функцию rotateCounterClockwise(). И сделать аналогичную функцию вращения в противоположную сторону rotateClockwise(), в которой фазы будут следовать в обратном порядке. Также вынесем в отдельные функции каждую из 4-х фаз чтобы избежать дублирования одинакового кода в нескольких местах программы. Теперь скетч выглядит несколько интереснее:

Скетч управления шаговым двигателем (разворачивается)

Если мы загрузим скетч и проверим, поворачивается ли ротор двигателя на целый оборот, если один раз вызвать функцию rotateClockwise(), то обнаружим, что нет. Для совершения полного оборота функцию необходимо вызвать несколько раз. Соответственно, хорошо бы добавить в качестве аргумента функции число, которое будет показывать количество раз, которые она должна выполняться.

Финальный скетч управления шаговым двигателем (разворачивается)

Вот теперь совсем другое дело! Мы можем управлять скоростью шагового двигателя, задавая задержку после каждой фазы. Мы можем менять направление движения ротора двигателя. И, наконец, мы умеем поворачивать ротор на некоторый угол. Осталось только определить, какое число необходимо передавать в функции поворота rotateClockwise() и rotateCounterClockwise(), чтобы ротор шагового двигателя 1 раз провернулся на 360° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий