Мы в социальных сетях

подчеркивание красное для правой колонки

Наш официальный YouTube канал

подчеркивание красное для правой колонки

Подключение Motor Shield L293D к плате Arduino и управление электромоторами

Плата Motor Shield L293D для управления шаговыми и коллекторными двигателями на Arduino UNO

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

Чем эта статья может быть вам полезна

Фото платы Motor Shield L293D, которая нужна для управления шаговыми и коллекторными двигателями на Arduino UNO

Целью статьи является научиться практически, связывая Motor Shield L293D и Arduino, научиться управлять электромоторами. В этой статье вы познакомитесь с базовыми знаниями, которые будут необходимы для создания более серьезного проекта. Также мы узнаем из каких элементов состоит Motor Shield L293D и его технические характеристики.

Технические характеристики Motor Shield L293D

Motor Shield L293D имеет следующие характеристики :

  • Максимальный продолжительный ток в каждом канале: 0,6 А;
  • Допустимый ток нагрузки 600мА на канал, пиковый ток — 1.2A
  • Питание моторов от 4.5 В до 36 В
  • 4-х канальное управление
  • Присутствует защита от перегрева
  • Присутствует контакт для дополнительного питания платы

Разберемся же, из чего состоит этот motor shield. На фотографии ниже вы можете найти цифры, на которые мы будем опираться.

1. Под цифрой "1" на плате находятся микросхемы, обеспечивающие работу шилда. Две крайние микросхемы называются L293D, они позволяют управлять слаботочными двигателями с током потребления до 600 мА на канал. По центру же находится микросхема, которая уменьшает количество управляющих выводов.

2. Под вторым номером находятся выводы, отвечающие за подключение сервоприводов. На плате обозначены контакты питания, так что подключить сервопривод не составит труда.

3. Под цифрой 3 обозначены клемма, к которым нужно подключать электродвигатели. Имеются 4 клемма под названиями: M1, M2, M3, M4. Следовательно, подключить к плате возможно только 4 электромотора.

4. Здесь размещены клемма, через которые вы можете запитать ваш шилд, ведь для работы моторов необходимо большее напряжение, чем напряжение от Arduino. Хотелось бы отметить важный момент, чтобы запитывать Motor Shield L293D иным источником необходимо снять перемычку, которая находится под цифрой 5

5. Под цифрой пять находится перемычка, отвечающая за питание шилда.

Подробный разбор платы Motor Shield L293D, все из чего она состоит и подлкючение электромоторов к Arduino

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


После того, как мы познакомились с технической информацией устройства, перейдем к практической части.

Необходимые компоненты для подключения

Для подключения нам необходимы следующие компоненты:

Все эти элементы можно приобрести по низкой цене и с высоким качеством в интернет магазине SmartElements.

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


Необходимые компоненты для подключения Motor Shield L293D к плате Arduino для управления электромоторами

После того, как вы подготовили все необходимые компоненты, можно перейти к подключению. Сначала рассмотрим схему подключения нашего мини-проекта.

Схема подключения Motor Shield L293D и Arduino

Присоединение шилда к Arduino воспроизводится стандартным способом, а именно прямым подключением, сделав "бутерброд". Как это сделать, вы можете увидеть на фотографии ниже.

Подключение Motor Shield L293D к плате Arduino

После подключения Motor Shield L293D к Arduino, нам необходимо присоединить оставшиеся компоненты. Правильное подключение показано на фотографии ниже.

Подключение Motor Shield L293D к плате Arduino для управления электромоторами

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

Готовый программный код для управления Motor Shield L293D

Для работы датчика на Arduino нужно скачать и установить библиотеку AFMotor .

Скачать библиотеку можно здесь .


После того, как мы скачали нужную библиотеку, ее нужно правильно установить. Скачанные файлы нужно переместить по следующему пути :

Диск C стрелка Progtam Files стрелка Arduino стрелка Libraries

папка с экрана

После того, как мы все сделали перейдем к самой важной ступеньке, а именно к программированию.


Мы рассмотрим два программных кода с подключением одного и нескольких электродвигателей к L293D . Рассмотрим два случая для того, чтобы вы увидели тонкости и особенности этого программного кода..


Для начала рассмотрим подключение одного мотора к Motor Shield L293D и Arduino.

#include <AFMotor.h> // Подключаем библиотеку для работы с шилдом 
int i;
AF_DCMotor motor1(1);// Подключаем моторы к клеммникам M1

void setup() {
motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов
motor1.run(RELEASE);
}

void loop() {
				 
motor1.run(FORWARD); // Задаем движение вперед
motor1.setSpeed(255); // Задаем скорость движения
delay(3000); //Указываем время движения
				 
motor1.run(RELEASE); // Останавливаем двигатели
delay(500); // Указываем время задержки

motor1.run(BACKWARD);  // Задаем движение назад
motor1.setSpeed(255);  // Задаем скорость движения 
delay(3000); // Указываем время движения
				    
motor1.run(RELEASE); // Останавливаем двигатели
delay(500); // Указываем время задержки

// Разгоняем двигатели в одном направлении от нулевой скорости, до максимальной
motor1.run(FORWARD); 
for (i=0; i<255; i++) {
motor1.setSpeed(i); 
delay(10);
}
				 
motor1.run(RELEASE); // Останавливаем двигатели
delay(500); // Указываем время задержки
				  
motor1.run(BACKWARD);// Разгоняем двигатели в обратном направлении
for (i=255; i>=0; i--) {
motor1.setSpeed(i); 
delay(10);
}
				 
motor1.run(RELEASE); // Останавливаем двигатели
delay(500); // Указываем время задержки
}

				

