Драйвер шагового двигателя и двигателя постоянного тока l298n и arduino

Содержание

Подключение драйвера двигателя к Arduino

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

VCC 5V — питание микросхемы драйвера двигателей

MOTOR 2.5 — 36V — питание двигателей

IN3, IN4 — управление направлением вращения и скоростью двигателя М2

GND — земля (общий)

IN1, IN2 — управление направлением вращения и скоростью двигателя М1

GND — земля (общий)

M1, M2 — подключение двигателей постоянного тока

Кроме драйвера понадобится контроллер DaVinci, два мотора постоянного тока, соединительные провода и дополнительный источник питания, так как контроллер выдает маленькие токи и на двигатели необходимо подавать питание отдельным источником питания к контакту MOTOR 5-36V.

Управление двигателями производится с помощью ШИМ сигналов через контакты IN1..IN4.Двигатели подключаются к клеммам М1 и М2. При этом полярность не имеет значения, ее можно поменять программно.

Чтобы начать работу с датчиком его необходимо подключить к микроконтроллеру по схеме ниже. 

Программа

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

#define M1 3
#define DIRECTION1 9

void setup() {
   pinMode(M1, OUTPUT);
   pinMode(DIRECTION1, OUTPUT);
}

void loop() {
  digitalWrite(M1, LOW);
  digitalWrite(DIRECTION1, HIGH);
  delay(1000);
  
  digitalWrite(M1, HIGH);
  digitalWrite(DIRECTION1, LOW);
  delay(1000);
}

Программу можно усложнить и кроме направления менять еще и мощность.

#define M1 3
#define DIRECTION1 9

void setup() {
   pinMode(M1, OUTPUT);
   pinMode(DIRECTION1, OUTPUT);
}

void loop() {
  analogWrite(M1, 255);
  digitalWrite(DIRECTION1, LOW);
  delay(2000);
  
  analogWrite(M1, 130);
  digitalWrite(DIRECTION1, LOW);
  delay(2000);

  
  analogWrite(M1, 125);
  digitalWrite(DIRECTION1, HIGH);
  delay(2000);
  
  analogWrite(M1, 0);
  digitalWrite(DIRECTION1, HIGH);
  delay(2000);
}

В итоге сначала мотор вращается с максимальной скоростью, затем замедляется, и повторяет все в обратном направлении.

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

#define M1 3
#define M2 6
#define DIRECTION1 9
#define DIRECTION2 12

void setup() {
   pinMode(M1, OUTPUT);
   pinMode(M2, OUTPUT);
   pinMode(DIRECTION1, OUTPUT);
   pinMode(DIRECTION2, OUTPUT);
}

void loop() {
  analogWrite(M1, 100);
  digitalWrite(DIRECTION1, LOW);
  analogWrite(M2, 100);
  digitalWrite(DIRECTION2, LOW);
  delay(1000);
  
  analogWrite(M1, 200);
  digitalWrite(DIRECTION1, LOW);
  analogWrite(M2, 200);
  digitalWrite(DIRECTION2, LOW);
  delay(2000);
  
  analogWrite(M1, 155);
  digitalWrite(DIRECTION1, HIGH);
  analogWrite(M2, 155);
  digitalWrite(DIRECTION2, HIGH);
  delay(2000);
  
  analogWrite(M1, 55);
  digitalWrite(DIRECTION1, HIGH);
  analogWrite(M2, 55);
  digitalWrite(DIRECTION2, HIGH);
  delay(1000);
}

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

Работа шагового двигателя и описание драйвера

Как работает шаговик?

Для практических задач с точным перемещением объекта обязательно требуется ШД. Это мотор, который перемещает свой вал в зависимости от заданных шагов в программе контроллера. Чаще всего их применяют в станках ЧПУ, робототехнике, манипуляторах, 3D-принтерах.

Мы же с вами рассмотрим конкретный двигатель 28BYj-48 с драйвером управления ULN2003. Он достаточно дешёвый, прост в сборке и легко писать программу.

В 4-шаговом режиме он может совершать 2048 шагов, в 8-шаговом 4096 шагов. Питание 5 В, ток потребления 160 мА. Передаточное число 1:64 , то есть один шаг он совершит на 5,625 градусов. Крутящий момент составляет 34 мН.м. Средняя скорость 15 об/мин, с помощью программного кода можно ускорить до 35 об/мин, но вы должны понимать, что мы при этом теряем мощность и точность.

Размеры двигателя указаны из первоисточника — даташита производителя Kiatronics.

А вот таким образом он выглядит изнутри:

Для небольших технических проектов — 28BYj-48 идеальный вариант. Его главным преимуществом является дешевизна и простота. Прилагаю спецификацию:

Тип мотора Униполярный шаговый двигатель
Число фаз 4
Рабочее напряжение 5-12 вольт
Частота 100 Гц
Частота под нагрузкой > 600 Гц
Крутящий момент > 34.3 мН*м (120 Гц)
Режим шага рекомендуется полушаговый режим (8-шаговая управляющая сигнальная последовательность)
Угол шага 8-шаговая управляющая сигнальная последовательность — 5.625º/шаг

4-шаговая управляющая сигнальная последовательность — 11.25º/шаг

Передаточное отношение редуктора Производителем заявлено 64:1
Вес 30 г

ШД имеет четыре обмотки, которые запитываются последовательно:

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

1.Шаговый режим —

это когда две из четырех обмоток запитываются на каждом шаге. Смотрите карту включения обмоток: Для этого способа используется библиотека myStepper.h.

Провод Фазы для шагового режима
1 2 3 4
4 оранжевый
3 желтый
2 розовый
1 синий

2.Полушаговый режим —

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

Провод Фазы для полушагового режима
1 2 3 4 5 6 7 8
4 оранжевый
3 желтый
2 розовый
1 синий

Описание драйвера ULN2003

Плата представляет собой силовой модуль, который содержит в себе семь независимых транзисторов Дарлингтона. Каждая пара представляет собой каскад из двух биполярных транзисторов. ULN2003

является неким усилителем с током нагрузки 500 мА и напряжением 50 В. На изображении отображена сама плата и описание выводов к ней.

Управляющие входы IN1,IN2,IN3,IN4

L298N, Arduino и двигатель постоянного тока

Активный — доступно не просто включение и отключение вращения мотора, но и управление его скоростью.

Максимально допустимый ток для одного канала платы составляет 2А. В виду сложности подбора транзисторов и подключения их в схему Н-моста, гораздо проще использовать уже существующие драйвера, имеющие такую функцию.

При напряжении питания свыше 12V, без опаски подвеем нужное напряжение на данный вывод, но не забываем снять джампер. Иначе, при задании движения, например, по часовой стрелке, один из них будет вращаться в противоположном направлении. Управление может быть реализовано в активном или пассивном режимах.

Подключение двигателя производится к винтовым клеммным зажимам — по паре для питания каждого моторчика. Активный режим. Потенциометр кОм.

В виду сложности подбора транзисторов и подключения их в схему Н-моста, гораздо проще использовать уже существующие драйвера, имеющие такую функцию. Управление осуществляется путём подачи соответствующих сигналов на командные входы, выполненные в виде штыревых контактов.

Позволяет управлять двумя моторами постоянного тока, либо одним шаговым двигателем. Ниже приведен более сложный и функциональный пример программы, которая будет взаимодействовать с пользователем и позволит интерактивно управлять двумя электродвигателями. Максимальное напряжение питания постоянным током 35 вольт. Заставим моторчик вращаться «вправо» 4 секунды, остановиться на 0.

Применяя схему Н-моста для управления работой двигателя постоянного тока, вы сможете реализовать полный набор операций для электрической машины без необходимости переподключения ее выводов. Если джампер одет, то реализуется логика «пассивного» управления. После этого подключите источник питания. Активный режим.

Важно чтобы в данном примере кода соблюдались отступы, об этом я уже писал раньше вот тут. Видео-демонстрация работы шагового двигателя: Заключение Надеюсь вы получили ответ на вопрос «что такое H-мост и как он работает», из экспериментов должно быть понятно как применять драйвер на микросхеме L и подключать к нему разные движки

В виду сложности подбора транзисторов и подключения их в схему Н-моста, гораздо проще использовать уже существующие драйвера, имеющие такую функцию. LOW Выходим из редактора и сохраняем файл.
Шаговый Двигатель Без Драйвера — Stepper Motor Run Without Driver

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

Уточните значение

const int stepsPerRevolution = 200;

в скетче и измените значение 200 на ваше количество шагов за один поворот двигателя вала и скорость вращения в строке

myStepper.setSpeed(60);

Теперь можете сохранить и загрузить скетч, который реализует вращение один оборот вала, а затем в противоположную сторону. Это реализуется с помощью функции

myStepper.step(stepsPerRevolution); // вращение по часовой стрелке

myStepper.step(-stepsPerRevolution); // вращение против часовой стрелки

Подключение Arduino

Подключение одного двигателя без регулировки скорости врашения

Для этого замыкаем джампер как показано на рисунке, тем самым соединяя вывод EN с +5V

Как уже говорилось ранее, при таком способе мы не можем регулировать скорость вращения, однако для управления одним каналом модуля будет задействованно два цифровых вывода вместо трех.

моторчик вращаться «вправо» 4 секунды, остановиться на 0.5 секунды, вращаться «влево» 4 секунды, остановка 5 секунд и снова цикл повторяется.

Sketch code

// вращаться "вправо" 4 секунды, остановиться на 0.5 секунды, вращаться "влево" 4 секунды, остановка 5 секунд и снова цикл повторяется
int IN3 = 5; // Input3 подключен к выводу 5 
int IN4 = 4;

void setup()
{
  pinMode (IN4, OUTPUT);
  pinMode (IN3, OUTPUT);
}
void loop()
{
  // На пару выводов "IN" поданы разноименные сигналы, мотор вращается   
  digitalWrite (IN4, HIGH);
  digitalWrite (IN3, LOW); 
  delay(4000);
  // На пару выводов "IN" поданы одноименные сигналы, мотор не вращается 
  digitalWrite (IN4, LOW); 
  delay(500);
  // На пару выводов "IN" поданы разноименные (и уже противоположные относительно первого случая) сигналы, мотор вращается  
  // относительно первого случая) сигналы, мотор вращается в другую сторону
  digitalWrite (IN3, HIGH);
  delay(4000);
  // Снова на выводах "IN" появились одноименные сигналы, мотор не вращается 
  digitalWrite (IN3, LOW); 
  delay(5000);
  }

Поключение одного двигателя с регулировкой скорости вращения

подсоединяем ENB к выводу ШИМ (D3)

Теперь становится возможно управлять скоростью мотора, изменяя скважность посылаемого ШИМ сигнала

Значения скважности задаются функцией analogWrite(pin, число), где число изменяется от 0 до 255, прямо пропорционально скважности сигнала. Для наглядности, подобраны четыре значения при которых двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается

 

Sketch code

// двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается
int IN3 = 5; // Input3 подключен к выводу 5 
int IN4 = 4;
int ENB = 3;
void setup()
{
 pinMode (ENB, OUTPUT); 
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
}
void loop()
{
  // На пару выводов "IN" поданы разноименные сигналы, мотор готов к вращаению
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  // подаем на вывод ENB управляющий ШИМ сигнал 
  analogWrite(ENB,55);
  delay(2000);
  analogWrite(ENB,105);
  delay(2000);
  analogWrite(ENB,255);
  delay(2000);
  // Останавливаем мотор повад на вывод ENB сигнал низкого уровеня. 
  // Состояние выводов "IN" роли не играет.
  analogWrite(ENB,0);
  delay(5000);
}

Sketch code

// два мотора будут вращаться в обе стороны с плавным нарастанием скорости
int IN1 = 5; // Input1 подключен к выводу 5 
int IN2 = 4;
int IN3 = 3;
int IN4 = 2;
int ENA = 9;
int ENB = 3;
int i;
void setup()
{
  pinMode (EN1, OUTPUT);
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (EN2, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode (IN3, OUTPUT);
}
void loop()
{
  digitalWrite (IN2, HIGH);
  digitalWrite (IN1, LOW); 
  digitalWrite (IN4, HIGH);
  digitalWrite (IN3, LOW); 
  for (i = 50; i <= 180; ++i)
  {
      analogWrite(EN1, i);
      analogWrite(EN2, i);
      delay(30);
  }
  analogWrite (EN1, 0);
  analogWrite (EN2, 0);
  delay(500);
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW); 
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  for (i = 50; i <= 180; ++i)
  {
      analogWrite(EN1, i);
      analogWrite(EN2, i);
      delay(30);
  }
  analogWrite (EN1, 0);
  analogWrite (EN2, 0);
  delay(8000);
}

Click here

Схема драйвера с L298 – полная версия

Драйвер L298 может работать с напряжением до 46 В и токами до 2 А на канал (всего 4А) в непрерывном режиме, хотя лучше не превышать общую мощность. С двигателями мощностью более 10 Вт лучше всего установить радиатор, как показано на фотографии.

Давайте проанализируем работу электронных схем драйверов в двух версиях. Помимо микросхемы L298 в схемах использованы несколько дополнительных компонентов. Логической части L298 требуется источник питания на 5В, и поэтому использован стабилизатор напряжения 78L05, который является маломощным вариантом классического 7805. Стабилизатор 78L05 обеспечивает максимальный выходной ток до 100 мА, что более чем достаточно для наших целей.

Для того чтобы визуально отслеживать направление вращения каждого двигателя, в схеме использованы два светодиода (красный и желтый), соединенные встречно-параллельно. На схеме мы также можем видеть 8 диодов для защиты от выбросов ЭДС самоиндукции.

Для этих диодов лучшим выбором будут диоды Шоттки, особенно, в случае если мы используем драйвер для управления двигателями средней мощности или управляем частотой вращения двигателя с помощью ШИМ (широтно-импульсная модуляция). В простых же схемах — диодов типа 1N4007 будет достаточно.

Список необходимых компонентов (упрощенная версия):

  • 4 резистора по 100 Ом;
  • 2 резистора по 1,8 кОм;
  • 1 конденсатор емкостью 100 нФ;
  • 2 электролитических конденсатора на 22 мкФ;
  • 8 диодов 1N4007;
  • 2 желтых светодиода;
  • 2 красных светодиода;
  • 1 стабилизатор 78L05;
  • 1 драйвер L298.

Управляющие входы обеих версий работают с логикой 5В (TTL), хотя мы можем без проблем управлять сигналами управления на 3,3В. Резисторы, с сопротивлением 100 Ом на входах, служат только для защиты и могут быть заменены перемычками из проволоки.

Ниже в таблицах истинности мы видим логику управления. У упрощенной модели есть два управляющих входа для каждого двигателя (MA и MB), в то время как в полной версии у нас еще есть вход разрешения (ENA).

С нашем случае на данные входы не нужно дополнительно подавать сигнал, поскольку к ним уже подключены подтягивающие резисторы по 4,7кОм. Для того чтобы отключить мост, нам просто необходимо снизить напряжение до 0 В.

Arduino and L298N Motor Driver

Now let’s make some practical applications. In the first example we will control the speed of the motor using a potentiometer and change the rotation direction using a push button. Here’s the circuit schematics.

So we need an L298N motor driver, a DC motor, a potentiometer, a push button and an Arduino board.

You can get the components needed for this Arduino Tutorial from the links below:

  • L298N Driver ……………………………….. Amazon / Banggood / Aliexpress
  • 12V High Torque DC Motor ………….. Amazon / Banggood / Aliexpress
  • DC Motor w/ Plastic Tire Wheel ……. Amazon / Banggood / Aliexpress
  • Arduino Board ……………………………… Amazon / Banggood / Aliexpress
  • Breadboard and Jump Wires ………… Amazon / Banggood / Aliexpress

Disclosure: These are affiliate links. As an Amazon Associate I earn from qualifying purchases.

Обзор драйвера мотора на L298N

Одним из самых простых и недорогх способов управления двигателями постоянного тока является модуль L298N Motor Driver с Arduino. Он может контролировать скорость и направление вращения двух двигателей постоянного тока, а так же управлять биполярным шаговым двигателем (типа NEMA 17).

Технические параметры

► Напряжение питания логики модуля: 5 В► Потребляемый ток встроенной логики: 36 мА► Напряжение питания драйвера: 5 В – 35 В► Рабочий ток драйвера: 2 А (пиковый ток 3 А)► Габариты: 43.5 мм х 43.2мм х 29.4мм

Общие сведения

Основной чип модуля это микросхема L298N, состоящая из двух H-мост (H-Bridge), один для выхода A, второй для выхода B. H-мост широко используется в электронике и служит для изменения вращения двигателем, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытие двух отдельных транзистора изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.

Для управления скоростью двигателя постоянного тока используется метод PWM (Широтно-импульсной модуляции).

Модуль L298N содержит разъем для подключения питания, ряд перемычек для настройки модуля, два выхода A и B и разъем управления, которые регулируют скорость и направление вращения, назначение каждого можно ознакомится ниже:

► Вывод Vss — питание двигателей, от 5 до 35 В;► Вывод GND — общий вывод заземления;► Вывод Vs — питание для логической схемы;► Перемычка ENA — используются для управления скоростью двигателя A;► Вывода IN1 и IN2 — используются для управления направлением вращения двигателя A;► Вывода IN3 и IN4 — используются для управления направлением вращения двигателя B;► Перемычка ENB — используются для управления скоростью двигателя B;► Выходы OUT1 и OUT2 — разъем для двигателя A;► Выходы OUT3 и OUT4 — разъем для двигателя B;

Принципиальная схема модуля L298N

Питание модуля.Питание модуля L298N осуществляется через трех контактный разъем, шагом 3,5 мм:► Vs — источник питания двигателей, 3B — 35B► GND — земля► Vss — источник питания модуля, 4,5В — 5,5ВФактически у модуля L298N, есть два контакта питания, а именно. «Vss» и «Vs». От «Vs» питаются двигатели с допустимым напряжением от 5 В до 35 В, а от «Vss» питается логическая схема модуля 4,5В до 5,5В. На плате установлен встроенный стабилизатор напряжения на 5 Вольт (78M05), его можно включить или отключить с помощью перемычки. Когда перемычка установлена, стабилизатор включен и питает логику модуля (Vss) от источника питания двигателя (Vs). При включенном стабилизаторе, вход «Vss» работает как выход и обеспечивает 5В с током 0,5 А. Когда перемычка убрана, стабилизатор отключен и необходимо отдельно подключить питание 5 Вольт на вход Vss.

Внимание! Нельзя установить перемычку, если напряжение двигателя ниже 12 Вольт

Падение напряжения L298NПадение напряжения драйвера L298N составляет около 2 В, это связано с внутренним падением напряжения в транзисторах в цепи H-мосте. Таким образом, если мы подключим 12 В к источнику питания двигателя, то двигатели получат напряжение около 10 В. Это означает, что двигатель на 12 В не будет работать с максимальной скоростью, для получения максимальной скорости, напряжение поданное на двигателя должен быть выше напряжения (2 В), чем потребность в фактическом напряжении двигателя. Учитывая падение напряжения на 2 В, если вы используете двигатели 5 В, вам необходимо обеспечить питание 7 В. Если у вас 12-ваттные двигатели, то напряжение питания вашего двигателя должно составлять 14 В.

Управления скоростьюРазъемы управления скоростью ENA и ENB используются для включения и выключения управления скоростью двигателей. Когда перемычка установлена, двигатель вращается с максимальной скоростью. Если необходимо управлять скоростью двигателей, необходимо убрать перемычку и подключить выводы к контактам с поддержкой PWM на Arduino.

Подключение L298N к Arduino (коллекторный двигатель)

Необходимые детали:► Arduino UNO R3 x 1 шт.► Драйвер мотора на L298N (5-35V, 2A) x 1 шт.► Коллекторный двигатель x 2 шт.► Комплект проводов DuPont 2.54 мм, 20 см x 1 шт.

Осталось подключить Arduino к источнику питания и загрузить скетч.

Источник

Настройка тока DRV8825.

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


Для настройки необходимо рассчитать значение напряжения Vref.

Vref = Current Limit / 2

где,

Current Limit — номинальный ток двигателя.

Для примера рассмотрим двигатель NEMA 17 17HS4401 с током 1,7 А.

Vref = 1,7 / 2 = 0,85 В.

Осталось только настроить, берем отвертку и вольтметр, плюсовый щуп вольтметра устанавливаем на потенциометр, а щуп заземления на вывод GND и выставляем нужное значение.

Подключение драйвера шагового двигателя DRV8825 к Arduino UNO.

Подключим двигатель DRV8825 к Arduino UNO по схеме.

Для этого подключаем GND LOGIC к GND на Arduino. Контакты DIR и STEP подключим к цифровым контактам 2 и 3 на Arduino. Подключение шагового двигателя к контактам B2, B1, A2 и A1.

Предупреждение: Подключение или отключение шагового двигателя при включенном приводе может привести к его повреждению.

Затем необходимо подключить контакт RST к соседнему контакту SLP к 5В на Arduino, чтобы включить драйвер. А контакты выбора микрошага необходимо оставить не подключенными, чтобы работал режим полный микрошаг. Теперь осталось подключить питание двигателя к контактам VMOT и GND MOT, главное не забудьте подключить электролитический конденсатор на 100 мкФ к контактам питания двигателя. В противном случае, при скачке напряжения модуль может выйти из строя.

L298N и шаговый двигатель

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

 шаговый двигатель

Этот двигатель имеет 200 шагов на оборот и может работать с частотой вращения 60 об/мин. Если вы используете другой шаговый двигатель, уточните шаг его шаг и максимальную частоту вращения. Эти параметры понадобятся вам при программировании Arduino.

Еще один важный момент — определить какие именно кабели соответствуют A+, A-, B+ и B-. В нашем примере соответствующие цвета кабелей: красный, зеленый, желтый и голубой. Переходим к подключению.

Кабели A+, A-, B+ и B- от шагового двигателя подключаем к пинам 1, 2, 13 и 14 соответственно. Контакты на коннекторах 7 и 12 на контроллере L298N оставьте замкнутыми. После этого подключите источник питания к пину 4 (плюс) и 5 (минус) на контроллере.

Опять таки, если источник питания меньше 12 вольт, контакт, отмеченный 3 на рисунке модуля, можно оставить замкнутым. После этого, подключите пины модуля L298N IN1, IN2, IN3 и IN4 к соответствующим цифровым пинам D8, D9, D10 и D11 на Arduino.

Теперь подключаем GND пин с Arduino к пину 5 на контроллере, а 5V к 6 пину на модуле. С управлением шагового двигателя проблем быть не должно благодаря встроенной в Arduino IDE библиотеке Stepper Library.

Схема подключения L298N и шагового двигателя к Arduino

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

File > Examples > Stepper в Arduino IDE.

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

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

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

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

Диск C Progtam Files Arduino Libraries

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

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

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

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

#include // Подключаем библиотеку для работы с шилдом 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 // Подключаем библиотеку для работы с шилдом 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); // Указываем время задержки }