#33. Motor shield l293d подключение. Пример кода для Arduino

.#33. Motor shield l293d подключение. Пример кода для Arduino

Робототехника с каждым годом становиться все популярнее. И поэтому количество электроники с помощью которой можно реализовать роботизированную модель достаточно много. А если у вас нет опыта работы с электроникой, вам отлично подойдёт Motor shield на базе драйвера l293d. Шилд устанавливается на плату Arduino UNO.

На shield выведены контакты для подключения двигателей постоянного тока, шаговых двигателей и сервоприводов. Я уже делал проект с использованием данного Motor shield. У вас, наверное, возник вопрос. Если шилд такой простой, почему у меня мало Arduino проектов с его использование? Это связанно со сложностью расширения функционала проекта при использовании Motor shield l293d. Но обо всём по порядку.

Motor shield l293d

Для урока понадодиться:

Технические параметры Motor shield l293d.

  • Напряжение питания двигателей: 5 — 36 В
  • Напряжение питания платы: 5 В
  • Допустимый ток нагрузки: 600 мА на канал
  • Максимальный (пиковый) ток нагрузки: 1,2 А на канал
  • Размер платы: 70х54х20 мм

Общие сведения о Motor shield L293D.

Motor shield построен на драйвере L293D, состоящим из двух H-мост (H-Bridge), с помощью которых можно управлять двумя постоянными двигателями или одним шаговым двигателем. Каждый канал рассчитан на 0.6 А с пиком 1.2 А. Так как на Motor shield установлено две микросхемы L293D, можно управлять сразу четырьмя двигателями постоянного тока, это позволяет использовать данный shield в разработке робот платформ. Так же, на shield установлен сдвиговый регистр 74HC595, который расширяет 4 цифровых контакта Arduino до 8 управляющих контактов двух микросхем L293D. Познакомиться подробнее со сдвиговым регистром 74HC595 можно в уроке: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни.

Питание Motor shield L293D


Питание Motor shield L293D:

  • Общий источник питания для Arduino и двигателей (максимальное напряжение 12 В) — можно использовать один источник питания, используется разъем DC на Arduino UNO или 2-х контактный разъем на Motor shield «EXT_PWR», так же необходимо установить перемычку «PWR».
  • Раздельный источник питания — рекомендуется отдельно питать Arduino и shield, для этого Arduino подключаем к USB, а двигатели подключаем к источнику постоянного тока, используя разъем «EXT_PWR». Необходимо убрать перемычку «PWR».

Внимание! Нельзя подавать питание на «EXT_PWR» выше 12 В, при установленной перемычке «PWR».

Выходные контакты двух микросхем L293D выведены по бокам shield с помощью 5-ти контактных винтовых клемм, а именно М1 , М2 , М3 и М4. К этим контактам подключается четыре двигателя постоянного тока и два шаговых двигателя.

Так же, на shield выведено два 3-х контактных разъема, к которым можно подключить два сервопривода.

Контакты, которые не используются Motor shield L293D:

Так как шилд устанавливается на Arduino UNO, есть контакты, которые не используются Motor shield и к ним можно подключить дополнительные компоненты. Это цифровые контакты D2 и D13 и аналоговые контакты A0-A5. Кроме этого на шилде можно распаять пины A0-A5 и подключаться к ним прямо на shield.

Подключение к Motor shield L293D двигателя постоянного тока.

Подключение к Motor shield L293D двигателя постоянного тока.


Схема подключения двигателя постоянного тока к Motor shield.

Схема подключения двигателя постоянного тока к Motor shield.

Устанавливаем shield сверху Arduino, далее подключаем источник питания к клеммам «EXT_PWR», в примере используется источник питания на 12 В. Теперь подключаем двигатели к клеммам M1, M2, M3 или M4. В примере подключаем 2 двигателя постоянного тока к М4, М3.

Установка библиотеки «AFMotor.h»

Для удобной работы с Motor shield L293D, необходимо установить библиотеку «AFMotor.h». Заходим в Arduino IDE, открываем вкладку «Скетч -> Подключить библиотеку -> Управлять библиотеками…»

Установка библиотеки «AFMotor.h»

Откроется новое окно «Менеджер библиотек», в окне поиска вводим «Adafruit Motor Shield» и устанавливаем библиотеку.

«Adafruit Motor Shield» и устанавливаем библиотеку

Скетч управления двигателем постоянного тока с помощью Motor shield L293D.

#include <AFMotor.h>      // Подключаем библиотеку AFMotor
AF_DCMotor motor4(4);      // Указываем какому порту подключен двигатель (1 - 4)
AF_DCMotor motor3(3);      // Указываем какому порту подключен двигатель (1 - 4)
void setup()
{
  motor3.setSpeed(100);    // Начальная скорость вращения
  motor3.run(RELEASE);     // Останавливаем двигатель
  motor4.setSpeed(50);    // Начальная скорость вращения
  motor4.run(RELEASE);     // Останавливаем двигатель
}
void loop()
{
  /* Вращение двигателя вперед*/
  motor3.run(FORWARD);
  for (int i = 0; i < 255; i++) // Ускоряем двигатель от 0 до 255
  {
    motor3.setSpeed(i);    // Отправка скорости
    delay(10);            // Пауза
  }
  for (int i = 255; i != 0; i--) // Замедляем двигатель от 255 до 0
  {
    motor3.setSpeed(i);    // Отправка скорости
    delay(10);            // Пауза
  }
  /* Останавливаем двигатель*/
  motor3.run(RELEASE);
  delay(1000);            // Пауза
  /*Вращение двигателя назад*/
  motor4.run(BACKWARD);
  for (int i = 0; i < 255; i++) // Ускоряем двигатель от 0 до 255
  {
    motor4.setSpeed(i);    // Отправка скорости
    delay(10);            // Пауза
  }
  for (int i = 255; i != 0; i--) // Замедляем двигатель от 255 до 0
  {
    motor4.setSpeed(i);    // Отправка скорости
    delay(10);            // Пауза
  }
  /* Останавливаем двигатель*/
  motor4.run(RELEASE);
  delay(1000);            // Пауза
}

Описание кода:

Скетч начинается с подключения библиотеки «AFMotor.h», затем создаем объект «AF_DCMotor motor4(4)» в котором указываем номер порта двигателя (M1, M2, M3, M4). Для подключения второго двигателя «AF_DCMotor motor3(3)» и так далее.

#include <AFMotor.h>      // Подключаем библиотеку AFMotor
AF_DCMotor motor4(4);      // Указываем какому порту подключен двигатель (1 - 4)
AF_DCMotor motor3(3);      // Указываем какому порту подключен двигатель (1 - 4)

В блоке «setup» мы вызываем функции «setSpeed(speed)» в которой задаем скорость двигателя, от 0 до 255 и функцию «motor.run» направление вращения двигателя, где «FORWARD» — вперед, «BACKWARD» — назад, «RELEASE» — остановка.

  motor3.setSpeed(100);    // Начальная скорость вращения
  motor3.run(RELEASE);     // Останавливаем двигатель
  motor4.setSpeed(50);    // Начальная скорость вращения
  motor4.run(RELEASE);     // Останавливаем двигатель

Подключение сервопривода к Motor shield L293D.

Подключение сервопривода к Motor shield L293D.

Для этого нам понадобятся следующие комплектующие:

С помощью shield L293D можно управлять сервоприводами. На shield выведены 16-разрядные контакты Arduino 9 и 10, питание для сервоприводов подается от 5 вольтового стабилизатора Arduino, поэтому подключать дополнительное питание в разъем «EXT_PWR» не нужно.

Схема подключения сервопривода SG90S к Motor shield.

Схема подключения сервопривода SG90S к Motor shield.

Скетч управления сервопривода SG90S.

#include <Servo.h>    // Подключаем библиотеку Servo
Servo myservo;        // Создаем объект 
void setup() 
{
  myservo.attach(10); // Указываем к какому порту подключен вывод сервопривода
}
void loop() 
{
  for(int i = 0; i <= 180; i++)        // Увеличиваем угол от 0 до 180
  {
    myservo.write(i);                  // Передаем данные
    delay(15);                         // Пауза 
  }
  for(int i = 180; i>=0; i--)    // Уменьшаем угол от 180 до 0
  {
    myservo.write(i);              // Передаем данные
    delay(15);                       // Пауза 
  }
}

Так как используется стандартный вывод PWM, нет смысла использовать дополнительную библиотеку, воспользуемся стандартной библиотекой Servo.

#include <Servo.h>    // Подключаем библиотеку Servo
Servo myservo;        // Создаем объект

Урок по работе с сервоприводом можно почитать тут: Подключает servo-привод к arduino. Сервопривод + кнопка.

Подключение к Motor shield L293D шагового двигателя NEMO17.

Подключение к Motor shield L293D шагового двигателя NEMO17.

Для этого нам понадобятся следующие комплектующие:

В данном примере подключим шаговый двигатель NEMA 17, который рассчитан на 12 В (и выше) и делает 200 шагов на оборот. Итак, подключите шаговый двигатель к клеммам M3 и M4. Затем подключите внешний источник питания 12 В к разъему «EXT_PWR».

Схема подключения шагового двигателя Nemo17 к Motor shield L293D.

Схема подключения шагового двигателя Nemo17 к Motor shield L293D.

Скетч управления шаговым двигателем Nemo17 с помощью Motor shield L293D.

#include <AFMotor.h>                      // Подключаем библиотеку AFMotor
const int stepsPerRevolution = 200;       // Указываем количество шагов на 1 оборот двигателя

AF_Stepper motor(stepsPerRevolution, 2);  // Указываем что двигатель подключен к портам №2 (М3 - М4)

void setup()
{
  motor.setSpeed(10);                     // Скорость двигателя в минуту
}

void loop() {
  motor.step(100, FORWARD, SINGLE);
  motor.step(100, BACKWARD, SINGLE);

  motor.step(100, FORWARD, DOUBLE);
  motor.step(100, BACKWARD, DOUBLE);

  motor.step(100, FORWARD, INTERLEAVE);
  motor.step(100, BACKWARD, INTERLEAVE);

  motor.step(100, FORWARD, MICROSTEP);
  motor.step(100, BACKWARD, MICROSTEP);
}

Используем ту же библиотеку, что и в первом примере.

Описание кода:

Скетч начинается с подключением библиотеки «AFMotor.h». Во второй строке создаем объект «AF_Stepper motor(48, 2)» где указываем количество шагов на оборот и номер порта.

#include <AFMotor.h>                      // Подключаем библиотеку AFMotor
const int stepsPerRevolution = 200;       // Указываем количество шагов на 1 оборот двигателя

В разделе настройки, функцией «motor.setSpeed(10);» устанавливает скорость двигателя, где «10» количество оборотов в минуту.

motor.setSpeed(10);

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

motor.step(100, FORWARD, SINGLE); 
motor.step(100, BACKWARD, SINGLE);
  • «100» — это сколько шагов, необходимо сделать.
  • «FORWARD» и «BACKWARD» — направление вращение двигателем.
  • «SINGLE» — активация одной обмотки двигателя для совершения шага.
  • «DOUBLE» — активация двух обмоток двигателя, что обеспечивает больший вращающий момент
  • «INTERLEAVE» — применение ШИМ для управления шаговым двигателем двигателем.

Для начинающего Ардуинщика Motor shield L293D

Вывод по использованию Motor shield L293D.

Для начинающего Ардуинщика Motor shield L293D позволит реализовать роботизированную модель. Но реализовать более серьёзные проекты не получится. Так как свободных pin для подключения остается не много. Что еще мне не нравится в данном shield это то, что пины для shield заняты всегда, даже если мы подключили 2 двигателя постоянного тока. А другая пара подключения свободна, пины Arduino все равно будут заняты, и мы не сможем их использовать. Это наглядный пример того, что использования данного шилда не является универсальным и гибким решением.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Скетч управления двигателем постоянного тока с помощью Motor shield L293D Скетч управления двигателем постоянного тока с помощью Motor shield L293D.ino2 Kb 774 Скачать
Скетч управления сервопривода SG90S Скетч управления сервопривода SG90S.ino1 Kb 734 Скачать
Скетч управления шаговым двигателем Nemo17 с помощью Motor shield L293D Скетч управления шаговым двигателем Nemo17 с помощью Motor shield L293D.ino1 Kb 766 Скачать
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 13 июня , 2021

Комментарии

Ваше Имя*
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.


Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box