Перейдем ко второму коду, для управления уже несколькими электромоторами.


 #include <AFMotor.h> // Подключаем библиотеку для работы с шилдом 
int i;
AF_DCMotor motor1(1);// Подключаем моторы к клеммникам M1
AF_DCMotor motor2(2);// Подключаем моторы к клеммникам M2
AF_DCMotor motor3(3);// Подключаем моторы к клеммникам M3
AF_DCMotor motor4(4);// Подключаем моторы к клеммникам M4

void setup() {
 motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов
 motor1.run(RELEASE);
 motor2.setSpeed(255);
 motor2.run(RELEASE);
 motor3.setSpeed(255);
 motor3.run(RELEASE);
 motor4.setSpeed(255);
 motor4.run(RELEASE);

}

void loop() {
 
 motor1.run(FORWARD); 
 motor1.setSpeed(255); 
 motor2.run(FORWARD); 
 motor2.setSpeed(255); 
 motor3.run(FORWARD); 
 motor3.setSpeed(255); 
 motor4.run(FORWARD); 
 motor4.setSpeed(255); 
 delay(3000); //Указываем время движения
 
  motor1.run(RELEASE); // Останавливаем двигатели
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  delay(500); // Указываем время задержки

  motor1.run(BACKWARD);  // Задаем движение назад
  motor1.setSpeed(255);  // Задаем скорость движения 
  motor2.run(BACKWARD); 
  motor2.setSpeed(255);
  motor3.run(BACKWARD); 
  motor3.setSpeed(255);
  motor4.run(BACKWARD); 
  motor4.setSpeed(255);  
  delay(3000); // Указываем время движения
    
  motor1.run(RELEASE); // Останавливаем двигатели
  motor2.run(RELEASE);
  motor3.run(RELEASE); 
  motor4.run(RELEASE); 
  delay(500); // Указываем время задержки
  
  // Разгоняем двигатели в одном направлении от нулевой скорости, до максимальной
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
  for (i=0; i<255; i++) {
  motor1.setSpeed(i); 
  motor2.setSpeed(i); 
  motor3.setSpeed(i); 
  motor4.setSpeed(i); 
  delay(10);
  }
 
  motor1.run(RELEASE); // Останавливаем двигатели
  motor2.run(RELEASE); 
  motor3.run(RELEASE); 
  motor4.run(RELEASE); 
  delay(500); // Указываем время задержки 
  
  motor1.run(FORWARD); // Разгоняем двигатели в обратном направлении
  motor2.run(FORWARD); 
  motor3.run(FORWARD); 
  motor4.run(FORWARD); 
  for (i=255; i>=0; i--) {
  motor1.setSpeed(i); 
  motor2.setSpeed(i);
  motor3.setSpeed(i);
  motor4.setSpeed(i);
  delay(10);
 }
 
  motor1.run(RELEASE); // Останавливаем двигатели
  motor2.run(RELEASE);
  motor3.run(RELEASE); 
  motor4.run(RELEASE); 
  delay(500); // Указываем время задержки
}

Разбор програмного скетча для управления электромоторами с помощью Motor Shield L293D и Arduino

Схему соединений мы собрали. Скетч вставили и загрузили. У нас все получилось, но мне кажется, что мы что-то забыли. Мы забыли разобраться в том, как же работает наша установка! Рассматривать мы будем участки кода, которые могут вызвать у вас непонимание. Перейдем к изучению написанного кода.


В участке кода, представленном ниже, мы задаем максимальную скорость, для электромоторов. Мы указали максимальное значение скорости равное "255".

motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов

В данном участке кода мы командой "motor1.run(FORWARD);" задаем движение электродвигателям вперед, а командой "motor1.setSpeed(255);" указываем, с какой скоростью будут они работать. Если вы захотите установить максимальную скорость, то ее значение должно быть таким, которое указано в строчке "motor1.setSpeed(255);" (в нашем случае значение максимальной скорости равно 255).

	 
motor1.run(FORWARD); // Задаем движение вперед
motor1.setSpeed(255); // Задаем скорость движения

Вы можете заметить строчки, в которых указана функция "delay"(Пример такого кода указан ниже). Эта функция отвечает за продолжительность действия того или иного действия. В нашем случае "delay" указывает, какое количество времени двигатель будет бездействовать.

motor1.run(RELEASE); // Останавливаем двигатели
delay(500); // Указываем время задержки

Надеюсь у вас все получилось! Если у вас остались вопросы, можете написать нам в вконтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы в скором времени!


Вам возможно будет интересно

Комментарии