- Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino
- Подключение модуля L298N
- L298N, Arduino и двигатель постоянного тока
- Драйвер L298N и Arduino – схема подключения
- Краткий обзор модуля
- Схема подключения к Arduino
- Подключение в Arduino IDE
- Товары из статьи в нашем магазине
- Arduino Uno (DIP версия)
- L298N – драйвер шагового двигателя
- Двигатель постоянного тока (3-6В DC, 2000 об./мин.)
- Шлейф проводов «Папа — Мама» (30см, 40шт.)
- 3 комментария . Оставить новый
- ОБОРУДОВАНИЕ ТЕХНОЛОГИИ РАЗРАБОТКИ
- Блог технической поддержки моих разработок
- Драйверы шагового двигателя: униполярный, биполярный, L298N.
Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino
Модуль L298N H-bridge можно использовать для двигателей, напряжение питания которых находится в диапазоне от 5 до 35 вольт.
Кроме того, на многих подобных платах есть встроенный 5В регулятор, который дает возможность запитывать ваши устройства.
Подключение модуля L298N
Прежде чем перейти к управлению двигателем постоянного тока и шаговым двигателем, разберемся с подключением модуля L298N (даташит, техническая информация от производителя).
Ссылки для заказа необходимого оборудования из Китая
- КУПИТЬ цифровой датчик температуры DS18B20;
- КУПИТЬ Arduino Uno R3;
Ниже приведены разъяснения к рисунку.
- Для двигателя постоянного тока 1 “+” или для шагового двигателя A+
- Для двигателя постоянного тока 1 “-” или для шагового двигателя A-
- Коннектор на 12 вольт. Снимите его, если используете напряжение питания больше 12 вольт.
- Питания вашего двигателя обеспечивается с этого выхода. Максимальное напряжение питания постоянным током 35 вольт. Если напряжение больше 12 вольт, разомкните контакты на 3 коннекторе.
- GND — земля.
- Питание 5 вольт, если коннектор на 12 вольт замкнут. Идеально для питания Arduino и т.п.
- Коннектор для двигателя постоянного тока 1. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
- IN1.
- IN2.
- IN3.
- IN4.
- Коннектор для двигателя постоянного тока 2. В случае использования шагового двигателя, подключать сюда ничего не надо. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
- Двигатель постоянного тока 2 “+” или шаговый двигатель B+.
- Двигатель постоянного тока 2 “-” или шаговый двигатель B-.
L298N, Arduino и двигатель постоянного тока
Данный модуль дает возможность управлять одним или двумя двигателями постоянного тока. Для начала, подключите двигатели к пинам A и B на контроллере L298N.
Если вы используете в проекте несколько двигателей, убедитесь, что у них выдержана одинаковая полярность при подключении. Иначе, при задании движения, например, по часовой стрелке, один из них будет вращаться в противоположном направлении. Поверьте, с точки зрения программирования Arduino это неудобно.
После этого подключите источник питания. Плюс — к четвертому пину на L298N, минус (GND) — к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.
Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.
ШИМ-пины обозначены знаком “
” рядом с порядковым номером.
Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).
Направление вращения ротора двигателя управляется сигналами HIGH или LOW на каждый привод (или канал). Например, для первого мотора, HIGH на IN1 и LOW на IN2 обеспечит вращение в одном направлении, а LOW и HIGH заставит вращаться в противоположную сторону.
При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.
Скетч приведенный ниже, отрабатывает в соответствии со схемой подключения, которую мы рассматривали выше. Двигатели постоянного тока и Arduino питаются от внешнего источника питания.
// подключите пины контроллера к цифровым пинам Arduino
Драйвер L298N и Arduino – схема подключения
Микроконтроллер, установленный на плате Arduino, не способен отдавать большой ток через свои пины. Что же делать, если необходимо управлять относительно мощными двигателями, например, для перемещения робота?
В таких случаях вместе с Arduino используют драйвер – силовую часть, управляемую платой и способную коммутировать большой ток. Самый известный такой драйвер для коллекторных двигателей – L298N!
Краткий обзор модуля
L298N – драйвер коллекторных двигателей на 2 канала, который может также применяться для управления одним шаговым мотором. Драйвер мостовой, что позволяет использовать его без дополнительных транзисторов отсутствующих плеч. Максимальное напряжение питания моторов – 46 В, ток на канал – 2 А.
Драйвер позволяет просто и понятно управлять скоростью вращения моторов в обоих направлениях с помощью ШИМ (раздельно для каждого мотора).
Модуль на основе L298N не требует внешних компонентов для начала работы. Всё, что нужно – десяток проводов для подключения питания и управляющих сигналов.
Для управления направлением движения используется 4 провода + 2 провода для регулировки скорости.
Схема подключения к Arduino
Для управления направлениями двигателей используется 4 входа – IN1-IN4, кроме них – ещё 2 провода (по 1 на канал) для ШИМ-регулировки скорости. Их можно сразу замкнуть джамперами на +5В для максимальной скорости вращения, сэкономив этим 2 пина контроллера.
Пины IN подключаются к любым пинам Arduino, ENABLE – только к помеченным на плате знаком
Подключение в Arduino IDE
Существует 4 возможных комбинации на пинах модуля:
- IN1 = 1, IN2 = 1 – двигатель стоит на месте;
- IN1 = 0, IN2 = 0 – двигатель стоит на месте;
- IN1 = 1, IN2 = 0 – двигатель крутится в одну сторону;
- IN1 = 0, IN2 = 1 – двигатель крутится в другую сторону.
Скорость вращения регулируется подачей ШИМ на пин Enable.
Обратите внимание – транзисторы имеют относительно быструю скорость переключения, но всё же закрытие затвора выполняется не мгновенно. В некоторых случаях может получиться так, что при реверсе транзистор успеет открыться, но ему комплементарный ещё не закроется и возникнет короткое замыкание.
Чтобы этого избежать, можно прижимать пины к одному напряжению на несколько миллисекунд и только потом выполнять реверс. Если в конкретно Вашем случае хватает этого времени, то лишние задержки можно исключить. Но учтите, что могут появиться сбросы микроконтроллера!
Для примера напишем небольшой скетч, в котором будем разгонять мотор при помощи ШИМ-управления:
Также остановить мотор можно, подав одноимённые сигналы, например так:
Или применить торможение реверсом, поменяв сигналы местами. Оно будет крайне эффективным, но может привести к просадке напряжения из-за большого тока.
Желательно использовать источник питания с большим выходным током и повесить параллельно несколько конденсаторов большой ёмкости, если стабильность работы действительно важна.
Теперь вы сможете построить своего робота или что-нибудь ещё моторизированное, используя Arduino! Дерзайте, а Вольтик поможет вам выбрать лучшее для своих проектов!
Товары из статьи в нашем магазине
Arduino Uno (DIP версия)
L298N – драйвер шагового двигателя
Двигатель постоянного тока (3-6В DC, 2000 об./мин.)
Шлейф проводов «Папа — Мама» (30см, 40шт.)
3 комментария . Оставить новый
Отличная статья. Небольшое дополнение.
>>В некоторых случаях может получиться так, что при реверсе транзистор успеет открыться, но ему комплементарный ещё не закроется и возникнет короткое замыкание.
Лучше всего это смотреть на схеме моста. Из этой схемы видно, что первоначальная озвученная причина в статье не верна.
Предполагаю, что описанная компенсация нужна из-за наличия инертности тока в моторе (мотор по сути катушка индуктивности) и при резком изменении полярности подключенного тока мы заставляем ток, отдаваемый мотором\катушкой работать против ЭДС\питания. Из-за этого очень сильно просаживается питание и может привести к нестабильности\перезагрузке контроллера.
При этом рекомендация по исправлению дана верно:
>>Чтобы этого избежать, можно прижимать пины к одному напряжению на несколько миллисекунд и только потом выполнять реверс.
Открыв оба нижних или оба верхних транзистора одновременно мы, таким образом, замкнем мотор\катушку на саму себя и если дать немного времени (обождать несколько мс.) то побочный ток в результате короткого замыкания исчезнет и просадки не будет.
Здравствуйте! Благодарим вас за добавление ценной информации!
ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ
Блог технической поддержки моих разработок
Драйверы шагового двигателя: униполярный, биполярный, 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.
Обозначение | Параметр | Значение |
Vs | Напряжение питания | 50 В |
Vss | Напряжение питания логики | 7 В |
Vi, Ven | Напряжение логических входов | -0,3. 7 В |
Io | Выходной ток (для каждого канала)
| |
Vsens | Напряжение датчиков тока | -1. 2,3 В |
Ptot | Мощность рассеивания (температура корпуса 75°C) | 25 Вт |
Top | Рабочая температура кристалла | -25. 130 °C |
Tstg | Температура хранения | -40. 150 °C |
Параметры расчетов тепловых режимов.
Обозначение | Параметр | Значение |
Tth j-case | Тепловое сопротивление кристалл-корпус | 3 ºC/Вт |
Tth j-amb | Тепловое сопротивление кристалл-окружающая среда | 35 ºC/Вт |
Электрические характеристики драйвера L298N.
Обозначение | Параметр | Значение |
Vs | Напряжение питания (вывод 4) | Vih+2.5 . 46 В |
Vss | Питание логики | 4,5. 5 . 7 В |
Is | Потребляемый ток покоя (вывод 4)
| |
Iss | Потребляемый ток покоя (вывод 9)
| |
Vil | Входное напряжение низкого уровня (выводы 5, 7, 10, 12, 6, 11) | -0,3 . 1,5 В |
Vih | Входное напряжение высокого уровня (выводы 5, 7, 10, 12, 6, 11) | 2,3 . Vss В |
Iil | Входной ток низкого уровня (выводы 5, 7, 10, 12, 6, 11) | -10 мкА |
Iih | Входной ток высокого уровня (выводы 5, 7, 10, 12, 6, 11) | 30 . 100 мкА |
Vce sat (h) | Напряжение насыщения верхнего ключа
| |
Vce sat (l) | Напряжение насыщения нижнего ключа
| |
Vce sat | Общее падение напряжения на открытых ключах
| |
Vsens | Напряжение датчиков тока (выводы 1, 15) | -1 . 2 В |
Fc | Частота коммутаций | 25 . 40 кГц |
Схема подключения шагового двигателя к микроконтроллеру с помощью драйвера L298N.
Диаграмма работы этой схемы в полношаговом режиме выглядит так.
Если не используются разрешающие входы и датчики тока, схема выглядит так.
По функциям это аналог контроллера описанного в главе про униполярные двигатели, только для биполярного. Он также собран на PIC контроллере фирмы Microchip и управляет двумя биполярными шаговыми двигателями с током фаз до 2 А. Функциональные возможности и режимы управления двигателем те же.
К достоинствам управления шаговым двигателем в биполярном режиме следует отнести:
- крутящий момент примерно на 40 % больше по сравнению с униполярным режимом.
- можно подключать шаговые двигатели с любой конфигурацией обмоток.