No Image

L298n arduino подключение шагового двигателя

СОДЕРЖАНИЕ
264 просмотров
12 декабря 2019

Драйвер моторов на базе микросхемы L298N (RKP-MDL298-01A-V2 подробнее =>>) позволяет управлять двумя моторами постоянного тока либо шаговым двигателем с потребляемым током до 2 Ампер.

В данной же статье мы рассмотрим драйвер двигателей базе микросхемы L298N собранный на платке в виде модуля.
В отличии от микросхемы L293D, в микросхеме L298N не встроены защитные диоды, их необходимо устанавливать в обвязку микросхемы дополнительно (8 штук по бокам).

По функционалу микросхема L298N полностью идентична микросхеме L293D. Мы видим те же управляющие выводы. Чередование разноименных сигналов (высокий логический уровень или низкий) на парах выводов IN1, IN2 и IN3, IN4 задают направление вращения моторов.
Выводы ENABLE A, B (ENA привязан к IN1, IN2. ENB к IN3, IN4) отвечают за раздельное управление каналами. Могут использоваться в двух режимах:

Условно "активном" режиме, когда ими будет управлять контроллер (рис. 1) — высокий логический уровень разрешает вращение моторов, низкий запрещает вне зависимости от состояния выводов "IN". Для регулировки скорости моторов, на "EN" выводы подается ШИМ (PWM) сигнал.

Условно "пассивном" режиме, просто притянув выводы "EN" к высокому уровню (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки, соединенные с +5V. Замыкаем выводы с помощью джамперов (рис. 2). В данном режиме мы не сможем регулировать скорость двигателей, они будут всегда вращаться в полную скорость (за то для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему, а вот для остановки в данном варианте, состояние выводов будет уже играть роль. Для остановки нужно будет подавать одноименные сигналы на выводы "IN".

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

Клеммник подачи питания и работа стабилизатора.

Разъем “+12V” предназначен для подачи питания на моторы и одновременно, при одетом джампере, подает питание на стабилизатор, который выдает +5V для питания логики драйвера.
Выходит, при таком варианте, не нужно тянуть лишний провод на разъем +5V.
Маркировка именно “+12V” связана с тем, что напряжение питания моторов может лежать в диапазоне от 5V до 35V, в то время как максимальное входное напряжение стабилизатора 12V. То есть, при одетом джампере, подача свыше 12V может спалить стабилизатор.

Как мы уже поняли, маркировка “+12V” носит предупредительно-информативный характер.
При напряжении питания свыше 12V, без опаски подвеем нужное напряжение на данный вывод, но не забываем снять джампер.
Теперь напряжение не поступает на стабилизатор и не сможет повредить его, но теперь необходимо подать внешнее +5V. Подключение моторов к модулю L298N

Начнем с подключения одного мотора, с притянутым к +5V выводом ENB.

Заставим моторчик вращаться "вправо" 4 секунды, остановиться на 0.5 секунды, вращаться "влево" 4 секунды, остановка 5 секунд и снова цикл повторяется.

Пример программного кода

В данном примере мы подсоединили ENB к выводу ШИМ (D3), и задействуем возможность драйвера управлять скоростью, меняя скважность посылаемого ШИМ сигнала. Значения скважности задаются функцией analogWrite (pin, число) , где число изменяется от 0 до 255, прямо пропорционально скважности сигнала. Для наглядности, подобраны четыре значения, при которых двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается.

Пример программного кода Ну и напоследок подключим два двигателя с регулировкой скорости.

В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости.

Автор: Сергей · Опубликовано 20.12.2018 · Обновлено 14.10.2019

Одним из самых простых и недорогх способов управления двигателями постоянного тока является модуль L298N Motor Driver с Arduino. Он может контролировать скорость и направление вращения двух двигателей постоянного тока, а так же управлять биполярным шаговым двигателем (типа NEMA 17).

Технические параметры

► Напряжение питания логики модуля: 5 В
► Потребляемый ток встроенной логики: 36 мА
► Напряжение питания драйвера: 5 В – 35 В
► Рабочий ток драйвера: 2 А (пиковый ток 3 А)
► Габариты: 43.5 мм х 43.2мм х 29.4мм

Общие сведения

Основной чип модуля это микросхема L298N, состоящая из двух H-мост (H-Bridge), один для выхода A, второй для выхода B. H-мост широко используется в электронике и служит для изменения вращения двигателем, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытие двух отдельных транзистора изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.

Читайте также:  Двигатель к тепловому вентилятору печки

Для управления скоростью двигателя постоянного тока используется метод PWM (Широко-импульсной модуляции).

Модуль L298N содержит разъем для подключения питания, ряд перемычек для настройки модуля, два выхода A и B и разъем управления, которые регулируют скорость и направление вращения, назначение каждого можно ознакомится ниже:

Вывод Vss — питание двигателей, от 5 до 35 В;
Вывод GND — общий вывод заземления;
Вывод Vs — питание для логической схемы;
Перемычка ENA — используются для управления скоростью двигателя A;
Вывода IN1 и IN2 — используются для управления направлением вращения двигателя A;
Вывода IN3 и IN4 — используются для управления направлением вращения двигателя B;
Перемычка ENB — используются для управления скоростью двигателя B;
Выходы OUT1 и OUT2 — разъем для двигателя A;
Выходы OUT3 и OUT4 — разъем для двигателя B;

Принципиальная схема модуля L298N

Питание модуля.
Питание модуля L298N осуществляется через трех контактный разъем, шагом 3,5 мм:
Vs — источник питания двигателей, 3B — 35B
GND — земля
Vss — источник питания модуля, 4,5В — 5,5В
Фактически у модуля L298N, есть два контакта питания, а именно. «Vss» и «Vs». От «Vs» питаются двигатели с допустимым напряжением от 5 В до 35 В, а от «Vss» питается логическая схема модуля 4,5В до 5,5В. На плате установлен встроенный стабилизатор напряжения на 5 Вольт (78M05), его можно включить или отключить с помощью перемычки. Когда перемычка установлена, стабилизатор включен и питает логику модуля (Vss) от источника питания двигателя (Vs). При включенном стабилизаторе, вход «Vss» работает как выход и обеспечивает 5В с током 0,5 А. Когда перемычка убрана, стабилизатор отключен и необходимо отдельно подключить питание 5 Вольт на вход Vss.

Внимание! Нельзя установить перемычку, если напряжение двигателя ниже 12 Вольт.

Падение напряжения L298N
Падение напряжения драйвера L298N составляет около 2 В, это связано с внутренним падением напряжения в транзисторах в цепи H-мосте. Таким образом, если мы подключим 12 В к источнику питания двигателя, то двигатели получат напряжение около 10 В. Это означает, что двигатель на 12 В не будет работать с максимальной скоростью, для получения максимальной скорости, напряжение поданное на двигателя должен быть выше напряжения (2 В), чем потребность в фактическом напряжении двигателя. Учитывая падение напряжения на 2 В, если вы используете двигатели 5 В, вам необходимо обеспечить питание 7 В. Если у вас 12-ваттные двигатели, то напряжение питания вашего двигателя должно составлять 14 В.

Управления скоростью
Разъемы управления скоростью ENA и ENB используются для включения и выключения управления скоростью двигателей. Когда перемычка установлена, двигатель вращается с максимальной скоростью. Если необходимо управлять скоростью двигателей, необходимо убрать перемычку и подключить выводы к контактам с поддержкой PWM на Arduino.

Подключение L298N к Arduino (коллекторный двигатель)

Необходимые детали:
Arduino UNO R3 x 1 шт.
► Драйвер мотора на L298N (5-35V, 2A) x 1 шт.
► Коллекторный двигатель x 2 шт.
► Комплект проводов DuPont 2.54 мм, 20 см x 1 шт.

Подключение:
Первым делом необходимо подключить источник питания 12B к двигателям, в примере используется распространенные двигатель постоянного тока, рассчитанные на 3B . . . 12B (применяемые в робототехнике). Учитывая внутреннее падение напряжения на микросхеме L298N, двигатели получат 10 В и будут вращаться не в полную силу.
Далее, нужно подключить 5 вольт на логическую схему L298N, для этого воспользуемся встроенным стабилизатором напряжения, который работает от источника питания двигателя, поэтому, перемычка EN должна быть установлена.
Теперь осталось подключить управляющие провода ENA, IN1, IN2, IN3, IN4 и ENB к шести цифровым выводам Arduino 9, 8, 7, 5, 4 и 3. Обратите внимание, что выводы Arduino 9 и 3 поддерживают ШИМ. Теперь, подключаем двигатели, один к клемме A (OUT1 & OUT2), а другой к клемме B (OUT3 & OUT4). Принципиальная схема подключения приведена ниже.

Осталось подключить Arduino к источнику питания и загрузить скетч.

Читайте также:  Вкусный хлеб в духовке рецепт дрожжевой

Блог технической поддержки моих разработок

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

Использование шаговых двигателей в биполярном режиме дает:

  • Повышение крутящего момента примерно на 40% по сравнению с униполярным двигателем.
  • Позволяет применять двигатели с любой конфигурацией фазных обмоток.

Недостаток биполярного режима – более сложный драйвер.

Драйвер биполярного шагового двигателя.

У биполярного шагового двигателя две обмотки, по одной для каждой фазы.


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

  • подключать к источнику питания в прямой полярности;
  • отключать;
  • подключать к источнику в противоположной полярности.

Такую коммутацию может обеспечить мостовая схема с четырьмя ключами.


При замыкании ключей 1 и 2 на обмотку подается напряжение питания в прямом направлении. Замыкание ключей 3 и 4 подключает источник питания в обратной полярности.

Драйвер биполярного шагового двигателя намного сложнее, чем драйвер униполярного привода.

  • Требуется 4 ключа на обмотку, т.е. 8 ключей на двигатель.
  • Необходимы сложные схемы управления верхними ключами (ключи 1, 4) от логических сигналов микроконтроллера, “привязанных” к земле.
  • Существуют проблема сквозных токов. Они возникают при одновременном включении транзисторов из одного плеча (ключей 1,3 или 2,4). Это может привести к замыканию источника питания и выгоранию ключей.
  • Сквозные токи могут появляться из-за неодинакового быстродействия верхних и нижних ключей. Например, верхний ключ уже открылся, а нижний не успел закрыться.

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

Драйвер биполярного шагового двигателя L298N.

Микросхема L298, наверное, самый распространенный биполярный драйвер.


Это полный мостовой драйвер, позволяющий управлять биполярными нагрузками с током до 2 А и максимальным напряжением 46 В. Подробное описание микросхемы L298N можно посмотреть по этой ссылке.

На базе микросхемы L298N разработан модуль L298N.


Конструктивно он выполнен на одной плате размерами 43 x 43 мм. На плате установлены:

  • микросхема L298N с радиатором охлаждения;
  • клеммные колодки для подключения питания и нагрузки;
  • разъем для подключения управляющих сигналов;
  • стабилизатор напряжения 5 В;
  • защитные диоды.

Принципиальная схема модуля L298N.

Микросхема L298N включена по стандартной схеме.

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

Модуль содержит стабилизатор напряжения + 5 В для питания логической части микросхемы. Напряжение +5 В формируется из напряжения питания двигателя. На клеммной колодке оно обозначено +12 V, но может меняться в широких пределах 8 … 46 В.

Управления полумостами происходит от входных сигналов IN1, …, IN4. Уровни сигналов 0 / 5 В. При низком уровне выход подключается к земле, при высоком – к источнику питания двигателя (+12 V).

Предельно-допустимый ток фазы 2 А. Защиты по току в модуле нет. Но реализация токовой защиты значительно усложняет схему, а короткое замыкание обмоток двигателя событие маловероятное. Я с таким не встречался. К тому же механическое блокирование вала шагового привода не вызывает перегрузки по току.

Это все очень коротко. Подробно можно посмотреть в этой статье.

По моей партнерской ссылке цена модуля L298N составляет всего 200 руб. (на ноябрь 2016 г.). В то время как одна микросхема L298N в Ростове стоит 250 руб. Гораздо дешевле купить модуль, чем собирать драйвер на отдельных компонентах, не говоря о времени и разработке печатной платы. Перейти в магазин >>

Подключение биполярного двигателя к плате Ардуино.

Я подключил к плате привод FL42STH47-1684. Это биполярный шаговый двигатель с 4 выводами, током фазы 1,68 А и сопротивлением обмоток 1, 65 Ом.

Источник питания у меня напряжением 12 В. Если двигатель подключить непосредственно через ключи, то ток в обмотках будет 12 В / 1,65 А = 7 А. Двигатель просто сгорит. Поэтому я последовательно с каждой обмоткой включил ограничительные резисторы. Схема выглядит так.

Я использовал резисторы сопротивлением 10 Ом. Ток фазы можно рассчитать по формуле:

Iфазы = ( Uпитания – Uключей ) / ( Rограничительный + Rобмотки)

  • Iфазы – ток фазы.
  • Uпитания – напряжение источника питания, у меня 12 В.
  • Uключей – падение напряжения на открытых ключах драйвера. Для L298 это сумма падений на верхнем (Source Saturation Voltage) и нижнем ключах (Sink Saturation Voltage). Из справочных данных определяем, что на ключах драйвера L298N падает 2-2,5 В.
  • Rограничительный – сопротивление ограничительных резисторов. В моей схеме 10 Ом.
  • Rобмотки – сопротивление обмоток двигателя. У двигателя FL42STH47-1684 сопротивление 1,65 Ом.
Читайте также:  Бьет током от металлических предметов

В результате для моей схемы ток фазы будет:

Iфазы = (12 – 2) / (10 + 1,65) = 0,86 А.

На ограничительных резисторах может выделяться значительная мощность. В моей схеме 0,86 * 0,86 * 10 = 7,4 Вт. Я использовал резисторы мощностью 10 Вт.

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

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

Двигатель с 4 выводами.


Самая распространенная схема.

Двигатель с 6 выводами.


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

Двигатель с 8 выводами, последовательное соединение обмоток.


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

Двигатель с 8 выводами, параллельное соединение обмоток.


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

Проверка работы схемы.

Мой вариант схемы в собранном виде выглядит так.

В этом уроке программы писать не будем. Все программы из уроков 28, 29, 31, 32 должны работать без изменений. Только обратите внимание на последовательность подключения управляющих сигналов модуля L298N к выводам платы Ардуино. Выводы фаз A,B,C,D для униполярного двигателя соответствуют управляющим выводам IN1, IN3, IN2, IN4 модуля L298N.

Сначала я загрузил в плату Ардуино программу драйвера с управлением от компьютера по протоколу AT команд и проверил работу с программой верхнего уровня StepMotor. Резидентную программу (для платы Ардуино) и программу верхнего уровня (для компьютера) можно взять из урока 31.

Все работает. Скорость вращения моего привода, включенного по такой схеме, достигает 150 оборотов в минуту. Униполярный двигатель FL57STH76-1006 в предыдущих уроках вращался со скоростью не более 60 оборотов в минуту. Увеличение скорости вращения двигателя в 2,5 раза связано, прежде всего, с большей скоростью нарастания токов в обмотках. Происходит это из-за меньшей индуктивности обмоток и применения схемы с ограничительными резисторами. Для убедительности я рассчитаю скорость нарастания тока для обоих приводов.

Для двигателя из предыдущих уроков (FL57STH76-1006):

  • индуктивность обмотки 14 мГн;
  • при питании 12В ток в обмотке достигает значения 1 А за время
    T = I * L / U = 1 А * 14 мГн / 12 В = 1,2 мс.

Для двигателя, который я использовал в этом уроке (FL42STH47-1684):

  • индуктивность обмотки 3,2 мГн;
  • при питании 12В ток в обмотке достигает значения 1 А за время
    T = I * L / U = 1 А * 3,2 мГн / 12 В = 0,3 мс.

Отсюда и увеличение скорости вращения. Конечно, повлияло еще:

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

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

Дальше я проверил работу следящего электропривода с новым двигателем. Резидентная программа платы Ардуино осталась прежней. А для управления от компьютера я использовал программу Tracker из урока 32.

Следящая система стала работать на много быстрее. Я снял короткий ролик работы следящего электропривода в шаговом и полу шаговом режимах.

Вал двигателя следует за указателем на мониторе компьютера явно быстрее.

В этом уроке я постарался не только рассказать, как работать с униполярными шаговыми двигателями, но и показать влияние скорости нарастания тока в фазных обмотках, на скорость вращения двигателя.

В следующем уроке я расскажу, как работать со STEP/DIR драйверами шаговых двигателей. Представлю библиотеку для управления такими устройствами.

Комментировать
264 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector