Управление двигателем постоянного тока с помощью Arduino и ИМС L298

Добавлено 22 января 2017 в 19:30

Подключив к Arduino микросхему моста L298, вы сможете управлять двигателем постоянного тока.

Двигатель постоянного тока (DC) является наиболее распространенным типом электродвигателей. Двигатели постоянного тока обычно имеют только два вывода, один положительный и один отрицательный. Если вы подключите эти два вывода напрямую к аккумулятору, двигатель начнет крутиться. Если же поменять полярность подаваемого напряжения, двигатель будет вращаться в противоположном направлении.

Чтобы управлять направлением вращения двигателя постоянного тока без переподключения питания к его выводам, вы можете использовать схему, называемую Н-мостом. Н-мост – это электронная схема, которая может управлять вращением двигателя в обоих направлениях. Н-мосты используются во множестве различных приложений, самым распространенным из которых является управление двигателями в роботах. Эта схема называется Н-мостом потому, что она использует четыре транзистора, подключенных таким образом, что схема выглядит как буква "Н".

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

Распиновка микросхемы L298 показана на рисунке ниже. Техническое описание L298 можно скачать здесь.

Распиновка микросхемы L298 (вид сверху)

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

Необходимые комплектующие

Комплектующие для эксперимента управления двигателем постоянного тока с помощью Arduino
Комплектующие для эксперимента управления двигателем постоянного тока с помощью Arduino
Схема включения микросхемы L298 для управления двумя электродвигателями
Схема включения микросхемы L298 для управления двумя электродвигателями

Схема выше показывает, как подключить микросхему L298 для управления двумя электродвигателями. Для управления каждым двигателем у микросхемы есть по три вывода: вход 1 (IN1), вход 2 (IN2) и включение A (EN A) для двигателя 1, и вход 3 (IN3), вход 4 (IN4) и включение B (EN B) для двигателя 2.

Поскольку в данном руководстве мы будем управлять только одним электродвигателем, то мы подключим Arduino к выводам IN1 (вывод 5), IN2 (вывод 7) и EN A (вывод 6) микросхемы L298. Выводы 5 и 7 цифровые, то есть для вращения двигателя в заданную сторону на эти выводы необходимо подавать неизменяющиеся в времени сигналы логического нуля или единицы. В то время, как на вывод 6 необходимо подавать широтно-импульсно-модулированный (ШИМ) сигнал, который управляет скоростью вращения двигателя.

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

Выбор направления вращения двигателя при работе с микросхемой L298
IN1IN2Двигатель
  остановлен
1 вращение вперед
 1вращение назад
11остановлен

В таблице ниже приведено описание подключения микросхемы L298 к нашей плате Arduino Mega 2560.

Подключение микросхемы L298 к плате Arduino
Выводы L298Выводы ArduinoНазначение
IN1вывод 8выбор направления вращения двигателя
IN2вывод 9
EN AШИМ вывод 2управление скоростью вращения двигателя

Для установки значений на выводах 8 и 9 платы Arduino мы будем использовать функцию digitalWrite(), а для установки занчений на выводе 2 – функцию analogWrite().

Ниже показана фотография стенда, собранного для проведения эксперимента.

Стенд для проведения эксперимента по управлению двигателем постоянного тока с помощью Arduino и микросхемы Н-моста L298
Стенд для проведения эксперимента по управлению двигателем постоянного тока с помощью Arduino и микросхемы Н-моста L298

Код

const int pwm = 2;	// вывод 2 настраивается, как ШИМ
// выводы для выбора направления вращения двигателя
const int in_1 = 8;
const int in_2 = 9;


void setup()
{
  pinMode(pwm,OUTPUT);  	// Мы должны настроить ШИМ вывод на выход
  pinMode(in_1,OUTPUT); 	// Логические выводы так же настраиваются на выход
  pinMode(in_2,OUTPUT);
}

void loop()
{
  // Для вращения по часовой стрелке необходимо установить in_1 = High , in_2 = Low
  digitalWrite(in_1,HIGH);
  digitalWrite(in_2,LOW);
  analogWrite(pwm,255);   // установка pwm в значение 255
  // Мы можем изменить скорость вращения, изменив выходное значение pwm.
  // Вращение двигателя по часовой стрелке 3 секунды.
  delay(3000); 		

  // Остановка
  digitalWrite(in_1,HIGH);
  digitalWrite(in_2,HIGH);
  delay(1000) ;

  // Для вращения против часовой стрелки необходимо установить IN_1 = LOW , IN_2 = HIGH
  digitalWrite(in_1,LOW);
  digitalWrite(in_2,HIGH);
  delay(3000);

  //Остановка
  digitalWrite(in_1,HIGH);
  digitalWrite(in_2,HIGH);
  delay(1000);
}

Сборка

  1. Подключите выводы 5V и корпус микросхемы L298 к выводам 5V и корпус платы Arduino;
  2. Подключите двигатель к выводам 2 и 3 микросхемы L298;
  3. Подключите вывод IN1 микросхемы L298 к выводу 8 платы Arduino;
  4. Подключите вывод IN2 микросхемы L298 к выводу 9 платы Arduino;
  5. Подключите вывод EN A микросхемы L298 к выводу 2 платы Arduino;
  6. Подключите вывод SENS A микросхемы L298 к корпусу;
  7. Подключите Arduino к компьютеру, используя USB кабель, и загрузите программу на плату, используя Arduino IDE;
  8. Обеспечьте питание платы Arduino с помощью источника питания, аккумулятора или USB кабеля.

Теперь двигатель должен сначала вращаться по часовой стрелке в течение 3 секунд, а затем против часовой стрелки так же в течение 3 секунд.

Видео


На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.


Сообщить об ошибке