Правильный старт и стоп: шаговый двигатель 28BYJ-48 + ULN2003

Как быстро проверить товар с aliexpress: редукторный шаговый двигатель 28BYJ-48 с драйвером ULN2003 с помощью arduino nano и arduino ide

Коротко о главном

Товар пришел (28BYJ-48 + ULN2003), надо же проверить! Стандартная библиотека Stepper.h и примеры, которые присутствуют в Arduino IDE, повели себя странно: двигатель не развивает мощности, крутится в одну сторону не взирая на команды смены направления вращения. Хотел уже продавцу писать, но попробовав другую библиотеку Accel Stepper, выяснил, что оборудование ни при чем!

Библиотеку брал здесь — выбрал последнюю версию (1.59.0).

Далее, если интересно

Уже немного познакомившись с шаговыми двигателями Nema (и контроллером TB6600), ради интереса заказал малыша 28BYJ-48 (в комплекте с контроллером ULN2003).

Для этой «сладкой парочки» (очень популярное сочетание) на сайте продавца было 2 варианта поставки: 12V и 5V. Поскольку к контроллеру это явно не относится (пришел с чипом ULN2003APG и согласно datasheet его рабочее входное напряжение до 30 В), разница, видимо, в двигателе. Я заказал 12 В вариант и, как выяснилось в дальнейшем, при питающем напряжении + 5 В он почти не шевелится.

До кучи еще взял штуку помощнее — H-мост L298N. На его плате тоже оказался разъем для 4-обмоточного двигателя.

Пришло…

Двигатель, ULN2003, L298N
Двигатель, ULN2003, L298N

Что потребовалось для проверки (28BYJ-48 + ULN2003)

1. Контроллер Arduino nano (подключал через самодельный NanoShield1)

2. Внешний источник питания + 12 В

О том, чтобы взять питание двигателя с контроллера arduino, даже в мыслях не было, хотя на сайте ArduinoMaster для случая с ULN2003 приводится именно такой вариант подключения. Вольт им судья 😉

3. Макетная плата (можно, конечно, и обойтись — использовалась исключительно для коммутации внешнего питания и объединения «земли» внешнего источника и контроллера Arduino nano).

4. Провода с PLS-разъемами — 6 шт (4 шт папа-папа и 2 папа-мама или в зависимости от используемых «шилдов»).

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

Сборка ULN2003 и Arduino Nano
Сборка ULN2003 и Arduino Nano

Таблица соединений контроллеров

№ п/п Выводы Arduino Nano Входы ULN2003
1 D2 IN1
2 D3 IN2
3 D4 IN3
4 D5 IN4
    IN5-IN7 не припаяны и не используются

Внешнее питание двигателя

Также нужно соединить вход питания ULN2003 (в моем случае вход промаркирован «-  +» и ниже «5 — 12V»)  с внешним источником питания:

«-» контроллера ULN2003 — к «земле» источника

«+» контроллера ULN2003 — к «+12В» источника.

Сюрпризы нам не нужны!? — Не забываем объединить (соединить проводом) «землю» микроконтроллера Arduino Nano и внешнего источника питания (соответственно будет «заземлен» и ULN2003). Также через макетную плату.

Для внешнего питания я обычно использую мощные аккумуляторы в кейсе (в данном случае 3 шт. 18650)

Блок из аккумуляторов 18650 (на 12В)

или лабораторный блок питания, сделанный из древнего «компьютерного» блока питания.

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

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

Текст программы

 
#include "AccelStepper.h"

// define our control pin numbers
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5

// create an instance of the object AccelStepper
AccelStepper s28BYJ48(8, IN1, IN3, IN2, IN4);

void setup(){

s28BYJ48.setMaxSpeed(900.0);
s28BYJ48.setAcceleration(100.0);
s28BYJ48.setSpeed(200);
s28BYJ48.moveTo(2000);
}

void loop(){
// Change direction if the set number of steps is passed
if(s28BYJ48.distanceToGo()==0)
s28BYJ48.moveTo(-s28BYJ48.currentPosition());
s28BYJ48.run();
}

Как должен вести себя двигатель (видео)

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

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

UPD: чуть не забыл, несколько слов про ружье на стене — контроллер L298N. Он гораздо мощнее, поэтому после первого фиаско сразу подключил двигатель через него (это еще со стандартной библиотекой). Получил примерно то же самое (жуткую вибрацию) и двигатель нагрелся как сковорода, сначала думал спалил, но «бобик» выдержал, и при использовании Accel Stepper крутился еще бодрее — пальцем не остановить.

Объективные данные на 28BYJ-48 + ULN2003 и L298N

Измерение тока, потребляемого двигателем показало следующее:

  • для ULN2003 : 0,10-0,11 A (больший ток соответствует моменту разгона и торможения);
  • для L298N: 0,16-0,18 A;
  • т.е. потребляемая мощность около 1,32 и 2,16 Вт соответственно.

Примечания и ссылки:

Без внешнего питания светодиоды на плате с ULN2003 не горят, а на плате с L298N как раз наоборот.

1. ULN2003 datasheet

2. Скачать библиотеку Accel Stepper

3.  Cкачать ARDUINO IDE portable

Правильный старт и стоп: шаговый двигатель 28BYJ-48 + ULN2003: 1 комментарий

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

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