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

В 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) с помощью директивы

Как работает шаговый двигатель

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

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

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

• Двигатель с постоянными магнитами (ротор из магнитотвердого материала). На роторе установлен один, или несколько, постоянных магнитов. Количество полных шагов в одном обороте таких двигателей, зависит от количества постоянных магнитов на роторе, и количества электромагнитов на статоре. Обычно в одном обороте от 4 до 48 шагов (один шаг от 7,5° до 90°).

Читать еще:  Что такое экономичный режим движения двигателя

• Реактивный двигатель (ротор из магнитомягкого материала). Еще такие двигатели называют двигателями с переменным магнитным сопротивлением. Ротор не имеет постоянных магнитов, он выполнен из магнитомягкого материала в виде многоконечной звезды. Данные двигатели встречаются редко, так как у них наименьший крутящий момент, по сравнению с остальными, при тех же размерах. Количество полных шагов в одном обороте таких двигателей, зависит от количества зубцов на звезде ротора, и количества электромагнитов на статоре. Обычно в одном обороте от 24 до 72 шагов (один шаг от 5° до 15°.)

• Гибридный двигатель (совмещает технологии двух предыдущих двигателей). Ротор выполнен из магнитотвердого материала (как у двигателя с постоянными магнитами), но имеет форму многоконечной звезды (как у реактивного двигателя). Количество полных шагов в одном обороте таких двигателей, зависит от количества постоянных магнитов на звезде ротора, и количества электромагнитов на статоре. Количество шагов в одном обороте таких двигателей может доходить до 400 (один шаг от 0,9°).

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

— Биполярный двигатель имеет 4 вывода. Выводы A и A питают обмотку AA, выводы B и B питают обмотку BB. Для включения электромагнита, на выводы обмотки необходимо подать разность потенциалов (два разных уровня), поэтому двигатель называется биполярным. Направление магнитного поля зависит от полярности потенциалов на выводах.

— Униполярный двигатель имеет 5 выводов. Центральные точки его обмоток соединены между собой и являются общим (пятым) выводом, который, обычно, подключают к GND. Для включения электромагнита, достаточно подать положительный потенциал на один из выводов обмотки, поэтому двигатель называется униполярным. Направление магнитного поля зависит от того, на какой именно вывод обмотки подан положительный потенциал. 6-выводной двигатель имеет ответвление от центральных точек обмоток, но обмотка AA не соединена с обмоткой BB. Если не использовать выводы центральных точек обмоток, то двигатель будет биполярным, а если эти выводы соединить и подключить к GND, то двигатель будет униполярным. 8-выводной двигатель является наиболее гибким в плане подключения электромагнитов. Данный двигатель можно не только использовать как биполярный или униполярный, но и самим определять, как соединить электромагниты обмоток, последовательно или параллельно.

Если у Вашего двигателя 4 вывода, значит он биполярный. Если у Вашего двигателя 5 выводов, значит он униполярный. Но если у Вашего двигателя 6 и более выводов, то это не значит что некоторые из них являются центральными выводами катушек электромагнитов. Дело в том, что есть двигатели, некоторые выводы которых (обычно крайние), электрически замкнуты, так биполярный двигатель может иметь 6 выводов. Точно определить тип соединений, для двигателей с 6 и более выводами, можно только измеряя сопротивление между выводами.

Для работы шагового двигателя (вне зависимости от его вида) можно выбрать один из трех режимов работы: Полношаговый режим — ротор поворачивается на 1 шаг за 1 такт. Полушаговый режим — ротор поворачивается на ½ шага за 1 такт. Микрошаговый режим — ротор поворачивается на ¼, ⅛ и т.д. шагов за 1 такт.

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

Как узнать количество шагов на шаговом двигателе?

#1 OFFLINE Крокодил

  • Пользователи
  • 3 сообщений
    • Пол: Мужчина
    • Из:Киргизия

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

    Читать еще:  105 лошадиных сил какой объем двигателя
    Прикрепленные изображения

    • Наверх

    #2 OFFLINE lkbyysq

  • Cтарожил
  • 8 386 сообщений
    • Пол: Мужчина
    • Город: Санкт-Петербург
    • Из:Санкт-Петербург

    От обратного пляшите. Двигатель 200 или 400 полных шагов на оборот. Импульсов на миллиметр посмотрите в программе. Миллиметров перемещения на один оборот двигателя измерьте.

    • Наверх

    #3 OFFLINE Крокодил

  • Пользователи
  • 3 сообщений
    • Пол: Мужчина
    • Из:Киргизия

    От обратного пляшите. Двигатель 200 или 400 полных шагов на оборот. Импульсов на миллиметр посмотрите в программе. Миллиметров перемещения на один оборот двигателя измерьте.

    Спасибо, что ответили. Двигатель 200 шагов, Steps per 320 (заводская настройка), за оборот проезжает 5мм. Скажите, как это просчитать?

    • Наверх

    #4 OFFLINE lkbyysq

  • Cтарожил
  • 8 386 сообщений
    • Пол: Мужчина
    • Город: Санкт-Петербург
    • Из:Санкт-Петербург
    • Наверх

    #5 OFFLINE T-Rex

  • Cтарожил
  • 3 989 сообщений
    • Пол: Мужчина
    • Из:Йошкар-Ола

    Двигатель 200 или 400 полных шагов на оборот.

    400 — большая редкость, «на практике не используется» ©. Массово применяемые гибридные шаговики — 200 полных шагов на один оборот вала.

    • Наверх

    #6 OFFLINE Крокодил

  • Пользователи
  • 3 сообщений
    • Пол: Мужчина
    • Из:Киргизия

    Микрошаговый режим работы шагового двигателя, дробление шага

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

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

    Из графика видно, что увеличивая дробление шага мы дискретно приближаемся к изменению значений токов в обмотках по закону Sin, со сдвигом фаз π/2.

    Теоретически, благодаря микрошаговому режиму, мы можем повысить разрешение шагового двигателя. Например, взяв двигатель с углом поворота ротора 1.8° (200 шагов на оборот), при микрошаговом режиме 1/8 получаем 800 шагов на оборот, при дроблении 1/16 – 3200 шагов на оборот и так далее. На практике же, для большинства используемых шаговых двигателей, повышение дробления шага больше 1/8 не дает ожидаемого повышения разрешения двигателя. Это происходит из-за несовершенства деталей шагового двигателя, инерции ротора, силы трения и ряда других причин.

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

    Ниже приведен результат испытаний связки шаговый двигатель + блок управления SMD 4.2 CAN в динамометрическом стенде.


    Из графиков можно сделать вывод, что дробление шага отрицательно сказывается на величине максимального момента двигателя, но положительно влияет на его равномерность (особенно это видно при режиме 1/128). Так же микрошаг сильно снижает максимальное количество оборотов в минуту, которое может выдать шаговый двигатель. Это происходит из-за того, что с увеличением дробления шага, растет количество переключений напряжения, подаваемого на обмотки, что ведет к росту потерь. Поэтому в драйверах нового поколения SMD-4.2i разгон и торможение двигателя происходит в микрошаговых режимах, а при увеличении скорости драйвер автоматически понижает дробления шага в момент, когда текущее дробление не дает преимуществ над меньшим дроблением для данной частоты вращения ротора шагового двигателя.

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

    Плюсы:

    • повышение разрешающей способности;
    • значительное снижение вибраций;
    • значительное снижение шума;
    • выравнивание момента;
    • избегание резонанса.

    Минусы:

    • снижение максимальной частоты вращения ротора;
    • снижение максимального момента шагового двигателя.

    Василий Фортуна, Сергей Сергеев

    Подпишитесь на наши новости

    Получайте первыми актуальную информацию от ООО «Электропривод»

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