Как подключить электродвигатель к Arduino
Как подключить электродвигатель к 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° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.
Ардуино запуск шагового двигателя от принтера
Коротко о том с чего все началось. Однажды появилась потребность в демонстрационном столике или как еще его называют вращающийся столик. Покупать готовый не стал в связи с тем что жалко портить новый, да и к тому же столики имеющиеся в продаже по некоторым характеристикам не подходят для моих целей. Для этой цели решил использовать Arduino и шаговый двигатель в связи с тем что он может вращаться на низких скоростях что и требуется для этой цели.
Если у вас возникнут вопросы по данной теме то вы можете их задать в комментариях под видео в YouTube перейдя по этой ссылке www.youtube.com/Мастер Колотушкин
1 шаг. Что понадобится для проекта:
Arduino UNO 1 штука.
USB кабель для подключения Arduino UNO к компьютеру 1 штука и конечно же сам компьютер с установленным приложением Arduino IDE
Униполярный шаговый двигатель 28BYJ-48 5V на 5 вольт и драйвер к нему на базе микросхемы ULN2003 который обычно идет в комплекте с шаговым двигателем, 1 комплект.
Соединительные провода мама мама для подключения линий питания 2 штуки.
Соединительные провода папа мама для подключения управляющих электрических цепей 4 штуки.
Потенциометр с сопротивлением от 3 до 50 киллоом 1 штука, с заранее припаяными проводами типа папа. Зеленый подпаян к средней ноге потенциометра!
2 шаг. Подключить Arduino UNO к компьютеру с помощью кабеля.
3 шаг. Запустить приложение Arduino IDE (подойдет любая версия).
4 шаг. Открыть скетч (прошивка для Arduino) Файл/ Примеры/ Stepper/ stepper_speedControl.
Если у вас по какой-то причине отсутствует данный скетч то вы можете его скопировать с окна ниже и вставить в чистое поле приложения ArduinoIDE. После чего можно приступать к 5 шагу.
//Начало скетча stepper_speedControl 1
//Конец скетча stepper_speedControl 1
А если у вас не оказалось библиотеки Stepper, то можете воспользоваться скетчем ниже, который работает без библиотек.
//Начало скетча stepper_speedControl 2
//Конец скетча stepper_speedControl 2
5 шаг. Если вы как и я решили использовать плату Arduino UNO то во вкладке Инструменты/Плата: выберите пункт Arduino/Genuino Uno который обведен красным на фото ниже.
6 шаг. Во вкладке Инструменты выбрать порт к которому подключена плата Arduino в моем случае это COM11 у вас может быть другой, то есть у меня галочка должна стоять на против COM11.
В нижнем правом углу должно быть Arduino/Genuino на COM(номер ком порта к которому подключена плата) если все верно то переходим к следующему шагу.
7 шаг. Загружаем скетч нажав кнопку Загрузки со стрелочкой.
Если вы используете скетч с этой страницы то приложение при загрузке предложит сохранить его. После чего загрузка продолжится
Через 5-45 секунд скетч загрузится и появится уведомление Загрузка завершена.
8 шаг. Отключаем Arduino от компьютера и подключаем потенциометр.
Зеленый провод который подпаян к средней ноге потенциометра подключаем контакту A0, остальные два к питанию GND (минус) и +5V (5 вольт) полярность на ваше усмотрение.
В моем случае если вращать потенциометр по часовой стрелке то скорость вращения шагового двигателя увеличивается, а если поменять местами серый с красным проводом то при вращении потенциометра так же по часовой стрелке скорость вращения шагового двигателя будет уменьшаться.
9 шаг. С помощью соединительных проводов папа мама подключаем драйвер шагового двигателя к Arduino UNO.
Линия 1N1 к 8 контакту, линия 1N2 к 9 контакту, линия 1N3 к 10 контакту и линия 1N4 к 11 контакту.
10 шаг. Проводами мама мама соединяем линии питания.
Такой способ подключения допустим лишь при использовании маломощных шаговых двигателей! При использовании нескольких, или более мощных шаговых двигателей следует использовать отдельный источник питания! При этом у ардуины и драйвера шагового двигателя должна быть общая земля!
11 шаг. Должно все получиться как на фото ниже! Если это так то подключаем Arduino к компьютеру или Павербанку и пробуем крутить потенциометр.
Доработка демонстрационного столика для которого была применена данная схема
Творческая мастерская Мастер Колотушкин 2021
Проекты на базе Arduino для начинающих, электронные самоделки своими руками.
Как подключить A4988 к Arduino
Содержание
- Описание
- Характеристики
- Подключение к arduino
- Подключение к RAMPS 1.4
- Настройка тока
- Настройка микрошага
Описание
A4988 — Это драйвер шагового двигателя, достаточно популярный из-за своей цены и функционала. Часто используется в 3D принтерах или других не больших домашних ЧПУ станках.
A4988
Характеристики A4988
- Напряжения питания: 8-35 В
- Режим микрошага: 1, 1/2, 1/4, 1/8, 1/16
- Напряжение логики: 3-5.5 В
- Максимальный ток на фазу: — 1 А без радиатора; — 2 А с радиатором
- Защита от перегрева и короткого замыкания
- Размер: 20 на 15 мм
Подключение A4988 к Arduino
Подключение к плате RAMPS 1.4
Обратите внимание, на то, каким образом должен стоять драйвер, неправильное расположение может и скорее всего выведет ваш драйвер из строя. В остальном, подключение не должно вызвать у вас, какие-либо, сложности. Для деления шага на плате предусмотрены джамперы прямо под колодкой драйвера.
Настройка тока двигателя на A4988
На плате драйвера предусмотрен потенциометр для регулировки тока. Для настройки понадобиться мультиметр, для замера напряжения на потенциометре.
Расположение токоограничительных резисторов и потенциометра Vref
Формула Vref для A4988 изменяется от номинала токочувствительных резисторов (Обведены на фото выше). . Обычно подписаны R050 или R100.
Vref = Imax * 8 * (RS)
Imax — максимальный ток двигателя;
RS — сопротивление резистора. В моем случае RS = 0,100.
Для 17HS4401 Vref = 1,7 * 8 * 0,100 = 1,36 В.
Рабочий ток двигателя равен 70% от тока удержания. Умножим полученные значения чтобы двигатель не грелся при простое.
Для 17HS4401 Vref ист. = 1,36*0,7 = 0,952 В.
Подключаем драйвер к микроконтроллеру, включаем и меряем напряжение Vref на драйвере. Если оно не соответствует нужному нам номиналу, а оно скорее всего будет не будет соответствовать, крутим потенциометр в какую то сторону и смотрим что поменялось. Доводим до нужного нам значения и радуемся, ведь ток на драйвере теперь настроен!
Настройка микрошага A4988
Для настройки микрошага на данном модуле, нужно подать напряжение на определенные пины.
Таблица делителя шага A4988
На плате Ramps 1.4 предусмотрены специальные джамперы, для переключения микрошага, находятся под колодкой самого драйвера, подписаны как M0, M1, M2 или MS0, MS1, MS2.
Примеры кода
Программа крутит вал сначала в одну сторону, затем в другую.
Так же вы можете прочитать про подключение и настройку драйвера DRV8825, который является приемником этого драйвера на странице «Как подключить DRV8825 к Arduino».
Или приобрести товар на Aliexpress по самой выгодной цене, ссылка.
Подключение шагового двигателя 28BYJ-48-5V к Arduino. Часть 1.
В этой статье мы подключаем шаговый двигатель 28BYJ-48-5V к плате Arduino через драйвер шагового двигателя на безе микросхемы ULN2003.
Для подключения понадобится:
- Плата Arduino купить плату Arduino =>>
- Шаговый двигатель 28BYJ-48 купить шаговый двигатель RKP-28BYJ-48-5V =>>
- Драйвер для шагового двигателя купить драйвер на микросхеме ULN2003A =>>
- Коммутационные провода купить провода и шлейфы папа-мама =>>
- Источник питания для Arduino купить блок питания LJY-186 9V 1A для Arduino =>>
- Корпус для Arduino купить корпус для платы Arduino =>>
Для реализации проекта подключения необходимо установить библиотеку Stepper_28BYJ в среду разработки Ардуино IDE.
Библиотека Stepper_28BYJ это оптимальная библиотека, написанная на основе стандартной общей библиотеки Stepper являющейся частью среды Arduino IDE. Она была созданна конкретно для этого шагового двигателя 28BYJ-48-5V и учитывающая все его индивидуальные параметры.
Установить библиотеку Stepper_28BYJ в среду Arduino IDE Вам поможет статья «Установка библиотек в Arduino IDE» =>>
Сборка и подключение:
Внимание!
Для драйвера на основе микросхемы ULN2003 DARLINGTON и соответственно мотора 28BYJ-48-5V, который получает питание от драйвера рекомендуется подавать питание от внешнего источника, в нашем случае (только для осуществления программирования) коммутируем подачу питания непосредственно от контроллера Ардуино (мотор работает без нагрузки и непродолжительное время) через контакты (Vin) для (+) и (GND) для (-).
Драйвер управляется через четыре управляющих входа обозначенные как (IN1, IN2, IN3, IN4), именно к ним необходимо подключить соответственно выходы (Pin) с номерами 8 Pin, 9 Pin, 10 Pin и 11 Pin на плате контроллера Ардуино (как это показано на изображении ниже).
Схема подключения на примере платы контроллера Arduino UNO R3, модуля драйвера ULN2003 и шагового двигателя 28BYJ-48-5V.
Загружаем скетч:
Для загрузки скетча необходимо в среде разработки Ардуино IDE нажать вкладку новый проект и в открывшиеся окошко поместить скетч приведенный ниже:
Скетч, который необходимо загрузить в контроллер через среду разработки Ардуино IDE:
После загрузки скетча необходимо пересохранить новый проект под именем Stepper_28BYJ.
После сохранения он будет доступен для внесения необходимых изменений и корректировок (например, для изменения направления вращения двигателя, отмена цикличности вращения или изменения скорости вращения).
Если по каким либо причинам Вы не смогли самостоятельно разобраться в подключении или программировании шагового двигателя 28BYJ-48, обратитесь к сотрудникам магазина робототехники и мехатроники — Robot-Kit.ru.
Наш сайт: www.Robot-kit.ru
Электронная почта: mos@robot-kit.ru
У нас Вы найдете необходимую поддержку и помощь.