Драйвер двигателя ардуино – Драйверы двигателя L298N, L293D и Arduino Motor Shield

Драйвер двигателя ардуино – Драйверы двигателя L298N, L293D и Arduino Motor Shield

Драйверы двигателя L298N, L293D и Arduino Motor Shield

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

Драйвер двигателя в проектах ардуино

Для чего нужен драйвер двигателя?

Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода – и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока,  превышающие этот предел.

Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий. Драйверы двигателей для Arduino: L298N, L293D и Arduino Motor Shield

Какие драйверы двигателей лучше всего подходят для Arduino. Как подключить и настроить L298N и L293D. Чем отличается Arduino Motor Shield. Какие параметры важны при выборе драйвера двигателя.

Содержание

Принцип работы драйверов двигателей для Arduino

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

Основной принцип работы драйвера двигателя основан на схеме, называемой H-мостом. H-мост состоит из четырех ключей (обычно транзисторов), расположенных в форме буквы «H». В центре этой «H» подключается двигатель.

Переключая различные комбинации этих ключей, можно:

  • Вращать двигатель вперед
  • Вращать двигатель назад
  • Быстро останавливать двигатель
  • Переводить двигатель в режим свободного вращения

Кроме того, используя широтно-импульсную модуляцию (ШИМ), можно регулировать скорость вращения двигателя.


Популярные драйверы двигателей для Arduino

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

L298N

L298N — это двухканальный драйвер двигателя, способный управлять двумя DC моторами или одним шаговым двигателем. Основные характеристики:

  • Рабочее напряжение: 5-35В
  • Максимальный ток: 2А на канал
  • Возможность параллельного подключения каналов для увеличения тока до 4А

L293D

L293D — более простая и доступная альтернатива L298N. Характеристики:

  • Рабочее напряжение: до 36В
  • Максимальный ток: 600мА на канал
  • Пиковый ток: до 1.2А на канал

Arduino Motor Shield

Arduino Motor Shield — это готовая плата расширения для Arduino, построенная на базе L298N. Она упрощает подключение и использование драйвера, но имеет более высокую стоимость.

Как выбрать подходящий драйвер двигателя?

При выборе драйвера двигателя для Arduino следует учитывать несколько ключевых факторов:

  1. Тип двигателя (DC или шаговый)
  2. Требуемое напряжение питания двигателя
  3. Максимальный ток потребления двигателя
  4. Необходимость в регулировке скорости
  5. Количество управляемых двигателей

Для большинства небольших проектов хорошо подойдет L298N благодаря его универсальности и достаточной мощности. Для совсем маломощных моторов можно использовать L293D. Если же вам нужно простое подключение по принципу «поставил и работает», обратите внимание на Arduino Motor Shield.


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

Подключение драйвера L298N к Arduino выполняется следующим образом:

  1. Подключите питание двигателей к клеммам Vs и GND на L298N
  2. Соедините GND Arduino и GND L298N
  3. Подключите выводы IN1, IN2, IN3, IN4 к цифровым пинам Arduino (например, 8, 9, 10, 11)
  4. Подключите выводы ENA и ENB к ШИМ-пинам Arduino (например, 5 и 6)
  5. Подключите двигатели к выводам OUT1, OUT2 и OUT3, OUT4

После подключения вы можете управлять двигателями, подавая сигналы на входы IN1-IN4 и регулируя скорость через ENA и ENB.

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

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


// Определение пинов
const int ENA = 5;
const int ENB = 6;
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;

void setup() {
  // Настройка пинов на выход
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  // Вращение первого двигателя вперед
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 200); // Скорость от 0 до 255
  
  // Вращение второго двигателя назад
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENB, 150); // Скорость от 0 до 255
  
  delay(2000); // Пауза 2 секунды
  
  // Остановка двигателей
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  
  delay(1000); // Пауза 1 секунда
}

Этот код заставит первый двигатель вращаться вперед, а второй — назад в течение 2 секунд, затем остановит оба двигателя на 1 секунду, после чего цикл повторится.


Преимущества использования драйверов двигателей

Использование специализированных драйверов двигателей в проектах Arduino имеет ряд существенных преимуществ:

  • Возможность управления более мощными двигателями
  • Защита Arduino от обратных токов и перегрузок
  • Точный контроль скорости и направления вращения
  • Возможность реверса двигателя
  • Упрощение схемы подключения

