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

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

Модуль L298N H-bridge можно использовать для двигателей, напряжение питания которых находится в диапазоне от 5 до 35 вольт. Кроме того, на многих подобных платах есть встроенный 5В регулятор, который дает возможность запитывать ваши устройства.

Подключение модуля L298N

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

L298N - коннекторы для подключения

Купить такой драйвер можно на Алиєкспресс (доставка 15-35 дней)  L298N (Кликабельно) - Цена: US $1.48 / шт.

Ниже приведены разъяснения к рисунку.

  1. Для двигателя постоянного тока 1 “+” или для шагового двигателя A+
  2. Для двигателя постоянного тока 1 “-” или для шагового двигателя A-
  3. Коннектор на 12 вольт. Снимите его, если используете напряжение питания больше 12 вольт.
  4. Питания вашего двигателя обеспечивается с этого выхода. Максимальное напряжение питания постоянным током 35 вольт. Если напряжение больше 12 вольт, разомкните контакты на 3 коннекторе.
  5. GND - земля.
  6. Питание 5 вольт, если коннектор на 12 вольт замкнут. Идеально для питания Arduino и т.п.
  7. Коннектор для двигателя постоянного тока 1. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
  8. IN1.
  9. IN2.
  10. IN3.
  11. IN4.
  12. Коннектор для двигателя постоянного тока 2. В случае использования шагового двигателя, подключать сюда ничего не надо. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
  13. Двигатель постоянного тока 2 “+” или шаговый двигатель B+.
  14. Двигатель постоянного тока 2 “-” или шаговый двигатель B-.

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

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

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

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

После этого подключите источник питания. Плюс - к четвертому пину на L298N, минус (GND) - к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.

Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.

ШИМ-пины обозначены знаком “~” рядом с порядковым номером. На рисунке ниже приведены ШИМ-пины на плате Arduino Uno.

Пины с ШИМ на Arduino Uno

Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).

Направление вращения ротора двигателя управляется сигналами HIGH или LOW на каждый привод (или канал). Например, для первого мотора, HIGH на IN1 и LOW на IN2 обеспечит вращение в одном направлении, а LOW и HIGH заставит вращаться в противоположную сторону.

При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.

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

// подключите пины контроллера к цифровым пинам Arduino
// первый двигатель
int enA = 10;
int in1 = 9;
int in2 = 8;
// второй двигатель
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// инициализируем все пины для управления двигателями как outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoOne()
{
// эта функция обеспечит вращение двигателей в двух направлениях на установленной скорости
// запуск двигателя A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// устанавливаем скорость 200 из доступного диапазона 0~255
analogWrite(enA, 200);
// запуск двигателя B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// устанавливаем скорость 200 из доступного диапазона 0~255
analogWrite(enB, 200);
delay(2000);
// меняем направление вращения двигателей
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// выключаем двигатели
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo()
{
// эта функция обеспечивает работу двигателей во всем диапазоне возможных скоростей
// обратите внимание, что максимальная скорость определяется самим двигателем и напряжением питания
// ШИМ-значения генерируются функцией analogWrite()
// и зависят от вашей платы управления
// запускают двигатели
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// ускорение от нуля до максимального значения
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// торможение от максимального значения к минимальному
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// теперь отключаем моторы
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}


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

Итак, что у нас происходит в программе? В теле функции demoOne() мы включаем двигатели и начинаем с ними работать при ШИМ- значении 200.

Через некоторое время двигатели начинают вращаться в противоположном направлении (благодаря смене HIGH и LOW в теле функции digitalWrite()). Для демонстрации возможностей изменения скорости вращения, используем доступный ШИМ-диапазон в теле функции demoTwo(). Сигнал на пине меняется от нуля до 255 и вновь до нуля.

В результате все это может крутиться примерно так:

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

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

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

Купить такой двигатель дешево можно на Алиэкспресс (доставка 15-30 дней )  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.

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

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

const int stepsPerRevolution = 200;

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

myStepper.setSpeed(60);

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

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

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

Долгожданный результат:



  • Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino

Похожие статьи

Arduino UNO как осциллограф

Arduino UNO как осциллограф

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

Скачиваем программу Processing , после чего её устанавливать не нужно - она запускается с EXE-файла.

Arduino основы программирования

Arduino основы программирования

Здесь мы научимся писать элементарную программу способную сделать что-либо интересное для новичка. Здесь вы узнаете, как написать простейший скетч для Arduino используя стандартый IDE. Мы пока пропустим использование входов-выходов, но обратим внимание на связь через USB. Синтаксис языка Arduino точно повторяет язык C, поэтому на нем мы останавливаться не будем. Мы сконцентрируемся на конкретных аспектах Arduino языка, в котором вы можете использовать все принципы, которые присущи языку C: переменные, операторы, состояния, типы, константы и т.д.

Обзор плат ардуино часть 2

Обзор плат ардуино часть 2

LilyPad Arduino

LilyPad Arduino - довольно интересное устройство. Оно выпадает из привычных стереотипов об обычном Arduino, потому что имеет не прямоугольную, а круглую форму. Во-вторых, оно не поддерживает механические соединения с шилдами. Оно предназначено для, небольших автономных устройство. Круглая форма продиктовала то, что разъемы равномерно распределены по окружности, и его небольшой размер (2 дюйма в диаметре) делает его идеальным для переносных устройств. Это устройство легко спрятать, и несколько производителей разработали устройства, специально для LilyPad: экраны, датчики света, даже коробки для батарей питания, которые могут быть зашиты в ткань. Для того, чтобы сделать LilyPad как можно меньше и как можно легче, на сколько возможно, были принесены некоторые жертвы. У LilyPad нет регулятора напряжения на борту, так что ему для питания будет необходимо обеспечить по крайней мере 2,7 вольт, и не более 5,5 вольт; в противном случае, будет пшик.

Работа с ардуино и  IR приёмник - один из способов  дистанционного управления Arduino

Работа с ардуино и IR приёмник - один из способов дистанционного управления Arduino

Итак, начнём изучать способы дистанционного управления Arduino, а конктретно ИК сигналы. Инфракрасный(ИК) спектр не виден человеческому глазу, но отлично воспринимается цифровыми камерами и ИК приёмниками(с ними и будем работать). Данный способ управления удобен для управления техникой в прямой видимости (телевизор, кондиционер, аудио и видео аппаратура). Но об этом мы поговорим во втором уроке. Для начала научимся считывать IR сигнал с любого пульта. 

Полный обзор лазерного гравировального мини станка NEJE c лазером в 1 ВТ  (дешево и сердито )

Полный обзор лазерного гравировального мини станка NEJE c лазером в 1 ВТ (дешево и сердито )

В этом видео вы узрите полный обзор гравировального станка + видео урок по работе c программой Laser Carver . А так же примеры работ на бумаге и дереве. 

Теги: Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino