Как подключить uln2003 к arduino

#21. Подключаем к Arduino Шаговый двигатель 28BYJ-48 на драйвере ULN2003

Сегодня в уроке подключим шаговый двигатель 28BYJ-48 к Arduino и научимся вращать вал двигателя в разные стороны и изменять скорость вращения с помощью потенциометра и энкодера KY-040.

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

Размера шагового двигателя 28BYJ-48. Необходимы при проектировании деталей для 3D печати.

Вот так выглядит схема шагового двигателя 28BYJ-48

Подавая сигналы в определённом порядке на выводы двигателя, двигатель можно вращать по часовой стрелке.

Для шагового режима.

Для полушагового режима.

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

В связи с тем, что двигатель 28BYJ-48 работает от 5в и при небольших токах, его можно подключить на прямую к Arduino.

Схема подключения к Arduino UNO будет следующая.

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

Для этого можно сделать массив подачи сигнала на пины микроконтроллера.

И в цикле выполнять каждую строчку массива. Но есть решение с более компактным кодом. Нашел я данный пример на канале Дмитрия Осипова. За что ему отельное спасибо!

Код для вращения в одну и в другую сторону будет вот таким.

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Пример подключения шагового двигателя 28BYJ-48 (5V)с использованием драйвер ULN2003.

Также у Дмитрия Осипова есть код для изменения скорости вращения с помощью потенциометра. Я его немного доработал, сделал обработку нажатия кнопки без задержки в 500 мс. Сейчас двигатель стал вращаться в обратную сторону без видимой задержки.

Для подключения буду использовать модуль SBT0811 на драйвере ULN2003.

Драйвер устроен вот таким образом.

Соответственно, наш код будет работать и с данным драйвером.

Подключим все по схеме и загрузим код в Arduino NANO.

Схема подключения для Arduino UNO будет аналогичной.

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Пример управления шаговым двигателем 28BYJ-48 с помощью Энкодера.

Для уменьшения количества элементов в схеме решил заменить потенциометр и тактовую кнопку на энкодер вращения KY-040. Как подключить энкодер вращения к Arduino рассказывал в предыдущем уроке.

Подключаем шаговый двигатель 28BYJ-48 и энкодер к Arduino по схеме.

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

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Вы также можете без проблем воспользоваться примером из стандартной библиотеки Stepper, которая позволит сделать тоже самое и при меньшем объёме кода. Но библиотека не даст вам понять, как это все устроено.

READ  Как подключить услугу закрытый профиль в одноклассниках

А вот сам пример вращения в одну сторону, а затем в другую с использованием библиотеки Stepper.

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

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

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке

Понравилась статья? Поделитесь ею с друзьями:

Источник

Подключение шагового двигателя 28BYJ-48 с драйвером на микросхеме ULN2003 к Arduino Uno

Ничего сверх естественного я вам не расскажу не покажу.

Стрельнуло мне как то в голову попробовать снимать такого рода рода ролики. Значит в этом ролике я покажу как подключить и работу шагового двигателя 28BYJ-48 на драйвере ULN2003 к Arduino Uno. Все делал на макетке.

С помощью кнопок происходит управление движком влево-вправо-стоп. Резисторы на кнопках нужны что бы убрать дребезг с них.

Для чего это ы что с ним делать?

Ну это уже на сколько у вас фантазия развита. Как вариант: открытие и закрытие жалюзей. Вращающийся стенд для съемки товара в 360 градусов. Использовать как мотор-колесо в роботехнике.

Скетч и библиотеки есть в описании виде, можно ли сюда добавлять не знаю.

Критика, предложения, пожелания принимается и все будет учтено в последующих видео.

Найдены дубликаты

Дребезг не уменьшат, дребезг только фильтром убирается.. А наводки могут убрать. Сами по себе входы имеют высокое сопротивление, соответственно наводки вызывают большой шум на входе. Резистор уменьшает входное сопротивление и снижает уровень помех на входе.

Входное сопротивление АЦП стремится к бесконечности. Так? Так. Паралельное включение уменьшает общее сопротивление. Так? Так. Что не так?

Трудно сказать не видя схемы

Тут нужна либо RC-цепочка, либо программный фильтр

Согласен, для убирания дребезга, нужен, или RC фильтр или программный. вВ моем случаи, в скетче есть антидребезг, сам он не работает. В монитор порта всякая ерунда писалась типа, двигатель крутится то вперед, то назад, опять назад, останавливается и так бесконечно. Сам двигатель Ведет себя так же, не адекватно. Но после подключения кнопок таким образом как на схеме, у меня все это пропало. Четкие нажатия, в мониторе чистота, все только по сути и адекватное поведения ШД.

Может я не правильно назвал данное использование резюков, поправьте меня.

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

READ  Как подключить гирлянду к усилителю

Простейший экспоненциальный фильтр (чтоб ещё и с кондерами не заморачиваться):

bool state = DigitalRead (PIN);

filtered_state = filtered_state * 0.95 + state * 0.05;

if (filtered_state 0.7)

Вот, уже лучше. Если библиотеки не самописанные, значит можно выложить на них ссылку, либо прописать ссылки в комментариях прямо в скетче. Скетч можно выложить согласно правилам сообщества: Arduino & Pi

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Да и подобные посты лучше всего публиковать в этом сообществе. Можете попросить модератора, чтобы его туда перенесли.

