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

Материал из MIK32 микроконтроллер
ULN2003 внешний вид.


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




Характеристики драйвера ULN2003.

  • размеры платы – 32х35 мм;
  • межосевые размеры платы – 30х27 мм;
  • напряжение питания – 5-12В;
  • управляющее напряжение – 5В;
  • вес – 8 г;
  • номинальный ток коллектора каждого ключа – 0,5А;
  • наличие светодиодной индикации фаз;
  • вход адаптирован к различным видам логики.

Контакты драйвера

схема выводов ULN2003
  • 1B,2B,3B,4B,5B,6B,7B – Входы от 1 до 7, подключенные к цепи базы составного транзистора;
  • 1C,2C,3C,4C,5C,6C,7C – Выходы от 1 до 7, подключенные к коллектору составного транзистора
  • COM – Общий катодный узел для диодов в цепи обратной связи(обязателен для индуктивных нагрузок);
  • E – Общий для всех ключей эмиттер (обычно подключается к земле).





Об устройстве драйвера

Структурная схема ULN2003

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

Каждый канал (пара Дарлингтона) в ULN2003 рассчитан на нагрузку 500 мА и выдерживает максимальный ток до 600 мА. Входы и выходы расположены в корпусе микросхемы друг напротив друга, что значительно облегчает разводку печатной платы.

Принципиальная схема ULN2003

Подключение драйвера ULN2003 к Arduino uno

Подключение драйвера ULN2003 к Arduino uno

В данном примере использeтся драйвер ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V.



Программа для драйвера мотора ULN2003

Код для управления шаговым мотором через драйвер ULN2003

// подключение библиотеки
#include <AccelStepper.h>
// создаем экземпляр AccelStepper
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
AccelStepper s28BYJ-48(8, IN1, IN3, IN2, IN4);

void setup(){
  s28BYJ-48.setMaxSpeed(900.0);
  s28BYJ-48.setAcceleration(100.0);
  s28BYJ-48.setSpeed(200);
  s28BYJ-48.moveTo(2000);
}

void loop(){
  // Изменяем направление, если пройдено заданное число шагов
  if(s28BYJ-48.distanceToGo()==0)
    s28BYJ-48.moveTo(-stepper1.currentPosition());
  s28BYJ-48.run();
}