Все эти преимущества делают драйверы двигателей незаменимыми компонентами в робототехнических проектах на базе Arduino.

Часто задаваемые вопросы о драйверах двигателей

Можно ли подключить двигатель напрямую к Arduino без драйвера?

Теоретически можно, но не рекомендуется. Arduino может обеспечить ток не более 40 мА на пин, чего недостаточно для большинства двигателей. Кроме того, двигатели могут создавать обратные токи, способные повредить микроконтроллер.

Какой максимальный ток может обеспечить L298N?

L298N может обеспечить до 2А на канал в стандартном режиме. При параллельном подключении каналов можно достичь тока до 4А.


Можно ли использовать L298N для управления сервоприводами?

Нет, L298N не подходит для управления сервоприводами. Для сервоприводов используются специальные контроллеры или непосредственно выходы Arduino с ШИМ.

Нужен ли радиатор для L298N?

При работе с токами близкими к максимальным (2А на канал) рекомендуется использовать радиатор для отвода тепла от микросхемы L298N.

Заключение

Драйверы двигателей являются важным компонентом в проектах Arduino, связанных с робототехникой и автоматизацией. Они позволяют легко управлять мощными двигателями, обеспечивая при этом защиту микроконтроллера. Выбор конкретного драйвера зависит от требований проекта, но в большинстве случаев L298N или Arduino Motor Shield будут отличным выбором для начинающих разработчиков.


Драйверы двигателя L298N, L293D и Arduino Motor Shield

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

Драйвер двигателя в проектах ардуино

Для чего нужен драйвер двигателя?

Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода – и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока,  превышающие этот предел.

Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий:

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

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

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

В этой статье мы рассмотрим последний, третий вариант, как наиболее гибкий и удобный для создания первых роботов на ардуино.

Микросхема или плата расширения Motor Shield

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

Принцип действия H-моста

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

Схема моста изображена на рисунке. Q1…Q4 0 полевые, биполярные или  IGBT транзисторы. Последние используются в высоковольтных сетях. Биполярные транзисторы практически не используются, они могут присутствовать в маломощных схемах. Для больших токов берут полевые транзисторы с изолированным затвором. Ключи не должны быть замкнуты вместе одновременно, чтобы не произошло короткого замыкания источника. Диоды D1…D4 ограничительные, обычно используются диоды Шоттки.

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

Q1Q2Q3Q4Состояние
1001Поворот мотора вправо
0110Поворот мотора влево
0000Свободное вращение
0101Торможение
1010Торможение
1100Короткое замыкание
0011Короткое замыкание

 

Драйвер двигателя L298N

Модуль используется для управления шаговыми двигателями с напряжением от 5 до 35 В.  При помощи одной платы L298N можно управлять сразу двумя двигателями. Наибольшая нагрузка, которую обеспечивает микросхема, достигает 2 А на каждый двигатель. Если подключить двигатели параллельно, это значение можно увеличить до 4 А.

Плата выглядит следующим образом:

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

  • Vcc – используется для подключения внешнего питания;
  • 5В;
  • Земля GND;
  • IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
  • OUT1, OUT2 – используется для выхода с первого двигателя;
  • OUT3, OUT4 – используется для выхода со второго двигателя;
  • S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
  • ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).

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

Драйвер двигателя L293D

L293D – является самой простой микросхемой для работы с двигателями. L293D обладает двумя H-моста, которые позволяют управлять двумя двигателями. Рабочее напряжение микросхемы – 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2 А.

В схеме имеется 16 выходов. Распиновка:

  • +V – питание на 5 В;
  • +Vmotor – напряжение питания для мотором до 36 В;
  • 0V – земля;
  • En1, En2 –включают и выключают H-мосты;
  • In1, In2 – управляют первым H-мостом;
  • Out1, Out2 – подключение первого H-моста;
  • In3, In4 – управляют вторым H-мостом;
  • Out3, Out4 – подключение второго H-моста.

Для подключения к микроконтроллеру Arduino Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V – 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.

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

HG7881 – двухканальный драйвер, к которому можно подключить 2 двигателя или четырехпроводной двухфазный шаговый двигатель. Устройство часто используется из-за своей невысокой стоимости. Драйвер используется только для изменения направления вращения, менять скорость он не может.

Плата содержит 2 схемы L9110S, работающие как H-мост.

Характеристики драйвера HG7881:
  • 4-контактное подключение;
  • Питание для двигателей от 2,5 В до 12 В;
  • Потребляемый ток менее 800 мА;
  • Малые габариты, небольшой вес.
Распиновка:
  • GND – земля;
  • Vcc – напряжение питания 2,5В – 12В;
  • A-IA – вход A(IA) для двигателя A;
  • A-IB – вход B (IB) для двигателя A;
  • B-IA – вход A(IA) для двигателя B;
  • B-IB – вход B (IB) для двигателя B.

В зависимости от поданного сигнала на выходах IA и IB будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.

IAIBСостояние мотора
00Остановка
10Двигается вперед
01Двигается назад
11Отключение

 

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

Сравнение модулей

Модуль L293D подает максимальный ток в 1,2А, в то время как на L298N можно добиться максимального тока в 4 А. Также L293D обладает меньшим КПД и быстро греется во время работы. При этом L293D является самой распространенной платой и стоит недорого.  Плата HG7881 отличается от L293D и L298N тем, что с ее помощью можно управлять только направлением вращения, скорость менять она не может. HG7881 – самый дешевый и самый малогабаритный модуль.

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

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

Нужно присоединить источник питания. + подключается к пину 4 на плате L298N, минус (GND) – к 5 пину. Затем нужно соединить выходы с L298N и пины на Ардуино, причем некоторые из них должны поддерживать ШИМ-модуляцию. На плате Ардуино они обозначены ~. Выходы с L298N IN1, IN2, IN3 и IN4 подключить к D7, D6, D5 и D4 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.

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

Для управления шаговым двигателем в Arduino IDE существует стандартная библиотека Stepper library. Чтобы проверить работоспособность собранной схемы, можно загрузить тестовый пример stepper_oneRevolution. При правильной сборке вал двигателя начнет вращаться.

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

arduinomaster.ru

Двухканальный драйвер двигателя HG7881 (L9110S)

/*

  HG7881_Motor_Driver_Example — Arduino sketch

  

  This example shows how to drive a motor with using HG7881 (L9110) Dual

  Channel Motor Driver Module.  For simplicity, this example shows how to

  drive a single motor.  Both channels work the same way.

  

  This example is meant to illustrate how to operate the motor driver

  and is not intended to be elegant, efficient or useful.

  

  Connections:

  

    Arduino digital output D10 to motor driver input B-IA.

    Arduino digital output D11 to motor driver input B-IB.

    Motor driver VCC to operating voltage 5V.

    Motor driver GND to common ground.

    Motor driver MOTOR B screw terminals to a small motor.

*/

// wired connections

#define HG7881_B_IA 10 // D10 —> Motor B Input A —> MOTOR B +

#define HG7881_B_IB 11 // D11 —> Motor B Input B —> MOTOR B —

 

// functional connections

#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed

#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction

// the actual values for «fast» and «slow» depend on the motor

#define PWM_SLOW 100  // arbitrary slow speed PWM duty cycle

#define PWM_FAST 200 // arbitrary fast speed PWM duty cycle

#define DIR_DELAY 1000 // brief delay for abrupt motor changes

void setup()

{

  Serial.begin( 9600 );

  pinMode( MOTOR_B_DIR, OUTPUT );

  pinMode( MOTOR_B_PWM, OUTPUT );

  digitalWrite( MOTOR_B_DIR, LOW );

  digitalWrite( MOTOR_B_PWM, LOW );

}

void loop()

{

  boolean isValidInput;

  // draw a menu on the serial port

  Serial.println( «——————————» );

  Serial.println( «MENU:» );

  Serial.println( «1) Fast forward» );

  Serial.println( «2) Forward» );

  Serial.println( «3) Soft stop (coast)» );

  Serial.println( «4) Reverse» );

  Serial.println( «5) Fast reverse» );

  Serial.println( «6) Hard stop (brake)» );

  Serial.println( «——————————» );

  do

  {

    byte c;

    // get the next character from the serial port

    Serial.print( «?» );

    while( !Serial.available() )

      ; // LOOP…

    c = Serial.read();

    // execute the menu option based on the character recieved

    switch( c )

    {

      case ‘1’: // 1) Fast forward

        Serial.println( «Fast forward…» );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

        analogWrite( MOTOR_B_PWM, 255-PWM_FAST ); // PWM speed = fast

        isValidInput = true;

        break;      

        

      case ‘2’: // 2) Forward      

        Serial.println( «Forward…» );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

        analogWrite( MOTOR_B_PWM, 255-PWM_SLOW ); // PWM speed = slow

        isValidInput = true;

        break;      

        

      case ‘3’: // 3) Soft stop (preferred)

        Serial.println( «Soft stop (coast)…» );

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        isValidInput = true;

        break;      

      case ‘4’: // 4) Reverse

        Serial.println( «Fast forward…» );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

        analogWrite( MOTOR_B_PWM, PWM_SLOW ); // PWM speed = slow

        isValidInput = true;

        break;      

        

      case ‘5’: // 5) Fast reverse

        Serial.println( «Fast forward…» );

        // always stop motors briefly before abrupt changes

        digitalWrite( MOTOR_B_DIR, LOW );

        digitalWrite( MOTOR_B_PWM, LOW );

        delay( DIR_DELAY );

        // set the motor speed and direction

        digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse      

        analogWrite( MOTOR_B_PWM, PWM_FAST ); // PWM speed = fast

        isValidInput = true;

        break;

        

      case ‘6’: // 6) Hard stop (use with caution)

        Serial.println( «Hard stop (brake)…» );

        digitalWrite( MOTOR_B_DIR, HIGH );

        digitalWrite( MOTOR_B_PWM, HIGH );

        isValidInput = true;

        break;      

        

      default:

        // wrong character! display the menu again!

        isValidInput = false;

        break;

    }

  } while( isValidInput == true );

  // repeat the main loop and redraw the menu…

}

arduino-project.net

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

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

Чередование разноименных сигналов (высокий логический уровень или низкий) на парах выводов IN1, IN2 и IN3, IN4 задают направление вращения моторов.