Источник

Arduino, шаговый двигатель 28-BYJ48 и драйвер ULN2003

В данной статье мы рассмотрим работу униполярного шагового двигателя 28-BYJ48 с драйвером ULN2003.

Униполярные шаговые двигатели имеют пять или шесть контактов для подключения и четыре электромагнитные катушки в корпусе (если быть более точными, то две катушки, разделенные на четыре). Центральные контакты катушек соединены вместе и используются для подачи питания на двигатель. Эти шаговые моторы называются униполярными, потому-что питание всегда подается на один из этих полюсов.

Спецификация и драйвер шагового двигателя

Существуют разные модели драйверов (контроллеров) шаговых двигателей. Среди них можно выделить самые популярные в DIY разработках на базе Arduino: L293, ULN2003, A3967SLB.

Как правило, шаговый двигатель 28-BYJ48 используют в паре с драйвером ULN2003.

Спецификацию шагового двигателя 28-BYJ48 на английском языке вы можете скачать здесь. Краткие выдержки основных технических характеристик приведены ниже:

Внешний вид и схемы подключения ULN2003 приведены на изображениях ниже

Примечание. Если вы захотите использовать плату L293 вместо ULN2003, красный контакт подключать не надо.

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

Скетч для Arduino

На этом этапе возникают определенные нюансы:

У этого двигателя передаточное отношение 1:64, а угол поворота 5.625, то есть у него 4096 шагов.

Шаг = Количество шагов на один поворот * передаточное отношение.

Шаги= (360/5.625)*64″Передаточное отношение» = 64 * 64 =4096. Это значение надо учесть в скетче Arduino.

А вот угол поворота для шаговых двигателей от adafruit равен 7.5 градусов, а передаточное отношение 1:16, так что количество шагов за 1 полный оборот вала равно:

Шаги за один оборот = 360 / 7.5 = 48.

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

Для подачи питания на ваш мотор, рекомендуется использовать внешний источник питания 5V с силой тока 500mA минимум. Не питайте двигатель непосредственно от контакта 5V на плате Arduino.

Проблема направления вращения в библиотеке и как ее исправить

Когда вы загрузите скетч на Arduino, шаговый двигатель будет вращаться в одном направлении с помощью функции:

READ  Как подключить магнитолу jvc kd g227

То есть, вам надо указать в параметрах количество шагов для поворота ротора вала.

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

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

Измененный код для Arduino

Окончательная версия скетча для шагового двигателя:

/* Скетч для шагового двигателя BYJ48

Лучше использовать внешний источник питания Gnd

Автор кода: Mohannad Rawashdeh

Детали на русском языке: /arduino-shagovii-motor-28-BYJ48-draiver-ULN2003

Англоязычный вариант: http://www.instructables.com/member/Mohannad+Rawashdeh/ 28/9/2013 */

boolean Direction = true;

unsigned long last_time;

unsigned long currentMillis ;

void stepper(int xw)<

StepperMotor::StepperMotor(int In1, int In2, int In3, int In4)<

// Записываем номера пинов в массив inputPins

// Проходим в цикле по массиву inputPins, устанавливая каждый из них в режим Output

for (int inputCount = 0; inputCount inputPins[inputCount], OUTPUT);

void StepperMotor::setStepDuration(int duration)<

void StepperMotor::step(int noOfSteps)<

* в данном 2D массиве хранится последовательность, которая

* используется для поворота. В строках хранится шаг,

noOfSteps = abs(noOfSteps); // Если noOfSteps был отрицательным, делаем его позитивным для дальнейших операций

* В цикле ниже обрабатываем массив sequence

* указанное количество раз

for(int sequenceNum = 0; sequenceNum inputPins[inputCount], sequence[(int)(3.5-(3.5*factor)+(factor*position))][inputCount]);

Давайте посмотрим на конструктор на строчке 4. Мы начинаем с того, что добавляем выбранные пользователем пины в массив inputinputPins в строчках 6-9. В результате мы получаем простой и интуитивно понятный доступ к номерам пинов в дальнейшем коде.

В 12 строке мы пробегаемся по массиву inputinputPins и устанавливаем для каждого режим OUTPUT.

В 15 строке мы устанавливаем длительность шага по-умолчанию равной 15 мс.

В 18 строчке у нас функция-сеттер для установки длительности шага.

Теперь давайте рассмотрим метод step. Этот метод дает возможность шаговому двигателю делать переданное методу количество шагов.

В 38 строчке мы присваем noOfSteps переменной позитивное значение.

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

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

В 46 строчке мы устанавливаем задержку в соответствии со спецификацией.

В 47 строке мы пробегаемся по номерам пинов.

В 48 строке мы передаем цифровой сигнал на текущий номер пина.

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

Доступ к библиотеке для шагового двигателя из Arduino IDE

Нам осталось добавить созданные файлы в папку библиотек Arduino IDE и мы сможем импортировать ее в любой наш проект.

C:\Program Files (x86)\Arduino\libraries

И создайте папку под названием StepperMotor.

Теперь вы можете импортировать библиотеку в IDE (sketch > import library. > StepperMotor) с помощью директивы

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector