Драйвер L298P для Arduino
Драйвер L298P для Arduino

Драйвер L298P для Arduino

Арт. 13678

830

менее 500 шт.

Описание

Драйвер L298P для Arduino

Если вы интересуетесь темой создания роботов на Ардуино, то обязательно оцените этот драйвер двигателей, выполненный в виде платы расширения (шилда). В его основе лежит микросхема L298P, позволяющая управлять скоростью и направлением вращения двух коллекторных двигателей. Кроме того на плате присутствуют разъемы для подключения ультразвукового дальномера, модуля Bluetooth и сервопривода, группа контактов для подключения различных датчиков, а так же пьезодинамик.

Технические характеристики

Технические характеристики платы вытекают из характеристик драйвера двигателей L298P. Здесь мы приведём основные из них, с остальными можно ознакомиться в даташите.

  • Напряжение питания драйвера: от 4.5 до 7 В
  • Напряжение питания двигателей: от 4.8 до 46 В
  • Максимальный ток на канал: 
    • непрерывный: 2 А
    • периодический (длительностью до 10 мс, простой 40 мс): 2.5 А
    • не периодический (длительностью до 100 мкс): 3 А
  • Рабочая температура: от -25 до 130°C
  • Защита от перегрева.

Распиновка и назначение выводов

Распиновка Fundumoto L298P Shield

 

При установленной перемычке вывод VMS клеммы питания моторов соединяется с выводом Vin Ардуино. То есть моторы и Ардуино будут питаться от одного источника. При этом он может быть подключен как к DC-разъему Ардуино, так и к клемме питания моторов. Второй вариант может оказаться весьма удобным, поскольку не требует дополнительного места в отличие от DC-штекера, выступающего из Ардуино. Здесь следует помнить, что рекомендуемое входное напряжение для платы Ардуино составляет 7..12 В. При подключении моторов, требующих более высокое напряжение питания, необходимо удалить перемычку и использовать для них и Ардуино разные источники (разные уровни). Следующие изображения иллюстрируют это.

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

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

Подключение питания к шилду без перемычки

 

Для управления моторами используются 4 вывода Ардуино:

  • D10 – Управление скоростью мотора М1
  • D12 – Направление вращения мотора М1
  • D11 – Управление скоростью мотора М2
  • D13 – Направление вращения мотора М2

К выводу D4 подключен активный пьезодинамик. Чтобы он начал генерировать звуковой сигнал, достаточно установить на D4 значение HIGH.

Ультразвуковой дальномер, модуль Bluetooth и сервопривод могут быть подключены к шилду через соответствующие разъёмы. При этом они будут использовать следующие выводы Ардуино:

Компонент Вывод компонента Вывод Ардуино
Модуль Bluetooth Tx D0 (Rx)
Rx D1 (Tx)
Ультразвуковой дальномер Echo D7
Trig D8
Сервопривод Сигнальный (PWM) D9

 

Аналоговые выводы Ардуино продублированы в группе штыревых контактов вместе с выводами Gnd и Vcc. Это значительно облегчает подключение датчиков при построении робота.

Для подключения устройств-источников прерываний (например, кнопки) на плате предусмотрен штыревой разъём с выводами D2, Vcc и Gnd.

Выводы Ардуино D3, D5 и D6, поддерживающие широтно-импульсную модуляцию, объединены в группу с Vcc и Gnd для облегчения подключения RGB светодиодов.

Пример скетча

Для управления двумя коллекторными моторами подсоедините их к винтовым клеммам, подключите питание, следуя приведёнными ранее схемам, и залейте в Ардуино следующий скетч:

// Пример работы с L298P Motor Drive Shield
// https://compacttool.ru/l298p-drajver-arduino-modul

// Для управления моторами используются следующие пины:
const byte pinM1Speed = 10;     // Мотор 1 скорость
const byte pinM1Direction = 12; // Мотор 1 направление вращения
const byte pinM2Speed = 11;     // Мотор 2 скорость
const byte pinM2Direction = 13; // Мотор 2 направление вращения

void setup() {
  // Настраиваем пины направления на вывод
  pinMode(pinM1Direction, OUTPUT);
  pinMode(pinM2Direction, OUTPUT);
  // Пины скорости настраивать не обязательно: их настройка 
  // в режим OUTPUT происходит внутри функции analogWrite
}

void loop() {
  // Запускаем оба мотора
  digitalWrite(pinM1Direction, HIGH); // Задаём направление (HIGH/LOW)
  digitalWrite(pinM2Direction, HIGH);
  analogWrite(pinM1Speed, 255);       // и скорость (от 0 до 255)
  analogWrite(pinM2Speed, 255);
  delay(3000);

  // Меняем направление вращения
  digitalWrite(pinM1Direction, LOW);
  digitalWrite(pinM2Direction, LOW);
  delay(3000);

  // Останавливаем моторы, установив скорость = 0
  analogWrite(pinM1Speed, 0);
  analogWrite(pinM2Speed, 0);
  delay(3000);
}