Содержание

Драйверы двигателя L298N, L293D и Arduino Motor Shield

Драйвер двигателя выполняет крайне важную роль в проектах ардуино, использующих двигатели постоянного тока или шаговые двигатели. C помощью микросхемы драйвера или готового шилда motor shield можно создавать мобильных роботов, автономные автомобили на ардуино и другие устройства с механическими модулями. В этой статье мы рассмотрим подключение к ардуино популярных драйверов двигателей на базе микросхем L298N и L293D.

Драйвер двигателя в проектах ардуино

Для чего нужен драйвер двигателя?

Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода – и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока,  превышающие этот предел.

Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий:

Использовать реле. Мы включаем двигатель в отдельную электрическую сеть, никак не связанную с платой Arduino. Реле по команде ардуино замыкает или размыкает контакты, тем самым включает или выключает ток. Соответственно, двигатель включается или выключается. Главным преимуществом этой схемы является ее простота и возможность использовать  Главным недостатком данной схемы является то, что мы не можем управлять скоростью и направлением вращения.

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

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

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

Микросхема или плата расширения Motor Shield

Motor Shield – плата расширения для Ардуино, которая обеспечивает работу двигателей постоянного тока и шаговых двигателей. Самыми популярными платами Motor Shield являются схемы на базе чипов L298N и L293D, которые могут управлять несколькими двигателями. На плате установлен комплект сквозных колодок Ардуино Rev3, позволяющие устанавливать другие платы расширения. Также на плате имеется возможность выбора источника напряжения – Motor Shield может питаться как от Ардуино, так и от внешнего источника. На плате имеется светодиод, который показывает, работает ли устройство. Все это делает использование драйвера очень простым и надежным – не нужно самим изобретать велосипеды и решать уже кем-то решенные проблемы. В этой статье мы будем говорить именно о шилдах.

Принцип действия H-моста

Arduino Motor shield схемаПринцип работы драйвера двигателя основан на принципе работы H-моста. H-мост является электронной схемой, которая состоит из четырех ключей с нагрузкой. Название моста появилось из напоминающей букву H конфигурации схемы.

Схема моста изображена на рисунке. Q1…Q4 0 полевые, биполярные или  IGBT транзисторы. Последние используются в высоковольтных сетях. Биполярные транзисторы практически не используются, они могут присутствовать в маломощных схемах. Для больших токов берут полевые транзисторы с изолированным затвором. Ключи не должны быть замкнуты вместе одновременно, чтобы не произошло короткого замыкания источника. Диоды D1…D4 ограничительные, обычно используются диоды Шоттки.

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

Q1 Q2 Q3 Q4 Состояние
1 0 0 1 Поворот мотора вправо
0 1 1 0 Поворот мотора влево
0 0 0 0 Свободное вращение
0 1 0 1 Торможение
1 0 1 0 Торможение
1 1 0 0 Короткое замыкание
0 0 1 1 Короткое замыкание

 

Драйвер двигателя L298N

Модуль используется для управления шаговыми двигателями с напряжением от 5 до 35 В.  При помощи одной платы L298N можно управлять сразу двумя двигателями. Наибольшая нагрузка, которую обеспечивает микросхема, достигает 2 А на каждый двигатель. Если подключить двигатели параллельно, это значение можно увеличить до 4 А.

Плата выглядит следующим образом:

Arduino Motor shield

Распиновка микросхемы L298N:

  • Vcc – используется для подключения внешнего питания;
  • 5В;
  • Земля GND;
  • IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
  • OUT1, OUT2 – используется для выхода с первого двигателя;
  • OUT3, OUT4 – используется для выхода со второго двигателя;
  • S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
  • ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).

Arduino Motor shield

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

Драйвер двигателя L293D

L293D – является самой простой микросхемой для работы с двигателями. L293D обладает двумя H-моста, которые позволяют управлять двумя двигателями. Рабочее напряжение микросхемы – 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2 А.

В схеме имеется 16 выходов. Распиновка:

  • +V – питание на 5 В;
  • +Vmotor – напряжение питания для мотором до 36 В;
  • 0V – земля;
  • En1, En2 –включают и выключают H-мосты;
  • In1, In2 – управляют первым H-мостом;
  • Out1, Out2 – подключение первого H-моста;
  • In3, In4 – управляют вторым H-мостом;
  • Out3, Out4 – подключение второго H-моста.

Arduino Motor shield

Для подключения к микроконтроллеру Arduino Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V – 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.

Arduino Motor shield

