Vikupautomsk.ru

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

Шаговый двигатель с 6 проводами как подключить

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

Шаговые двигатели – это бесщеточные двигатели постоянного тока, которую могут вращаться от 00 до 3600 дискретными шагами. С каждым управляющим сигналом ось такого двигателя поворачивается на фиксированное значение (шаг). Управление вращением подобных двигателей осуществляется последовательностью специальных сигналов. В отличие от серводвигателей шаговые двигатели могут управляться контактами ввода-вывода общего назначения, а не только контактами ШИМ модуляции, и могут вращаться на (+3600) и (-3600). Последовательность следования управляющих сигналов определяет будет ли шаговый двигатель вращаться по часовой или против часовой стрелки. Для управления скоростью вращения такого двигателя необходимо просто изменять уровень управляющих сигналов. У шаговых двигателей есть несколько режимов шагового (дискретного) вращения – на полный шаг, на половину шага и на микрошаг.

В этом проекте мы будем подключать шаговый двигатель 28BYJ-48 к микроконтроллеру ATmega16 (семейство AVR), используя программу Atmel Studio 7.0. Шаговый двигатель будет работать при напряжении питания 5В. Мы будем подключать шаговый двигатель к микроконтроллеру с помощью драйверов электродвигателей ULN2003 и L293 (по отдельности). Оба будут запитываться напряжением 5В.

Примеры шаговых двигателей

Как следует из их названия, вращение шаговых электродвигателей представляет собой серию коротких шагов. В этом и состоит их отличие от двигателей свободного вращения — шаговый двигатель сделает столько шагов, сколько ему будет задано, и вы будете точно знать, сколько он их сделал. Это одна из причин, почему шаговые двигатели широко применяются как в обычных, так и в ЗD-принтерах. В обычных принтерах они точно позиционируют бумагу, а в ЗD — рабочий столик и сопло.

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

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

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

Ротор шагового электродвигателя выполнен в форме намагниченных зубцов с чередующимися северным (С) и южным (Ю) полюсами (зубцов на роторе обычно гораздо больше, чем показано на представленном рисунке). Каждую катушку можно подключить так, что она будет намагничена или как северный полюс, или как южный, — в зависимости от направления тока в катушке. Катушки 1 и 3 работают совместно так, что когда катушка 1 будет южным полюсом, катушка 3 также будет южным полюсом. То же самое относится и к катушкам 2 и 4.

Начнем с варианта рисунка под буквой «а» — когда катушка 1 , а значит, и катушка 3 запитаны так, что становятся южными полюсами (Ю), вследствие того, что разноименные полюса притягиваются, а одноименные отталкиваются, ротор поворачивается против часовой стрелки до тех пор, пока ближайшие зубцы ротора с намагниченностью северного полюса (С) не поравняются с катушками 1 и 3 (как показано на «б»).
Чтобы продолжить вращение против часовой стрелки, на следующем шаге (рисунок «в») необходимо подать ток в катушки 2 и 4 так, чтобы они стали северными полюсами (С). Тогда ближайшие зубцы ротора с намагниченностью Ю подтянутся к катушкам 2 и 4 (рисунок «г»).

Каждое такое действие проворачивает ротор электродвигателя на один шаг. Для продолжения вращения против часовой стрелки в катушке 1 снова нужно создать намагниченность С (см. представленную таблицу).

Таблица 1. Последовательность действий при вращении шагового двигателя против часовой стрелки

Катушки 1 и 3Катушки 2 и 4
Ю
С
С
Ю

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

Читать еще:  Usb драйвер для шагового двигателя схема

Таблица 2. Уточненная последовательность переключения катушек при вращении шагового двигателя

Катушки 1 и 3Катушки 2 и 4
ЮС
СС
СЮ
ЮЮ

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

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

  1. Микроконтроллер ATmega16 (купить на AliExpress).
  2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  3. Кварцевый генератор 16 МГц (купить на AliExpress).
  4. Шаговый двигатель 28BYJ-48 (купить на AliExpress).
  5. Драйвер двигателей ULN2003 (купить на AliExpress) или L293D (купить на AliExpress).
  6. Конденсатор 100 нФ (2 шт.) (купить на AliExpress).
  7. Конденсатор 22 пФ (2 шт.) (купить на AliExpress).
  8. Кнопка.
  9. Светодиод (купить на AliExpress).
  10. Макетная плата.
  11. Соединительные провода.
  12. Источник питания с напряжением 5 Вольт.

Маркировка контактов шагового двигателя

Представлена на следующем рисунке.

Как видим, схема контактов шагового двигателя как будто специально «заточена» под то, чтобы подключать его к соответствующим драйверам (ULN2003 или L293D).

Назначение контактов микросхемы ULN2003 (драйвера двигателей) приведено на следующем рисунке.

Внешний вид этого драйвера двигателей выглядит следующим образом:

Внешний вид драйвера мотора L293D приведен на следующем рисунке:

Работа схемы

В следующих двух таблицах представлены схемы соединений входных и выходных контактов драйверов моторов ULN2003 или L293D с микроконтроллером AVR ATmega16 и шаговым электродвигателем.

Atmega16ULN2003L293D
A0IN1(PIN1)IN1(PIN2)
A1IN2(PIN2)IN2(PIN7)
A2IN3(PIN3)IN3(PIN10)
A3IN4(PIN4)IN4(PIN15)
Шаговый двигательULN2003L293D
OrangeOUT1(PIN16)OUT1(PIN3)
YellowOUT2(PIN15)OUT2(PIN6)
PinkOUT3(PIN14)OUT3(PIN11)
BlueOUT4(PIN13)OUT4(PIN14)

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

Схема этой же самой конструкции, но с драйвером мотора L293D, будет выглядеть следующим образом.

Внешний вид устройства с использованием ULN2003 приведен в начале статьи, а с использованием L293D он будет выглядеть следующим образом:

Соедините все компоненты устройства в соответствии с приведенной схемой соединений (одной из двух). Для управления шаговым двигателем мы будем использовать PORTA микроконтроллера Atmega16. К контактам шагового двигателя нет необходимости подключать питание – для управления им нам понадобятся только контакты его катушек (coil pins) – верно для ULN2003, для L293D немного по другому. Очень важен порядок контактов для того чтобы шаговый двигатель работал корректно. Для микросхемы ULN2003 используются четыре ее входа и четыре ее выхода – входы соединяются с контактами PORTA микроконтроллера, а выходы – с сигнальными контактами шагового двигателя. Также подсоедините кнопку к контакту сброса (Reset pin) чтобы иметь возможность осуществлять сброс микроконтроллера Atmega16 всегда, когда нам это понадобится. Подсоедините к микроконтроллеру кварцевый генератор. Все устройство должно быть запитано напряжением 5В.

Исходный код программы на языке С (Си) с пояснениями

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

Подключение шагового двигателя FL86STH65-2808A к микроконтроллеру.

Попал ко мне в руки на днях шаговый двигатель FL86STH65-2808A с драйвером SMD-4.2, задача была научиться управлять ним, используя микроконтроллер.

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

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

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

Скручиваем провода между собой и зажимаем их в клеммнике.

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

Что имелось в виду под получением нужного тока?

Так как мы соединили обмотки двигателя параллельно, то ток, протекающий через двигатель, равен Iфазы * √2 или 1.4*Iфазы. Понять это очень просто,в документации указывается рабочий ток обмотки/фазы и её сопротивление. Максимальная мощность потребляемая двигателем, остаётся одинаковой при параллельном и последовательном включении обмоток и равна

Читать еще:  Chery fora от чего двигатель

При параллельном соединении обмоток, полное сопротивление двигателя в 2 раза меньше сопротивления обмотки, давайте подставим его в формулу

Что и требовалось доказать.

Силовые линии подключили, осталось подключить сигнальные. Для управления двигателем используются три сигнала: ENABLE, DIR и STEP, если перевести их названия, становится понятно какой за что отвечает. Для тех кто учил немецкий разъясню, уровень сигнала DIR определяет направление вращения, по каждому фронту сигнала STEP делается шаг. Отключение обмоток двигателя осуществляется при переходе сигнала ENABLE с низкого в высокое состояние. Ниже изображена осциллограмма управляющих сигналов.

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

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

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

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

Как подключить электродвигатель к 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

Читать еще:  Все о тюнинге 16 клапанных двигателей

А вот так выглядит подключение подключение коллекторного двигателя к 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° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.

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