Выводы ENABLE A, B (ENA привязан к IN1, IN2.    ENB к IN3, IN4) отвечают за раздельное управление каналами. Могут использоваться в двух режимах:

  • Условно «активном» режиме, когда ими будет управлять контроллер — высокий логический уровень разрешает вращение моторов, низкий запрещает вне зависимости от состояния выводов «IN». Для регулировки скорости моторов, на «EN» выводы подается ШИМ (PWM) сигнал. (рис.а1)
  • Условно «пассивном» режиме, просто притянув выводы «EN» к высокому уровню (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки соединенные с +5V. Замыкаем выводы с помощью джамперов (рис.а2). В данном режиме мы не сможем регулировать скорость двигателей, они будут всегда вращаться в полную скорость (за то для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему, а вот для остановки в данном варианте, состояние выводов будет уже играть роль.Для остановки нужно будет подавать одноименные сигналы на выоды «IN».

 

Подключение мотора и светодиода к модулю L298N

Вместо одного мотора будем подключать светодиод на 12В (см. видео ниже). Можете также использовать светодиодную ленту, только учтите что модуль при токе более более 2 ампер будет сильно греться.

 

Скетч

int IN1 = 7;
int IN2 = 6;
int IN3 = 5;
int IN4 = 4;
int ENA = 9;  //ШИМ выход 1
int ENB = 3;  //ШИМ выход 2
int i;
int spd = 10;  //задержка при изменении скорости, чем меньше тем быстрее 

void setup() {
  pinMode (ENA, OUTPUT);  //ШИМ выход 1
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (ENB, OUTPUT);  //ШИМ выход 2
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  digitalWrite (IN3, LOW);  //полярность для светодиода "-"
  digitalWrite (IN4, HIGH);  //полярность для светодиода "+"
}

void loop() {
  digitalWrite (IN2, HIGH);  //полярность для мотора "-"
  digitalWrite (IN1, LOW);  //полярность для мотора "+"
  for (i = 0; i < 250; i++)  {  //цикл разгона
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);  //ждем 2 сек
  for (i = 250; i > 0; i--)  {  //цикл торможения
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(500);
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW);
  for (i = 0; i < 250; i++) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);
  for (i = 250; i > 0; i--) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(3000);
}

 

Видео

www.2150692.ru

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

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

Кроме шагового двигателя (ШД) и Arduino нам потребуется ещё плата драйвера L298, которую можно приобрести у нас в магазине.

Шаговый двигатель позволяет точно спозиционировать вал, поворачивая его на небольшой угол. Один такой поворот зовётся шаг. Соответственно, одной из важных характеристик привода является количество шагов на оборот, то есть «разрешение» поворота.

ШД способен удерживать свою позицию даже в случае внешнего крутящего момента! Шаговые двигатели делятся на униполярные и биполярные. Мы будем использовать униполярный ШД, так как биполярный требует специальный драйвер для управления, тогда как униполярным можно легко управлять даже при помощи сборки транзисторов. Обратите внимание – биполярные ШД имеют 4 провода на выходе, униполярные – не 4 (5 или более).

Количество выводов зависит от количества обмоток в двигателе, чаще всего их 4 –поэтому 5 проводов (4 обмотки и общий). Управление униполярным двигателем, в теории, сводится к перебору обмоток (подачи поочерёдно логической единицы). Задержка между переключением обмотки определяет скорость и ускорение двигателя.

В отличие от приводов постоянного тока, на ШД нельзя вот так вот просто подать напряжение так, чтобы он крутился. Необходимо попеременно подавать напряжение на разные обмотки.

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

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Для управления шаговым двигателем сгодится любой контроллер Arduino, мы же используем Arduino UNO.  От шаговика отходят две пары проводов и общий(GND). A, A+ подключаются к MA, MA+, также и B, B+ к MB, MB+.

Питание 12В подаётся на первый контакт разъёма питания, 5В – на второй, GND –  на третий (см. фото ниже). Выводы IN1-IN4 подключаются по порядку к цифровым пинам с 8 по 11 – по ним передаются управляющие импульсы.

После подключения надо загрузить в контроллер программу-пример stepper_oneRevolution из библиотеки Stepper (включена в комплект поставки). Можете добавить ее либо с этой страницы, либо найти в Файл Примеры Stepper stepper_oneRevolution

voltiq.ru

Драйвер коллекторных двигателей L9110S (HG7881)

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

Характеристики драйвера L9110S (HG7881):

  • Диапазон напряжения питания: 2.5V  …  12V.
  • Максимальный ток: 800mA, на каждый канал.

  • Управление логическим уровнем.

  • Встроенные защитные диоды.

  • Рабочая температура: 0℃  …  80℃.

Особенности модуля:

Модуль собран на двух полумостовых драйверах (H-bridge) HG7881, к сожалению подробного даташита на микросхему нет. Хотя и пишут что он предназначен для управления моторами, это не совсем так, у драйвера отсутствует возможность изменять скорость вращения мотора, драйвер способен изменять только направление вращения. По этой причине, данный модуль больше подходит для управления небольшими шаговыми двигателями, нежели коллекторными.

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

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

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

В случаи подключения коллекторного мотора.

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

 

код из видео

#define A1_A 8 // выходы на драйвер
#define A1_B 9

void setup(){
  pinMode (A1_A, OUTPUT);
  pinMode (A1_B, OUTPUT);
}

void loop(){
     // включаем мотор на 1 секунды вперед
  digitalWrite (A1_A, HIGH); 
  digitalWrite (A1_B, LOW); 
  delay(1000);  
     // выключаем мотор  
  digitalWrite (A1_A, LOW); 
  digitalWrite (A1_B, LOW); 
  delay(1000);
     // включаем мотор на 1 секунды назад
  digitalWrite (A1_A, LOW); 
  digitalWrite (A1_B, HIGH); 
  delay(1000);
       // выключаем мотор  
  digitalWrite (A1_A, LOW); 
  digitalWrite (A1_B, LOW); 
  delay(1000);
           // плавно увеличиваем скорость
  digitalWrite (A1_A, LOW); 
  for (int i = 0; i < 255; i++){
    analogWrite (A1_B, i); 
    delay(25);
  }
  delay(2000);
       // плавно уменьшаем скорость
  digitalWrite (A1_A, LOW); 
  for (int i = 255; i > 0; i--){
    analogWrite (A1_B, i); 
    delay(25);
  }
  delay(1000);

 
}


В случаи подключения биполярного шагового двигателя.

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

Запись опубликована автором admin в рубрике Обзоры с метками H-bridge, L9110S, коллекторный двигатель, шаговый двигатель.

arduinolab.pw

Драйвер моторов двухканальный L298N. Dual DC Motor Driver RKP-MDL298-01A-V2 — Драйверы


Есть в наличии
Есть в наличии

 

Модуль управления моторами RKP-01A на микросхеме L298N. С его помощью можно контролировать вращение двух независимых коллекторных моторов постоянного тока (DC-моторов) или одного двухобмоточного четырехпроводного шагового двигателя.

Здесь можно посмотреть подробную статью о подключении драйвера моторов на микросхеме L298N к Arduino =>>

Плата контроллера двигателей RKP-01A благодаря микросхеме драйвера моторов L298N позволяет легко управлять двумя электромоторами использующими питание от 5В до 35В. Установленный на основную микросхему L298N радиатор охлаждения позволяет выдерживать ток нагрузки до 2A на канал. Для защиты драйвера моторов от перегрузки используются специальные Диоды Shotki. Модуль контроллера двигателей позволяет использовать его в различных робототехнических проектах, размещая его по своему усмотрению.
Посмотреть DataSheet микросхемы драйвера моторов L298N (формат PDF размер 611 КБ)

Ключевыми особенностями драйвера моторов RKP-01A являются наличие радиатора охлаждения L298N, малые габариты и вес (35 грамм), а также светодиодная индикация наличия питания и указания направления вращения двигателей.

Характеристики драйвера моторов RKP-01A на микросхеме L298N:
— Микросхема драйвера: L298N (с радиатором охлаждения)
— Возможность питания внешней логики (Vss): +5V ~ +7V (внутренний стабилизатор +5В)
— Входное напряжение логической части (Vd): от 6V до 12V
— Входное напряжение управляемой части (Vs): от +5V до +35V
— Рабочий ток внешней логической части (Iss): 0 ~ 36mA
— Ток нагрузки каждой управляемой части (Io): 2A
— Пиковый ток нагрузки каждой управляемой части (Io): 3А
— Максимальная потребляемая мощность: 20Вт (при температуре = 75°C)
— Высокий уровень входного управляющего сигнала (High): 2.3В = Vin = Vss
— Низкий уровень входного управляющего сигнала (Low): -0.3В = Vin = 1.5В
— Рабочая температура окружающей среды: от -25 до +130°C
— Размеры модуля со стойками крепления и радиатором L298: 53 x 47 x 27 мм
— Вес драйвера моторов RKP-01A: 35 грамм

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

Плата расширения RKP-01A может используется вместе с Arduino и устанавливается отдельно от процессорного модуля Arduino. Применяется, например, для построения движущихся роботов на колесном или гусеничном приводе.

Для подключения моторов постоянного тока (DC-моторов) служат порты:
OUT1 и OUT2 — мотор A
OUT3 и OUT4 – мотор B
(управление электромоторами полностью независимо друг от друга)

Для работы подключите источник питания к контакту тройного клемника «VСС».
При подаче питания от +6V до +12V и одетом джампере JP1, питание подается и на стабилизатор, который выдает +5V для питания логики драйвера. Подавать отдельно питание +5V для логики не нужно.
При подаче питания выше +12V, джампер JP1 должен быть снят. Питание на логику подается отдельно через клемму «+5V».

Управление DC-моторами осуществляется через специальные входы:
ENA (ENB) – надетая перемычка активирует включение канала управления двигателем.
ENA (ENB) — соединить с ШИМ-выходом MCU, для контроля скорости вращения
I1 (I3) и I2 (I4) – логические входы (имеют отключаемые подтягивающие резисторы) задания направления вращения (см. таблицу ниже)

ENA       I1  I2    Состояние мотора А
PWM>0 0 0 Стоп
PWM>0 0 1 Вращение по часовой
PWM>0 1 0 Вращение против часовой
PWM>0 1 1 Стоп
ENB       I3  I4    Состояние мотора B
PWM>0 0 0 Стоп
PWM>0 0 1 Вращение по часовой
PWM>0 1 0 Вращение против часовой
PWM>0 1 1 Стоп
Логика управления шаговым двигателем выглядит следующим образом: A, B, C, D, это четыре обмотки шагового двигателя.
Диаграмма ниже (четыре фазы шагового двигателя).

Управление шаговым двигателем осуществляется аналогично управлению двумя DC-моторами.

Схема драйвера моторов L298N для робота с управлением от микроконтроллера.

Нажать и посмотреть схему =>>

   

Товар был добавлен в наш каталог Среда, 04 Октября 2017

robot-kit.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *