Драйвер шагового двигателя для ардуино своими руками

Драйвер шагового двигателя для ардуино своими руками

Драйвер шагового двигателя для ардуино своими руками

Драйвер шагового двигателя для ардуино своими руками

Драйвер шагового двигателя для ардуино своими руками

Случайная статья:

Самое популярное:

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

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

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

Ссылки для заказа необходимого оборудования из Китая

Для заказа с Gearbest:

Для заказа с Aliexpress:

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

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

  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 из доступного диапазона 0255

analogWrite(enA, 200);

// запуск двигателя B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// устанавливаем скорость 200 из доступного диапазона 0255

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 и шаговый двигатель

Этот двигатель имеет 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); // вращение против часовой стрелки

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

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

ARDUINO-DIY.COM - это информационный ресурс с лучшими инструкциями и туториалами по использованию контроллеров Arduino.

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

ARDUINO-DIY.COM © 2015-2017


Источник: http://arduino-diy.com/arduino-drayver-shagovogo-dvigatelya-i-dvigatelya-postoyannogo-toka-L298N


“-5-10 Драйвер шагового двигателя для ардуино своими руками