L298n драйвер шагового двигателя схема подключения
Драйвер шагового двигателя L298n к плате Arduino
Одна микросхема L298N может управлять двумя двигателями и обеспечивает максимальную токовую нагрузку до 2А на каждый из них, а если задействовать параллельное включение для одного электродвигателя, то можно поднять токовый максимальный до 4 ампер.
Одна из разновидностей модуля драйвера шагового двигателя на микросхеме L298N выглядит следующим образом:
Для двигателя постоянного тока 1 “+” или для шагового A+ Для DC 1 “-” или для шагового A — Перемычка на 12 вольт. Снимите ее, если напряжение питания больше 12В. Питания вашего электродвигателя обеспечивается с этого выхода. Максимальное напряжение питания постоянным током 35 вольт. GND — земля. 5 вольт, если перемычка на 12 вольт замкнута. Идеально подходит для подключения платы Arduino и т.п. Коннектор для электродвигателя постоянного тока (ЭПТ) 1. Можно подключить к ШИМ-выходу для управления скоростью. IN1 IN2 IN3 IN4 Коннектор для ЭПТ 2. В случае использования шагового двигателя, подключать сюда ничего не требуется. ЭПТ 2 “+” или шаговый двигатель B+. ЭПТ 2 “-” или шаговый B-.
Для этого замыкаем перемычку как показано на рисунке, тем самым подключая вывод EN к +5V. При таком методе подключения драйвера мы способны регулировать скорость вращения, но в этом случае для управления одним каналом L298N будет задействованно два цифровых вывода вместо трех.
Теперь, заставим ЭД вращаться «вправо» 4 секунды, остановиться на одну секунду, вращаться «влево» 4 секунды, остановка 5 секунд и опять цикл стартует с начала.
// Подключение одного двигателя с помощью драйвера
int IN3 = 5; // Input3 подсоединен к выводу 5
int IN4 = 4;
void setup() <
pinMode (IN4, OUTPUT);
pinMode (IN3, OUTPUT);
>
void loop()
<
// На пины «IN» поданы разноименные сигналы, ЭД вращается вправо (001)
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
delay(4000);
// На оба вывода «IN» поступают сигналы одинаковой полярности, ЭД останавливается
digitalWrite (IN4, LOW);
delay(1000);
// На пару выводов «IN» поданы разноименные сигналы (но уже противоположные относительно условия 001), ЭД вращается влево
digitalWrite (IN3, HIGH);
delay(4000);
// Опять на обоих выводах «IN» одна полярность, ЭД не крутится
digitalWrite (IN3, LOW);
delay(5000);
>
В данном примере мы подключим управляющий вывод драйвера L298N ENB к выводу ШИМ (D3) Ардуино. После этого можно управлять скоростью двигателя, изменяя уровень скважности посылаемого ШИМ сигнала. Значения скважности в програмном коде задаются с помощью функцией analogWrite(pin, число), где число изменяется в диапазоне от 0 до 255, прямо пропорционально скважности. Для наглядности в рассматриваемом примере, подобраны четыре произвольных значения при которых ЭД стартует с низких оборотов, затем набирает средние, а только потом разгоняется на максимальные, а после этого останавливается.
А теперь немного программы:
Схема соединения, модуля, ардуино и ЭД
В приведенном ниже программном коде два электродвигателя будут крутится в обе стороны с плавным нарастанием скорости вращения.
Небольшие пояснения к коду для управления шаговым двигателем в Ардуино:
Работу схемы подключения шагового двигателя можете посмотреть в видео ниже:
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
- Вычислительная техника
- Микроконтроллеры микропроцессоры
- ПЛИС
- Мини-ПК
- Силовая электроника
- Датчики
- Интерфейсы
- Теория
- Программирование
- ТАУ и ЦОС
- Перспективные технологии
- 3D печать
- Робототехника
- Искусственный интеллект
- Криптовалюты
Чтение RSS
Управляем шаговым двигателем с помощью Arduino и L298N
Сегодня шаговые двигатели можно найти во многих механизмах: станках ЧПУ, оргтехнике, 3D принтерах, роботах. Благодаря их функциональности и невысокой стоимости их зачастую применяют в проектах с Arduino.
В этом материале будет показано, как можно управлять шаговым двигателем с помощью платы Arduino Uno и драйвера моторов L298N.
Модуль мостового драйвера L298N, предназначенного для управления двигателями постоянного тока и шаговыми двигателями, стоит недорого и достаточно широко распространен. Помимо L298N для управления двигателем можно использовать драйвер ULN2003, но это довольно популярный и разжеванный вариант, поэтому здесь мы рассмотрим альтернативный подход с драйвером L298N, который является более функциональным.
Но сначала разберемся, что такое шаговый двигатель. Шаговый двигатель может по команде от управляющего устройства отклонять свой вал на определенный угол и фиксировать его. Такое отклонение вала и называется шагом. Среди шаговых двигателей различают униполярные и биполярные. Биполярные шаговые двигателя считаются более сильными, с большим моментом удержания на валу. Биполярные двигатели, как правило, имеют четыре вывода, соединенные с двумя внутренними электромагнитными катушками. Поворот вала двигателя осуществляется благодаря изменению направления протекания тока в катушках.
Шаговые двигатели по своему принципу действия не похожи на простые двигатели постоянного тока и не могут начать работать путем подачи только напряжения постоянного тока. Для управления нужны драйвер и микроконтроллер или подобное устройство, которые будут изменять скорость и направление вращения вала. Модуль драйвера L298N прекрасно подходит для задач управления шаговым двигателем.
Ниже приведена схема подключения биполярного шагового двигателя 12 В к драйверу L298N и этого драйвера к плате Arduino UNO. Для начала следует соединить пары проводов A и B шагового двигателя с выводами MA+, MA-, MB+ и MB- драйвера L298N. Внимательно читайте документацию на ваш шаговый двигатель, чтобы правильно определить пары A+, A-, B+ и B-. Оставьте все перемычки модуля драйвера на месте и подключите линии IN1, IN2, IN3 и IN4 к цифровым портам Arduino D8, D9, D10 и D11 соответственно. Далее соедините вывод земли GND платы Arduino с GND модуля драйвера и вывод питания Vin платы Arduino с выводом модуля +5V OUT. И, наконец, подключите внешний источник питания 12В/1А к линиям +5V OUT и GND модуля драйвера.
Теперь вы можете управлять шаговым двигателем с помощью скетчей Arduino благодаря встроенной в Arduino IDE библиотеки Stepper library. Для проверки работоспособности собранной схемы можете загрузить скетч stepper_oneRevolution, включающий в себя библиотеку Stepper library.
Если все собрано правильно, то вы увидите, как будет вращаться вал вашего шагового двигателя.
Подключение шагового двигателя. Контроллер L298
Серия статей: Программирование Arduino с нуля #8
Серия статей: Arduino, использование шаговых двигателей #1
Мы подключили к нашему контроллеру обычные двигетели постоянного тока. С их помощью можно, например двигать мобильную платформу на колесном или гусеничном ходу или совершать простейшие действия (типа открытия двери или поднятия штор). Вот только регулировать вращение этих двигателей можно только подавая на них определенное напряжение. И если мы, например, подадим 100% мощности на одну секунду, мы не можем быть уверены, что за это время двигатель повернет вал, например, на 100 оборотов. Ведь нагрузка может меняться, а соотвтетственно и скорость вращения при той-же заданной мощности. В случае визуального управления роботом это не проблема – увидел, что робот проехал нужную дистанцию – подал команду на остановку. Но мы веть хоти создавать именно автоматические устройства, которые не будут ребовать посоянного внимания. Тут есть несколько вариантов:
Можно применять специальные датчика (энкодеры), которые будут говрить контроллеру сколько именно совершил оборотов совершил вал двигателя. Тогда контроллер сам будет останавливать двигатель после нужного количества оборотов, независимо от меняющейся нагрузки. Так мы сможем быть уверены, что наш робот совершил нужное перемещение. Именно так устроены классические сервоприводы – в них в качестве датчика выступает поворотный потенциометр (именно он ограничивает угол поворота) Вот только у такого способа еть свои недостатки – мы все равно можем управлять только мощностью и временем отключения питания. И управлять оборотами мы можем не очень точно – двигатель то мы отключили, но он ведь может еще некоторое время вращаться по инерции. А для высокоскоростных двигателей за время реакции контроллера вал может совершить несколько лишних оборотов.
Если же нам нужно обеспечить более точное управление двигателем, чтобы он делал точное количество оборотов или даже долей оборота – тогда нам нужно применять шаговые двигатели. С их помощью можно совершать очень точные движения, ведь вращение вала контролируется с точностью до нескольких градусов. Благодаря этому можно использвоать такие двигатели для точныз перемещений – в станках с ЧПУ, 3D принтерах и там, где возможностей сервоприводов недостаточно.
В отличие от сервопривода, в котором используется обычный двигатель постоянного тока, пусть с дополнительным датчиком, шаговый двигатель изначально построен по другой схеме. У него не одна обмотка, а несколько независимых обмоток. Причем обмотки расположены параллельно ротору, но под углом друг к другу. Подача тока на одну из обмоток заставляет ротор поворачиваться на небольщой угол и останвоиться. Если теперь выключить ток на первой обмотке, и подать на следующую – ротор повренется еще на долю оборота. А чередование аодачи напряжения между обмотками заставит ротор вращаться, причем в зависимости от частоты это будет выглядеть или как скачкообразный поворот вала двигателя на определенный угол, или как непрерывное вращение (в случае большой частоты переключения обмоток). Причем здесь мы контроллируем не только мощность но и точную частоту вращения. И можем задать точный угол поворота двигателя и отановить точно на определенном угле поворота.
В отличие от традиционного двигателя постоянного тока, шаговый двигатель обычно имеет от четырех до шести проводов для подключения. Если проводов четыре – перед нами биполярынй двигатель. Два провода подключены к одной обмотке, два – к другой.
Если же проводов шесть – это униполярыный двигатель. По два провода подключены к концам каждой обмотки и по одному – в ее середине. Эти провода подключается к заземлению.
По сравнению с биполярным двигателем, такое подключение обеспечивает большую скорость вращения, но уменьшает крутящий момент. Если нам важен именно момент, то можно просто не подключать эти провода, т.е. мы сделаем из униполярного двигателя биполярный
Таким образом подключение обеих вариантов шаговых двигателей для контроллера ничем не отличаются – и там, и там мы будем управлять двумя выходами для каждой обмотки. Выбрать нужный вариант нужно исключительно исходя из типа имеющегося у нас двигателя и того, что нам более важно – скорость вращения или крутящий момент?
Конечно мы можем вручную написать код, который с определенным интервалом будет чередовать подачу тока на обмотки и таким образом обеспечить управление нашим двигателем. Но этот код давно уже написан и входит в стандартную сборку Arduino IDE, просто подключим библиотеку Stepper командой #include . Теперь создадим объект типа stepper и укажем, к каким именно пинам подключены наши обмотки. Для этого нам нужно указать еще одну характеристику шагового двигателя – количество шагов для одного оборота вала. Стандартыне двигатели, которые проще всего приобрести, обычно имеют точность позиционирования 1,8° или 3.6°. Этот угол соответствует значению одного шага, соответственно для одного оборота нужно будет совершить, соответственно, 200 и 100 шагов. Пусть наш двигетель обладет точностью 200 шагов на оборот:
Поскольку при управлении шаговым двигателем используется только наличие или отсутствие тока на обмотках, то нам нет необходимости в подключении выходов с ШИМ регулированием. Достаточно использовать только пины I1 и I2 . Логическая единица на выводе будет соотвтетствовать подаче номинального напряжения на один конец обмотки и нулевого – на другой. Логический ноль — номинальное напряжение на втором конец обмотки и нулевого на первом. Таким образом каждая из двух обмоток управляется одним цифровым выходом.
Также контроллер двигателя может иметь независимое управление каждым выходом (т.е. когда для управления одной парой выводов используется три цифровых выхода – два обычных для независимого управления каждым выходом и один ШИМ для регулирования значения подаваемого напряжения). Здесь мы полностью независимо указываем, какое напряжение (высокое или низкое) подавать на каждый из концов обмотки, т.е каждая из двух обмоток управляется с помощью двух цифровых выводов
Схема подключения такого типа контроллера двигателя:
И в том, и в другом случае на каждую обмотку будет подпапться ток на время, достаточное для совершения валом одного шага. Затем ток с первой обмотки убирается, а подается на вторую (для следующего шага), или ток подается на обе обмотки (для остановки вала в текущем положении) или же тока с обеих обмоток будет снят (для свободного вращения вала) Частота таких переключений будет регулировать скорость вращения. Для изменения частоты служит метод Stepper.setSpeed(int speed); который устанавливает для нашего шагового двигателя определенную скорость вращения (в оборотах в минуту). При этом при вызове этого метода двигатель не начнет вращаться с указанной скоростью – мы только устанавливаем скорость. Для движения необходимо использовать метод Stepper.step(int steps); , который подает команду двигателю сделать steps шагов со скоростью, установленной командой setSpeed . Пример использования для двигателя, подключенного к 4 и 7 пинам:
После загрузки на контрорллер, подключенный к нему двигатель сделает пол оборота со скоростью 60 об/мин (1 об/сек, т.е. на пол оборота ему понадобится 0.5 секунды), остановится на одну секунду, затем с той-же скоростью провернется на пол оборота в обратном направлении.
Нужно уситывать, что мы здесь не можем напрямую влиять на скорость вращения – только на частоту шагов. И если для средних и больших скоростей вращения это не так важно, то при малых значениях скорости будет хорошо заметно прерывистое вращение вала. Например, при установленной скорости 1 оборот в минуту вал двигателя не будет медленно вращаться со скоростью 6 градусов в секунду. Он максимально быстро повернется на 1,8 градуса, затем остановится на треть секунды мс, затем повернется еще на 1,8 градуса, и т.д. Для средних скоростей такое прерывистое значение будет не так заметно, зато хорошо слышны частые щелчки (с частотой переключения обмоток). Поэтому в тех случаях, где нужно медленное и плавное движение, использовать шаговые двигатели напрямую не получится – нужно будет добавлять понижающий редуктор или использовать традиционные двигатели постоянного тока.
ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ
Блог технической поддержки моих разработок
Драйверы шагового двигателя: униполярный, биполярный, L298N.
Как правило, логические сигналы для управления шаговым двигателем формирует микроконтроллер. Ресурсов современных микроконтроллеров вполне хватает для этого даже в самом ”тяжелом” режиме – микрошаговом.
Для подключения шаговых двигателей через слаботочные логические сигналы микроконтроллеров необходимы усилители сигналов – драйверы.
В функцию драйверов входит:
- обеспечение необходимого тока и напряжения на фазных обмотках двигателя;
- коммутация обмоток;
- включение;
- выключение;
- смена полярности;
- защита коммутирующих элементов от напряжения самоиндукции обмоток.
Речь в этой статье идет о простых драйверах, достаточных для большинства приложений. Существуют драйверы с гораздо большими возможностями:
- обеспечение быстрого нарастания тока при включении и быстрого спада при выключении;
- уменьшение тока для фиксации положения остановленного двигателя;
- защитные функции;
- формирование тока и напряжения обмоток для микрошагового режима;
- и многие другие.
Схемы таких драйверов достаточно сложные, а в этих функциях в большинстве приложениях нет необходимости.
По схеме подключения шаговые двигатели делятся на униполярные и биполярные. Драйверы для этих двух вариантов двигателей принципиально отличаются.
Драйвер униполярного шагового двигателя.
В униполярном режиме могут работать двигатели, имеющие следующие конфигурации обмоток.
Напомню принцип управления униполярным шаговым двигателем. Четыре обмотки с общим проводом, подключенным к одному полюсу источника питания. Если другие выводы обмоток последовательно коммутировать к другому полюсу источника, то ротор двигателя будет вращаться.
Для коммутации обмоток таким способом достаточно всего четырех ключей, замыкающих обмотки на землю. Схемы коммутации обмоток двух предыдущих вариантов двигателей выглядят так.
Если последовательно замыкать ключи 1, 2, 3, 4, то ротор двигателя будет вращаться.
Схема драйвера униполярного шагового двигателя.
Практически ключи можно выполнить на биполярных транзисторах, но предпочтительнее использовать низкопороговые MOSFET транзисторы. Я применяю транзисторы IRF7341. Это MOSFET транзисторы с параметрами:
- максимально допустимый ток 4 А;
- предельное напряжение 55 В;
- сопротивление в открытом состоянии 0,05 Ом;
- порог включения 1 В;
- выполнены в миниатюрном корпусе SO-8;
- в корпусе два транзистора.
Крайне удобный вариант для использования в драйвере униполярного шагового двигателя.
- Нет необходимости в радиаторах охлаждения ключей;
- очень низкое падение напряжения на открытом транзисторе;
- малые размеры;
- всего два 8ми выводных корпуса для драйвера двухфазного шагового двигателя.
На биполярных транзисторах ключи с такими параметрами создать не возможно. Есть много других вариантов MOSFET транзисторов для ключей, например IRF7313 ( 6 А, 30 В, 0,029 Ом).
Схема ключа на MOSFET транзисторе для одной фазы выглядит так.
Ключ управляется непосредственно от микроконтроллера логическими уровнями KMOП или TTL ( 0 / +5 В). При управляющем сигнале высокого уровня (+5 В) ключ открыт, и через обмотку фазы идет ток. Диод шунтирует обмотку двигателя в обратном направлении. Он необходим для защиты транзистора от бросков напряжения самоиндукции при выключении фазы. Для управления двигателями на значительных скоростях вращения, лучше использовать высокочастотные диоды, например, FR207.
Вот фрагмент схемы подключения униполярного шагового двигателя к микроконтроллеру.
Защиты от коротких замыканий в этой схеме нет. Реализация защиты значительно усложняет драйвер. А замыканий обмоток шаговых двигателей практически не бывает. Я не встречался с таким явлением. Да и на фоне неприятности по поводу сгоревшего дорогого двигателя, замена транзистора не выглядит проблемой.
Кстати, механическое заклинивание вала шагового двигателя не вызывает недопустимых токов в ключах драйвера и защиты не требует.
А это изображение платы контроллера униполярного шагового двигателя с PIC контроллером фирмы Microchip.
Простая плата с восьми разрядным микроконтроллером PIC18F2520 управляет:
- двумя шаговыми двигателями с током фазы до 3 А;
- двумя ШИМ ключами для электромагнитов;
- считывает состояние 4х датчиков;
- обменивается данными по сети с центральным контроллером.
Несмотря на простоту контроллера, реализованы следующие режимы управления:
- полно-шаговый, одна фаза на полный шаг;
- полно-шаговый, две фазы на полный шаг;
- полу-шаговый;
- фиксацию положения двигателя при остановке.
К достоинствам управления шаговым двигателем в униполярном режиме следует отнести:
- простой, дешевый, надежный драйвер.
- в униполярном режиме крутящий момент примерно на 40 % меньше по сравнению с биполярным режимом.
Драйвер биполярного шагового двигателя.
В биполярном режиме могут работать двигатели, имеющие любые конфигурации обмоток.
У биполярного двигателя по одной обмотке для каждой фазы. Обычно две обмотки AB и CD. В первых двух вариантах четыре обмотки соединяются так, что получается две. Обмотки по очереди подключаются к источнику питания в одной полярности, затем в другой.
Драйвер биполярного двигателя должен обеспечивать сложную коммутацию. Каждая обмотка:
- подключается в прямой полярности к источнику напряжения;
- отключается от источника напряжения;
- подключается с противоположной полярностью.
Схема коммутации одной обмотки биполярного двигателя выглядит так.
Для обеспечения двух полярных коммутаций от одного источника питания требуется 4 ключа. При замыкании 1 и 2 ключей обмотка подключается к источнику питания в прямой полярности. Замыкание 3 и 4 ключей подает на обмотку обратную полярность напряжения.
Сложность драйвера биполярного шагового двигателя вызвана не только большим числом ключей ( 4 ключа на обмотку, 8 ключей на двигатель), но и:
- сложное управление верхними ключами ( 1 и 4) от логических сигналов “привязанных” к земле;
- проблемы со сквозными токами при одновременном открывании ключей одного плеча ( 1,3 или 2,4).
Сквозные токи могут возникать из-за не одинакового быстродействия нижнего и верхнего ключа. К примеру, нижний ключ уже открылся, а верхний – не успел закрыться.
Схема драйвера биполярного шагового двигателя.
Реализовать схему драйвера биполярного шагового двигателя на дискретных элементах довольно сложно. Могу показать мою схему, которая подключает биполярный двигатель к униполярному драйверу. Эта схема используется для управления биполярными двигателями от контроллера, приведенного в качестве примера в предыдущей главе.
Схема достаточно простая. Проблема сквозных токов решается за счет резисторов 0.22 Ом в коммутируемых цепях. В момент коммутаций MOSFET транзисторов, верхний и нижний ключ оказываются одновременно открытыми на короткое время. Эти резисторы и ограничивают сквозной ток. К сожалению, они ограничивают и рабочий ток двигателя. Поэтому, несмотря на мощные транзисторы, драйвер по такой схеме можно использовать для токов коммутации не более 2 А. Схема не требует диодов для защиты от эдс самоиндукции обмоток, потому что эти диоды интегрированы в MOSFET транзисторы.
Гораздо удобнее и практичнее использовать интегральные драйверы биполярного шагового двигателя. Самым распространенным из них является микросхема L298N.
Драйвер биполярного шагового двигателя L298N.
Описания этой микросхемы на русском языке практически нет. Поэтому привожу параметры L298N достаточно подробно, по официальным материалам производителя этой микросхемы – компании STMicroelectronics (datasheet l298n.pdf).
L298N это полный мостовой драйвер для управления двунаправленными нагрузками с токами до 2 А и напряжением до 46 В.
- Драйвер разработан для управления компонентами с индуктивными нагрузками, такими как электромагниты, реле, шаговые двигатели.
- Сигналы управления имеют TTL совместимые уровни.
- Два входа разрешения дают возможность отключать нагрузку независимо от входных сигналов микросхемы.
- Предусмотрена возможность подключения внешних датчиков тока для защиты и контроля тока каждого моста.
- Питание логической схемы и нагрузки L298N разделены. Это позволяет подавать на нагрузку напряжение другой величины, чем питание микросхемы.
- Микросхема имеет защиту от перегрева на уровне + 70 °C.
Структурная схема L298N выглядит так.
Микросхема выполнена в 15ти выводном корпусе с возможностью крепления радиатора охлаждения.
Назначение выводов L298N.
1 | Sense A | Между этими выводами и землей подключаются резисторы — датчики тока для контроля тока нагрузки. Если контроль тока не используется, они соединяются с землей. |
15 | Sense B | |
2 | Out 1 | Выходы моста A. |
3 | Out 2 | |
4 | Vs | Питание нагрузки. Между этим выводом и землей должен быть подключен низкоимпедансный конденсатор емкостью не менее 100 нФ. |
5 | In 1 | Входы управления мостом A. TTL совместимые уровни. |
7 | In 2 | |
6 | En A | Входы разрешения работы мостов. TTL совместимые уровни. Низкий уровень сигналов запрещает работу моста. |
11 | En B | |
8 | GND | Общий вывод. |
9 | Vss | Питание логической части микросхемы (+ 5 В). Между этим выводом и землей должен быть подключен низкоимпедансный конденсатор емкостью не менее 100 нФ. |
10 | In 3 | Входы управления мостом B. TTL совместимые уровни. |
12 | In 4 | |
13 | Out 3 | Выходы моста B. |
14 | Out 4 |
Предельно допустимые параметры L298N.
Параметры расчетов тепловых режимов.
Обозначение | Параметр | Значение |
Tth j-case | Тепловое сопротивление кристалл-корпус | 3 ºC/Вт |
Tth j-amb | Тепловое сопротивление кристалл-окружающая среда | 35 ºC/Вт |
Электрические характеристики драйвера L298N.
Схема подключения шагового двигателя к микроконтроллеру с помощью драйвера L298N.
Диаграмма работы этой схемы в полношаговом режиме выглядит так.
Если не используются разрешающие входы и датчики тока, схема выглядит так.
По функциям это аналог контроллера описанного в главе про униполярные двигатели, только для биполярного. Он также собран на PIC контроллере фирмы Microchip и управляет двумя биполярными шаговыми двигателями с током фаз до 2 А. Функциональные возможности и режимы управления двигателем те же.
К достоинствам управления шаговым двигателем в биполярном режиме следует отнести:
- крутящий момент примерно на 40 % больше по сравнению с униполярным режимом.
- можно подключать шаговые двигатели с любой конфигурацией обмоток.