Драйвер двигателя на микросхеме HG7881

HG7881 – двухканальный драйвер, к которому можно подключить 2 двигателя или четырехпроводной двухфазный шаговый двигатель. Устройство часто используется из-за своей невысокой стоимости. Драйвер используется только для изменения направления вращения, менять скорость он не может.

Arduino Motor shield

Плата содержит 2 схемы L9110S, работающие как H-мост.

Характеристики драйвера HG7881:
  • 4-контактное подключение;
  • Питание для двигателей от 2,5 В до 12 В;
  • Потребляемый ток менее 800 мА;
  • Малые габариты, небольшой вес.
Распиновка:
  • GND – земля;
  • Vcc – напряжение питания 2,5В – 12В;
  • A-IA – вход A(IA) для двигателя A;
  • A-IB – вход B (IB) для двигателя A;
  • B-IA – вход A(IA) для двигателя B;
  • B-IB – вход B (IB) для двигателя B.

В зависимости от поданного сигнала на выходах IA и IB будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.

IA IB Состояние мотора
0 0 Остановка
1 0 Двигается вперед
0 1 Двигается назад
1 1 Отключение

 

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

Arduino Motor shield

Сравнение модулей

Модуль L293D подает максимальный ток в 1,2А, в то время как на L298N можно добиться максимального тока в 4 А. Также L293D обладает меньшим КПД и быстро греется во время работы. При этом L293D является самой распространенной платой и стоит недорого.  Плата HG7881 отличается от L293D и L298N тем, что с ее помощью можно управлять только направлением вращения, скорость менять она не может. HG7881 – самый дешевый и самый малогабаритный модуль.

Подключение L298N к Arduino

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

Нужно присоединить источник питания. + подключается к пину 4 на плате L298N, минус (GND) – к 5 пину. Затем нужно соединить выходы с L298N и пины на Ардуино, причем некоторые из них должны поддерживать ШИМ-модуляцию. На плате Ардуино они обозначены ~. Выходы с L298N IN1, IN2, IN3 и IN4 подключить к D7, D6, D5 и D4 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.

Arduino Motor shield

Направление вращения задается с помощью сигналов HIGH и LOW на каждый канал. Двигатели начнут вращаться, только когда на 7 пине для первого мотора и на 12 пине для второго на L298N будет сигнал HIGH. Подача LOW останавливает вращение. Чтобы управлять скоростью, используются ШИМ-сигналы.

Для управления шаговым двигателем в Arduino IDE существует стандартная библиотека Stepper library. Чтобы проверить работоспособность собранной схемы, можно загрузить тестовый пример stepper_oneRevolution. При правильной сборке вал двигателя начнет вращаться.

При работе с моторами Ардуино может периодически перезагружаться. Это возникает из-за того, что двигателям требуются большие токи при старте и в момент торможения. Для решения этой проблемы в плату встроены конденсаторы, диоды и другие схемы. Также для этих целей на шидле имеется раздельное питание.

L298N — Интерфейсные микросхемы — МИКРОСХЕМЫ — Электронные компоненты (каталог)

 

Корпус: Multiwatt15

 

L2938N — представляет собой двойной мостовой драйвер для управления двунаправленными нагрузками с токами до 2А и напряжением от 4.5 V до 46 V. Микросхема разработана для управления реле, соленоидами, двигателями постоянного тока и шаговыми двигателями. L298N имеет TTL совместимые входы.

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

Микросхемы L298N имеют встроенную защиту от перегрева. Выходы микросхемы отключаются при нагреве до температуры около +70°С.

Расположение выводов L298N:

Назначение выводов L298N:

1 SENS-A Контроль тока 1 и 2 каналов
2 OUT2 Выход 2 канала
3 OUT3 Выход 3 канала
4 Vs Питание нагрузки
5 IN1 Вход 1 канала
6 EN-A Разрешение работы 1 и 2 канала
7 IN2 Вход 2 канала
8 GND Общий вывод
9 Vss Питание логики (+5V)
10 IN3 Вход 3 канала
11 EN-B Разрешение работы 3 и 4 канала
12 IN4 Вход 4 канала
13 OUT3 Выход 3 канала
14 OUT4 Выход 4 канала
15 SENS-B Контроль тока 3 и 4 каналов

 

Логическая таблица работы L298N

Входы Выходы
IN EN OUT
H H H
L H L
X L Z

 

  • H — высокий уровень сигнала

  • L — низкий уровень сигнала

  • X — любое состояние

  • Z — высокий импеданс (выключено)

Структурная схема L298N

 

Предельно допустимые режимы L298

Максимальное напряжение питания Vs

50V

Максимальное напряжение питания Vss

7V

Входное напряжение(IN,EN)

-0,3..7V

Напряжение на входах SENS

-1V..+2,3V

Максимальный постоянный выходной ток

±2A

Максимальный импульсный выходной ток (5mS однократно)

±3A

Максимальная рассеиваемая мощность 25W

Диапазон температур

-25..+130°C

Основные параметры L298:

Параметр MIN TYP MAX
Рекомендуемые режимы
Напряжение питания Vss 4,5V   7V
Напряжение питания Vs Vss   46V
Входное напряжение низкого уровня (L) -0,3VV   1,5V

Входное напряжение высокого уровня (H)

2,3V

 

Vss

Основные электрические параметры
Ток потребления Is   13/50mA 22/70mA
Ток потребления Iss (Vin=L/H)   24/7mA 36/12mA
Входной ток   10..3µA 100µA
Выходное напряжение низкого уровня 0,95V 1,35V 1,7V
Выходное напряжение высокого уровня

 

 

   
Частота переключения   25KHz 40KHz

 

Типовые схемы использования драйвера L298N

Использование внешних диодов для индуктивных нагрузок (моторов, реле, электромагнитов) обязательно!

 

Управление однонаправленными двигателями

 

EN

IN1

M1

IN2

M2

H

H

Быстрый останов

H

Вращение

H

L

Вращение

L

Быстрый останов

L

X

Выключен

X

Выключен

 

H — высокий уровень, L — низкий уровень, X — произвольно.

 

 

Управление двунаправленным двигателем

 

EN IN1 IN2 M
H L H Вращение вправо
H H L Вращение  влево
H L L Быстрый останов
H H H Быстрый останов
L X X Быстрый останов

Типовая схема управления шаговым двигателем с помощью комплекта микросхем L297 и L298N:

 
(Рекомендуется использовать быстрые диоды с Tвосст.

 

Более подробное описание микросхемы L298N с электрическими характеристиками и диаграммами работы и схемами включения Вы можете получить скачав файл документации ниже (Datasheet на английском языке).

Ссылки:

L298N подключение к Ардуино — RadioRadar

Справочник

Главная  Справочник  Энциклопедия радиоинженера

«Справочник» — информация по различным электронным компонентам: транзисторам, микросхемам, трансформаторам, конденсаторам, светодиодам и т.д. Информация содержит все, необходимые для подбора компонентов и проведения инженерных расчетов, параметры, а также цоколевку корпусов, типовые схемы включения и рекомендации по использованию радиоэлементов.


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

Конечно, шаговые двигатели (ШД) используются не только в ЧПУ и 3D-принтерах, им есть масса и других применений. Например, вкупе с популярным «конструктором для взрослых», Arduino, на базе которого можно создать всё что угодно. Однако, связка «Ардуино – шаговый двигатель» требует дополнительный элемент – драйвер.

Из-за того, что двигатель требует повышенного напряжения и силы тока, непосредственное подключение его к микроконтроллеру невозможно, напряжения логического нуля в +5В и силы тока в 40 мА не хватит для работы любого шагового двигателя. Функцию усилителя/переключателя берет на себя драйвер.

О нём мы и поговорим подробнее ниже.

L298N описание

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

Модуль собирается на основе одноименной микросхемы (L298N).

К L298N можно подключить двигатели, питающиеся напряжением от 5 до 35 вольт. Управление может быть реализовано в активном или пассивном режимах.

1. Активный – доступно не просто включение и отключение вращения мотора, но и управление его скоростью.

2. Пассивный – контроллер будет понимать только логику «включить/выключить двигатель». Управление уровнем выходного напряжения будет недоступно.

L298N – это облегчённая версия платы L293D. По сравнению с последней на L298N отсутствуют защитные диоды (их можно установить самостоятельно при необходимости защиты от скачков тока в процессе пуска двигателей).

Подключение

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

Рис. 1. Джамперы и клеммы на плате

К клеммникам 1 и 2 подключаются двигатели, логика подключения зависит от моделей двигателей и логики их работы.

Блок клемм 3 отвечает за подключение питания двигателей. Первый контакт — +12. На него подаётся питание от 5 до 12 вольт, если джампер 3 одет, и от 12 до 35 воль, если джампер 3 снят.

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

Если джампер 3 снят, то контакт +5В требуется запитать отдельно.

Управляющие сигналы от Ардуино или с другого микроконтроллера должны подаваться на контакты IN1-IN4, ENA, ENB. В зависимости от логических уровней и конфигурации джамперов 1,2 будет подаваться питание на двигатели/двигатель.

Джамперы 1 и 2 отвечают за переключение между активным и пассивным режимами работы драйвера. Если джампер одет, то реализуется логика «пассивного» управления.

Теперь для наглядности рассмотрим пару реальных схем подключения.

Управление двумя двигателями постоянного тока

Схема соединения будет выглядеть следующим образом.

Рис. 2. Схема соединения

Напряжение питания двигателей ниже 12 вольт, значит джампер 3 установлен, джамперы 1 и 2 на контактах ENA и ENB сняты.

Стоит особое внимание уделить пинам на Ардуино с ШИМ-модуляцией (рядом с цифровым значением есть специальный символ «~»). Они необходимы для управления скоростью вращения вала (чем выше уровень напряжения, тем выше скорость).

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

Таблица

Логический уровень на контакте ENA

Логический уровень на контакте IN1

Логический уровень на контакте IN2

Результат работы двигателя

1

1

0

Вращается по часовой стрелке

1

0

1

Вращается против часовой

0

1

0

Не вращается

0

0

1

Не вращается

Логический уровень на контакте ENA Логический уровень на контакте IN1 Логический уровень на контакте IN2 Результат работы двигателя

Получается, что контакт ENA отвечает за разрешение работы двигателя. А от комбинации на входах IN1, IN2 зависит направление вращения.

Если на контакт ENA подать не логическую единицу, а заданный уровень напряжения из доступного диапазона (0-255), то изменится скорость вращения.

Управление шаговым двигателем

Соединение схемы управления, включающей в себя драйвер, двигатель Nema17 и Arduino Nano, выглядит следующим образом.

Рис. 3. Соединение схемы управления,

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

Ввиду того, что логика работы данной схемы предполагает наличие на выходах только логических нулей и единиц, то джамперами 1 и 2 модуль L298N переключается в пассивный режим.

Скетч для работы с шаговым двигателем есть во встроенной библиотеке IDE для Ардуино (называется Stepper Library, найти её можно так — File -> Examples -> Stepper).

Константа stepsPerRevolution отвечает за количество шагов в одном обороте, по умолчанию установлено значение 200. Его необходимо изменить, если модель вашего двигателя имеет другой показатель.

Метод myStepper.setSpeed() отвечает за настройку скорости вращения, по умолчанию в скетче указан показатель 60, его можно изменить под свои требования.

Вызов функции, инициализирующей вращение, осуществляется через метод step с параметром stepsPerRevolution, при отрицательном параметре вращение осуществляется в обратную сторону.

Пример с использованием этой библиотеки можно найти ниже во вложениях. Полную документацию по API можно найти на официальном сайте проекта.

Скетчи двигателей постоянного тока и шаговых двигателей можно найти здесь.

Автор: RadioRadar

Дата публикации: 30.05.2018

Мнения читателей

Нет комментариев. Ваш комментарий будет первый.

Вы можете оставить свой комментарий, мнение или вопрос по приведенному выше материалу:


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

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

Чередование разноименных сигналов (высокий логический уровень или низкий) на парах выводов IN1, IN2 и IN3, IN4 задают направление вращения моторов.

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

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

L298N распиновка

L298N power

 

Подключение мотора и светодиода к модулю L298N

Вместо одного мотора будем подключать светодиод на 12В (см. видео ниже). Можете также использовать светодиодную ленту, только учтите что модуль при токе более более 2 ампер будет сильно греться.

Подключение мотора и светодиода к модулю L298N

 

Скетч

int IN1 = 7;
int IN2 = 6;
int IN3 = 5;
int IN4 = 4;
int ENA = 9;  //ШИМ выход 1
int ENB = 3;  //ШИМ выход 2
int i;
int spd = 10;  //задержка при изменении скорости, чем меньше тем быстрее 

void setup() {
  pinMode (ENA, OUTPUT);  //ШИМ выход 1
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (ENB, OUTPUT);  //ШИМ выход 2
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  digitalWrite (IN3, LOW);  //полярность для светодиода "-"
  digitalWrite (IN4, HIGH);  //полярность для светодиода "+"
}

void loop() {
  digitalWrite (IN2, HIGH);  //полярность для мотора "-"
  digitalWrite (IN1, LOW);  //полярность для мотора "+"
  for (i = 0; i < 250; i++)  {  //цикл разгона
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);  //ждем 2 сек
  for (i = 250; i > 0; i--)  {  //цикл торможения
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(500);
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW);
  for (i = 0; i < 250; i++) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);
  for (i = 250; i > 0; i--) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(3000);
}

 

Видео

Станок с ЧПУ своими руками

Подключение драйвера ШД на L298N к Ардуино, шаговому двигателю и БП

Получив множество писем с просьбами о рассмотрении возможности подключения к разрабатываемому станку простейшего драйвера ШД на L298N для биполярных двигателей, я купил на aliexpress.com драйвер ШД на L298N. Стоит он сущие копейки, работает по схеме двойного моста, соответсвенно не имеет никаких настроек, вроде режима шага, полушага, четвертьшага. Не поддерживает изменение тока удержания. Однако, как уже говорилось, он дёшев и позволяет управлять биполярными шаговыми двигателями в полношаговом режиме в том числе мощными двигателями в корпусе Nema.

фото драйвера ШД на базе L298N

Как видно на фото, на драйвере уже установлены перемычки 12V, ENA и ENB. То есть драйвер находится в режиме 12-вольтового питания ШД, а также со всеми включенными входными пинами. Таким образом, для запуска шагового двигателя достаточно подключить ШД, питание и подавать «плюс» и «сток» в правильной последовательности на разные входы In1, In2, In3, In4.

Подключение драйвера на L298N к Ардуино, шаговому двигателю и блоку питания

Драйвер L298N к ардуино подключаем так: In1 драйвера к цифровому пину 2 Ардуино, соответсвенно In2 к пину 3, In3 к пину 4, In4 к пину 5. Провода ШД к L298N подключаем перебором. У меня заработало так: желтый к Out1, синий — Out2, зеленый — Out3, красный — Out4.

Схема подключения L298N к ардуино, шаговому двигателю и БП

Остальные двигатели ШД подключаем к L298N аналогично. Второй драйвер подключаем начиная с пина 6 Ардуино, третий — с пина 10.

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

Пример 27. Драйвер двигателей на L298N [База знаний]

// подключите пины контроллера к цифровым пинам Arduino

 

// первый двигатель

int enA = 9;

int in1 = 7;

int in2 = 6;

 

// второй двигатель

int enB = 3;

int in3 = 5;

int in4 = 4;

 

void setup()

{

  // инициализируем все пины для управления двигателями как outputs

  pinMode(enA, OUTPUT);  

  pinMode(enB, OUTPUT);  

  pinMode(in1, OUTPUT);  

  pinMode(in2, OUTPUT);  

  pinMode(in3, OUTPUT);  

  pinMode(in4, OUTPUT);

}

 

// эта функция обеспечит вращение двигателей в двух направлениях на установленной скорости

void demoOne()

{  

  // запуск двигателя A

  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  // устанавливаем скорость 100 из доступного диапазона 0~255

  analogWrite(enA, 100);

 

  // запуск двигателя B

  digitalWrite(in3, HIGH);

  digitalWrite(in4, LOW);

  // устанавливаем скорость 100 из доступного диапазона 0~255

  analogWrite(enB, 100);

  

  delay(2000);

 

  // меняем направление вращения двигателей

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

 

  delay(2000);

 

  // выключаем двигатели

  digitalWrite(in1, LOW);

  digitalWrite(in2, LOW);

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

}

 

// эта функция обеспечивает работу двигателей во всем диапазоне возможных скоростей

void demoTwo()

{

  // обратите внимание, что максимальная скорость определяется самим двигателем и напряжением питания

  // ШИМ-значения генерируются функцией analogWrite()

  // и зависят от вашей платы управления

 

  // запускаем двигатели

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

 

  // ускорение от нуля до максимального значения

  for (int i = 0; i < 256; i++)

  {

    analogWrite(enA, i);    

    analogWrite(enB, i);    

    delay(20);

  }

 

  // торможение от максимального значения к минимальному

  for (int i = 255; i >= 0; —i)

  {

    analogWrite(enA, i);

    analogWrite(enB, i);

    delay(20);

  }

 

  // теперь отключаем моторы

  digitalWrite(in1, LOW);

  digitalWrite(in2, LOW);

  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

}

 

void loop()

{

  demoOne();

  delay(1000);

  

  demoTwo();

  delay(1000);

}

Отправить ответ

avatar
  Подписаться  
Уведомление о