Bmw-rumyancevo.ru

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

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

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

Шаговый двигатель — это мотор, который управляется несколькими электромагнитными катушками.

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

Подобная конструкция позволяет реализовать очень точное управление углом поворота ротора шагового двигателя относительно катушек — статора. Можно выделить два основных типа шаговых моторов: униполярные и биполярные шаговые двигатели.

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

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

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

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

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

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

  • Напряжение питания: 5 В (постоянный ток);
  • Количество фаз: 4;
  • Количество шагов: 64;
  • Угол поврота на один шаг: 5.625 градуса
  • Частота: 100 Герц;
  • Частота холостого хода по часовой стрелке: > 600 Герц;
  • Частота холостого хода против часовой стрелки: > 1000 Герц;
  • Крутящий момент > 34.3 миллиньютон на метр;
  • Сопротивление вращению: 600-1200 грамм на сантиметр;
  • Класс элетробезопасности: A;

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

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

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

  1. Микроконтроллер Arduino.
  2. Шаговый двигатель BYJ48 5В.
  3. Драйвер шагового двигателя ULN2003.
  4. Коннекторы.
  5. Источник питания 5v — необязательно.

Скетч для Arduino

В Arduino IDE есть встроенная библиотека для управления шаговыми двигателями. После подключения шагового двигателя, ULN2003 и Arduino, вы можете загрузить скетч из категории Examples и .

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

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

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

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

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

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

Шаги = 48 * 16 = 768

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

Модуль драйвера шагового двигателя ULN2003 подключается к Arduino контактами IN1 — IN4 к D8 — D11 соответственно.

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

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

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

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

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

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

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

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

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

Схема подключения: IN1 >> D8 IN2 >> D9 IN3 >> D10 IN4 >> D11 VCC . 5V.

Лучше использовать внешний источник питания 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 массиве хранится последовательность, которая

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

* а в столбцах — текущий input пин

int factor = abs(noOfSteps) / noOfSteps; // Если noOfSteps со знаком +, factor = 1. Если noOfSteps со знаком -, factor = -1

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. В результате мы получаем простой и интуитивно понятный доступ к номерам пинов в дальнейшем коде.

Читать еще:  Двигатель 1jz что это

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

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

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

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

В 28 строчке мы объявляем частоту вращения с использованием 2-х мерного массива. Строки представляют шаг, столбцы — выходящие пины.

В 37 строчке рассчитывается значение переменной factor, которое равно +1 или -1 в зависимости от знака, который мы передали при указании шагов. Это значение используется для определения направления перебора массива, то есть, в результате, для изменения направления вращения.

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

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

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

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

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

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

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

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

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

Перейдите в папку:

C:Program Files (x86)Arduinolibraries

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

Переместите созданные файлы .h и .cpp в созданную папку.

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

Управление биполярным шаговым двигателем. Часть 2. Схема с контроллером PIC12F629 и драйвером L293D

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

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

Итак, в чём же отличия? Во-первых, — в обозначениях. У LB1838 выходы обозначены как OUT, а у L293D они обозначены буквой Y, у LB1838 управляющие входные сигналы обозначены как IN, а у L293D они обозначены буквой A. Во-вторых, — в количестве управляющих сигналов. У LD293D для каждого выхода есть свой управляющий входной сигнал, а у LB1838 один входной сигнал управлял сразу двумя выходами. В остальном, никаких принципиальных отличий с точки зрения управления, в этих драйверах нет.

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

Таблица истинности для L293D (состояние выходов в зависимости от состояния входов):

1,2EN1A1Y (a)2A2Y (b)3,4EN3A3Y (c)4A4Y (d)
HighHigh+High+HighHigh+High+
HighLowLowHighLowLow
LowXотклXотклLowXотклXоткл

Если внимательно посмотреть на диаграмму слева, то можно увидеть, что сигнал 1A можно сделать одинаковым с сигналом 3A, а сигнал 2A — одинаковым с сигналом 4A. В этом случае наша диаграмма упроститься и будет выглядеть так:

На последней диаграмме нарисовано, какие комбинации уровней сигналов должны быть на управляющих входах драйвера (1,2EN, 3,4EN, 1A, 2A, 3A, 4A) для того, что бы получить соответствующие комбинации подключения обмоток двигателя, а также стрелками указан порядок смены этих комбинаций для обеспечения вращения в нужную сторону.

Теперь внимательно смотрим на последнюю диаграмму и сравниваем её с соответствующей диаграммой для драйвера LB1838. Мы видим, что в случае с L293 нам придётся использовать для управления драйвером 4 ноги контроллера вместо трёх, как это было в случае с LB1838, соответственно схему и программу для контроллера придётся переделать.

Начнём со схемы. Схема для L293 будет выглядеть так:

Элементы можно взять те же самые, что и для схемы с LB1838:

Далее давайте подумаем, что нужно будет изменить в программе микроконтроллера, чтобы наше устройство с L293D работало аналогично девайсу на LB1838 (который мы рассматривали в первой части). А, собственно говоря, практически ничего. Что у нас изменилось? Только количество ног и их подключение (нога GP4 у нас теперь будет использоваться для управления драйвером, а КН2 мы подключим к ноге GP3). Соответственно, в программе мы должны сделать следующие три вещи:

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

Читать еще:  Что такое транцевая высота двигателя

movlw b’00110000′ ; настройка выходов (GP4,GP5 — входы)

movlw b’00101000′ ; настройка выходов (GP3,GP5 — входы)

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

Павел

Я пытаюсь подключить биполярный шаговый двигатель NEMA 17 к Arduino Uno с помощью модуля контроллера шагового двигателя L298N и контролировать его скорость с помощью потенциометра 10К.

В Интернете я не нашел примеров того, как сделать это явно (с помощью модуля контроллера L298N), поэтому я прибег к попытке самому разработать схему. Это, буквально, моя самая первая попытка создать схему самостоятельно. У меня нет опыта в электронике или электротехнике. Я собрал как можно больше информации с сайта arduino и производителей самого мотора. В этом я уверен:

Двигатель должен питаться независимо от Arduino, используя 2,55 В и 1,7 А.

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

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

Все основания должны быть связаны вместе.

В дополнение к этому я также делаю несколько (надеюсь, верно) предположений:

Модуль контроллера L298N должен обеспечить необходимый H-мост.

Входы H-моста должны быть подключены к последовательно индексированному массиву цифровых выводов на Arduino.

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

Поскольку источник на 2,5 вольта недоступен, я могу создать источник с делителем напряжения.

Изменение полярности шаговых проводов к модулю контроллера (h-мост) не имеет значения. То есть, если пара подключенных проводов шагового двигателя Wire1 и Wire2 подключена к Out1 и Out2 на модуле контроллера L298N (соответственно), то подключение проводов к Out2 и провод2 к Out1 даст тот же эффект, что и исходная проводка.

Основываясь на вышеупомянутых фактах / предположениях, я создал схему того, как я думаю, что все должно быть подключено:

Обратите внимание, что два экземпляра, обозначенные как 2.5V, связаны друг с другом. Кроме того, все основания также связаны друг с другом.

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

Если что-то неясно с моей схемой или предположениями, пожалуйста, дайте мне знать, и я уточню как смогу.

Игнасио Васкес-Абрамс

alexan_e

Оли Глейзер

Хорошо, у вас есть пара вопросов:

Ваш делитель напряжения будет иметь напряжение

2,55 В в его центре, но только без нагрузки — по закону Ома, как только вы представите нагрузку с низким сопротивлением, напряжение сильно упадет. Например, если сопротивление вашей шаговой катушки составляет около 3 Ом, то напряжение упадет до

9 мВ !. Посмотрите различные вики-страницы о максимальной передаче мощности и делителях напряжения.

Вместо того, чтобы убедиться, что у вас точно правильное напряжение, вам лучше воспользоваться драйвером шагового двигателя, который обеспечит не больше мощности, чем может выдержать двигатель. Они делают это, «прерывая» напряжение на импульсы, и есть из чего выбирать. Сейчас L298 довольно старый, использует биполярные транзисторы, и после напряжений насыщения источника / приемника у вас почти не останется ничего, чтобы управлять двигателем. Я хотел бы прочитать эту вики-страницу на Stepper Driving (и связанных страницах), а также спросить людей, которые уже использовали эти настройки — ребята, вероятно, являются хорошим источником информации.

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

Павел

robomon

Делители напряжения не подходят для вождения двигателей. Ниже приведены причины

1) Напряжение, подаваемое от делителя напряжения, зависит от потребляемого тока. Поэтому, когда двигатель потребляет больше тока, напряжение на делителе напряжения не будет 2,5 В. Для постоянного напряжения питания требуются регуляторы постоянного напряжения. Эти регуляторы напряжения поддерживают постоянную мощность на выходе независимо от тока, потребляемого двигателем.

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

Поэтому используйте регулятор напряжения, который может выдавать 2,55 В (существуют регуляторы переменного напряжения, которые могут обеспечивать это напряжение). Также ищите правильные номинальные токи, так как вашему степперу требуется 1,7 А.

Использование L298N для управления шаговым двигателем не так просто. L298N подходит для привода двигателей постоянного тока. Драйверы шаговых двигателей являются лучшими для привода шаговых двигателей (см. Http://www.pololu.com/product/1182. Имеются даже более дешевые модули драйверов с той же микросхемой)

Есть определенные преимущества при использовании драйвера шагового двигателя

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

Читать еще:  Вибрация двигателя на холодную toyota

2) Вы можете уменьшить программные издержки при создании шаговых импульсов.

Arduino.ru

Ардуино, Биполярный Шаговый двигатель(4 провода), транзистор ULN2003, l298n,Breadboard

Имеется Ардуино, Биполярный Шаговый двигатель(4 провода), транзистор ULN2003, l298n,Breadboard.

Можно ли как-нибудь их соединить чтобы двигатель заработал? Если можно то какая будет схема и код Ардуино?

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

Snubist, Где это Вы видели у биполярника 5 выводов?

UPD: Теоретически (сам не пробовал), схема подключения есть здесь

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

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

light777, подскажите решение, пожалуйста. Ссылка выше не открывается

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

http://docs.com/ZXAB здесь на сайте pdf каточка номер 14

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

Спасибо большое!) сейчас попробую

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

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

у вас есть L298 используйте ее

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

Боюсь, что драйвер ULN2003 не подойдет, т.к. он пропускает всего 0,5 А на канал, а параметры моего двигателя:

— Ток номинальный: 2,5А
— Напряжение питания номинальное: 3,1В
— Сопротивление обмотки: 1,25ом

Есть ли альтернативы?

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

может название или ссылку на двигатель приведете?

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

Легко) Биполярный шаговый двигатель 42BYGHW811 http://carduino.ru/product_info.php?products_id=1987. Достаточно мощный и точный для моих задач

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

ну с натяжкой можно и 298 использовать, но лучше что нибудь получше взять

если на этом же сайте то выбор совсем невелик

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

l298n у меня есть, в данный момент пытаюсь собрать на ней по схеме http://www.bristolwatch.com/L298N/L298N_stepper.gif, но без конденсаторов. ENA ENB замкну на +5 В. Что получится — отпишусь

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

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

но и без них будет работать

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

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

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

чтоб не перегревался используйте такой драйвер http://ba3ar.kz/k1_259.php

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

Боюсь, что поставить вентилятор на мой драйвер в 15 раз дешевле, чем купить предложенный Вами девайс)

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

чтоб не перегревался используйте такой драйвер http://ba3ar.kz/k1_259.php

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

я бы поставил такой

но ток до 2А всего, интересно их параллельно можно соеденять или нет. наверно нет

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

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

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

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

Интересное дело, если вскрыть крышечьку на знаменитом 28byj, то он , с лёгкостью необыкновенной , превращается в биполярник со всеми вытекающими плюсами. Я проверил. И это правда.

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

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

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

Легко) Биполярный шаговый двигатель 42BYGHW811 http://carduino.ru/product_info.php?products_id=1987. Достаточно мощный и точный для моих задач

легко L298-ая болтом М3 к железке прижми и забудь

видео лень писать выкладывать

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

диоды тебе не дадут спалить ключи

если заклинишь мотор и тока не хватит питателю выдать он просто рычит

если пулсация шустра мотор просто свистит

оптимально мотор безшумен

ничего не спалишь

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

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

твой кусок кода 298 внутри сам найдешь для этих шаговиков

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

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

пришли код аппликейшена и ино поигратся 🙂 artem265 sabaka yandex.ru

писал на готовый cnc g-code application или обе пары сам писал

не увидел ардуинка уно р3 с 328 или без мега256 не выкрутился

я наверно с типового 256 с готовым парсером g-code слезать ближайшее время не буду пожалуй

придумываю очередной станок и кода отлаживаю 100килобайт поэтому в уно не вижу возможности

есть один проверенный на уно но приложения тоже готовые у меня

Ссылка на основную публикацию
Adblock
detector