Главная » Arduino
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Похожие статьи:


Arduino UNO урок 13 - драйвер двигателя L298N

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

В данной статье я хочу рассмотреть подключение к Arduino готового модуля L298N, которые очень широко представлены на популярном аукционе ebay, AliExpress и в др. местах. Можно конечно купить данную микросхему и в России и сделать самому шилд и всю обвязку, но сегодняшняя реальность такова, что при средней стоимости модуля на ebay в 5 долларов, все комплектующие при покупке у нас выйдут примерно также, а то и дороже. Не говоря уже про трудозатраты на изготовление печатной платы, пайку и т.д.

Сами модули на микросхемах L298N выглядят так:

L298N

Принципиальная схема такого модуля выглядит следующим образом:

Схема модуля на L298N

Шилд имеет следующие пины подключения:
Vcc - подключение внешнего питания двигателей
+5 - питание логики
GND - общий
IN1, IN2, IN3, IN4 (разъем P4 на схеме) - входы управления двигателями
OUT1, OUT2 (разъем P2 на схеме) - выход первого двигателя
OUT3, OUT4 (разъем P3 на схеме) - выход второго двигателя
Выключатель S1 служит для переключения питания логической части микросхемы. Т.е. при включенном S1 питание логической части берется от внутреннего преобразователя модуля. При выключенном S1 питание берется от внешнего источника.
На модулях также присутствуют перемычки ENA и ENB для разрешения включения двигателей. Если необходимо, их можно также подключить к Arduino и задействовать, но это лишние 2 провода и в этих входах нет особого смысла.

Раписновка шилда L298N

ШИМ управление позволяет плавно изменять скорость вращение двигателя. Если нам не нужно ШИМ управление, то на соответствующий вход нужно просто подать логическую 1. На какой именно вход IN1 или IN2 вы подадите сигнал ШИМ, либо направление вращения - разницы не имеет. Тоже самое справедливо и для входов IN3, IN4.

Схема подключения шилда L298N к контроллеру Arduino:

Схема подключения модуля L298N

Для питания логической части схемы необходимо нажать кнопку или вставить перемычку (зависит от типа модуля). Если же на вашем модуле не предусмотрен преобразователь 5В, то дополнительно, необходимо соединить вывод 5V от Arduino к входу +5 шилда.
Как видно из схемы выше, 2 и 4 вывод используются для установки направления движения, а 3 и 5 для ШИМ управления выводами.

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

#define D1 2          // Направление вращение двигателя 1
#define M1 3          // ШИМ вывод для управления двигателем 1
#define D2 4          // Направление вращение двигателя 2
#define M2 5          // ШИМ вывод для управления двигателем 2

bool direction = 0;   // Текущее направление вращения       
int value;            // Текущее значение ШИМ
 
void setup() 
{ 
    pinMode(D1, OUTPUT);
    pinMode(D2, OUTPUT);  
} 
 
void loop() 
{ 
  for(value = 0; value <= 255; value+=1) 
  { 
    digitalWrite(D1, direction);  // Задаем направление вращения
    digitalWrite(D2, direction);
    analogWrite(M1, value);       // Задаем скорость вращения
    analogWrite(M2, value);
    delay(20); 
  }  
  direction = direction ^ 1;      // Инвертируем значение, чтобы в след. цикле вращаться в другую сторону
}

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 Драйвер электродвигателей
L298
1 Поиск в FivelВ блокнот
U2 Линейный регулятор
L7805AB
1 Поиск в FivelВ блокнот
D1-D4, D9-D12 Диод8 Поиск в FivelВ блокнот
D5-D8, D13 Светодиод5 Поиск в FivelВ блокнот
С1, С3 Конденсатор0.1 мкФ2 Поиск в FivelВ блокнот
С2 Электролитический конденсатор470 мкФ 16 В1 Поиск в FivelВ блокнот
R1, R2 Резистор
20 кОм
2 Поиск в FivelВ блокнот
R3 Резистор
1 кОм
1 Поиск в FivelВ блокнот
S1 Кнопка1 Поиск в FivelВ блокнот
Р2, Р3 Клеммный зажим для подключения двигателя2 Поиск в FivelВ блокнот
Р4 Разьем для подключения к Arduino1 Поиск в FivelВ блокнот
Р5 Клеммный зажим для подключения питания1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Колтыков А.В. Опубликована: 2012 г. 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (28) | Я собрал (0) | Подписаться

0
Николай #
Почему нельзя использовать простой мосфет транзистор?
Ответить
0
Сарсен #
Можно мосфет, на каждый двигатель 4 полевых транзистора, т.к. нужна переполюсовка. Причем лучше делать на микросхеме. Иначе один мосфет не успеет выключиться, другой уже включиться и произойдет маленькое КЗ.
Ответить
0
Александр #
Странно, я всегда думал что вход EnableA - это разрешение работы канала А (используется для ШИМ в том числе). А входы 1 и 2 дают управление направлением вращения. Возможно что у меня модуль немного другой.
Ответить
0
E #
Получается, что мотор всегда работает?
Можно ли использовать этот драйвер как реле для включения/выключения моторов? Я так понимаю, нужно использовать контакты ENA и ENB?
Просто реле не предлагайте, нужно управление направлением вращение двигателя
Ответить
0
talibanich #
Нет, не всегда
Ответить
0
Е #
По-моему, на последней картинке ошибка: GND контакт на драйвере нужно подключать к минусу на батарейке (питании моторов), а не к Arduine. Разве нет?
Ответить
0
vladimir #
Минус батарейки и так будет соединен с GND (GND - общий, это "масса")
Ответить
0
Не скажу #
Земля GND соединяется со всем, и с драйвером, и с ардуиной, и с логическим питанием, и с питанием двигателе GND в этой схеме одна, бывает что две земли, но это я вообще про другое
Ответить
0
Artem Riasnianskyi #
А можно как-то сделать, чтобы моторчики одновременно в разные стороны крутились?
Ответить
0
AN-Misha #
Задаешь направление движения.
digitalWrite(D1, HIGH); // в одну сторону
digitalWrite(D1, LOW); // в другую.
То есть направление зависит от состояние пина, отвечающего за направление(HIGH или LOW).
Ответить
0
Дмитрий #
У меня немного другая схема. ШИМ подается на EnA, тогда как на In1 и In2 подаем 1/0 или 0/1 чем задаем направление. Потерял кучу времени, пока понял что дело в мосте, а не в ардуине, контактах и программе.
Ответить
0
Ефим #
Можно ли приспособить данный драйвер для работы с более мощными двигателями? Просто подсоединить, последовательно, МОСФЕТ, не получится из за переполюсовки?
Ответить
0
Евгений #
Как вы откомпилировали код не объявив М1 и М2?
Ответить
0
Евгений #
Прошу прощения, вы объявили, но не ассоциировали с каким либо портом
Ответить
0
Антон #
Дело не в схеме. ШИМ подается на ENa, ENb. 1 и 2, 2 и 3 входы соответственно отвечают за направление вращения двигателей. Можно подавать ШИМ и на входы, но! В даташите указано, что при одинаковых сигналах на входах двигатель останавливается! Это не зависит от схемы.
Ответить
0
Usto #
В предложенном Автором статьи подключении, когда En A En B постоянно подключены к +5, экономия 2 контактов Ардуино переходит в усложнение программирования при желании изменить направление вращения. А для этого модуль и применяется, иначе усиль выход одним транзистором и подай на него ШИМ.
И так, по порядку. Микросхема содержит 4 пары транзисторов с выводами Out1...Out4 от средних точек. Внутренняя логика защищает от КЗ, позволяя сигналами In1...In4 в соответствующей паре выход Out1...Out4 подключить к Vcc или земле, если есть разрешение En1 для Out1 и Out2 и разрешение En2 для выходов Out3 и Out4.
ШИМ. В зависимости от значения value (в статье analogWrite(M1, value); ) в течение интервала 256/value на выходе единица, и ноль в течение 1-256/value.
В итоге на двигатель, подключенный к Out1 Out2 при En1=1 получим

№пп In1 In2 Out1 Out2 сост. двигателя
1 0 0 земля земля обестоен
2 0 1 +пит. земля прямое питание
3 1 0 земля +пит обратное питание
4 1 1 +пит +пит обесточен

Если при In1=0 и ШИМ = минимум (строка 0) Остановка. Переключим направление (строка 3), In1=1 . ШИМ начнет работать "наизнанку".
Если управлять мощностью по линиям En Шим ведет себя "правильно"
Ответить
0
Андрей #
Можно ли этот шилд использовать для шагового двигателя? Если можно то как? В моем шаговом 6 выводов.
Ответить
0
uno #
uno shield L297
Прикрепленный файл: uno shield L297.jpg
Ответить
0
uno #
uno shield L297 программа
Прикрепленный файл: uno_stepper_home.ino
Ответить
0
Михаил #
Подскажите, какое питание нужно будет подать для двигателя? К примеру для двигателя от cd привода или для двигателя дши200?
Ответить
0
Михаил #
Спасибо за ответ. Двигатель 12в название 28BYJ48.
4х фазный 5 проводов.
Ответить
0
Пётр #
Можно ли этот шилд использовать для шагового двигателя? 2 обмотки, 4 вывода. двиг от принтера HP - 5L
Ответить
0
Родион #
А можно заменить команду "direction = direction ^ 1;" на команду " direction != direction; "
Ответить
0
artiombodrow #
А почему моторы пищат?
Ответить
0
Дмитрий #
В наличии имеется только l298 без обвязки. Сам шилд получать далеко. Внимательно изучаю его с целью повторения (хоть какого-нибудь). Зачем на шилде полевик? Радиатор не маловат для микросхемы? Пытаюсь построить чпу на сервоприводах. Выводов ардуины хватит?
Ответить
0
Дмитрий #
Это не полевик, а 5 вольт стабилизатор
Ответить
0
Владислав #
Нужно управлять 3а двигателем 24в. Можно подробней про параллельное подключение?
Ответить
0
Дмитрий #
А если мне не нужно менять направление вращения, могу я просто дать +5 (или ничего не давать) на соответствующие входы драйвера, вместо того чтобы подключать их к D3 и D5?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Программатор Pickit3 Осциллограф DSO138
вверх