уроки Ардуіно

уроки Ардуіно

В уроці підключимо STEP / DIR драйвер TB6560-V2 до плати Ардуіно. Навчимося керувати ним за допомогою бібліотеки StepDirDriver.

TB6560-V2 недорогий драйвер крокових двигунів підтримує всі типові режими і функції STEP / DIR драйверів.

В уроці будемо підключати його до плати Ардуіно. Всі схеми і програми уроку підійдуть до будь-якого іншого STEP / DIR драйверу.

Підключення драйвера до плати Ардуіно.

У статті про модуль TB6560-V2 є дві схеми підключення до мікроконтролеру. Будемо використовувати цю.

уроки Ардуіно
При високому рівні сигналу (+5 В) через світлодіод вхідного оптрона тече струм, і модуль сприймає це як активний керуючий рівень. Резистори 330 Ом обмежують струм світлодіодів. Тобто драйвером можна управляти сигналами безпосередньо з висновків мікроконтролерів.

З урахуванням цього схема підключення драйвера TB6560-V2 до плати Ардуіно виглядає так.

уроки Ардуіно
Зверніть увагу на запобіжник. Я настійно рекомендую його поставити. У схемах з простими драйверами при згорянні ключів через двигун тече робочий струм, обмежений або опором обмотки, або додатковим резистором. У драйверах зі стабілізацією струму струм регулюється за рахунок ШІМ модуляції. Якщо в подібних пристроях згорають вихідні ключі, то на двигун може потрапити повне напруга живлення. Це призведе до неприпустимого току і згорянню крокової двигуна. Процес це повільний, тому від виходу з ладу приводу врятує будь-запобіжник - плавкий або самовідновлюється.

Параметри драйвера задаються перемикачами на платі модуля. Я задав ток фази 1 А.

уроки Ардуіно

Перемикачами S3 іS4 вибирається режим комутації фаз.

Для початку я поставив кроковий режим, потім перевірив всі інші. Всі режими описані в статті про модуль TB6560-V2. Там же показано, як ставити їх перемикачами модуля.

Зібрана схема у мене виглядає так.

уроки Ардуіно
Залишилося навчитися керувати такою системою.

Цю бібліотеку я розробив для управління STEP / DIR драйверами. Вона повністю сумісна за функціями з бібліотекою StepMotor (урок 29). Тільки 2 відмінності:

  • Конструктор має інші аргументи. Просто для STEP / DIR драйвера потрібні інші сигнали управління і інше кількість сигналів.
  • У функції установки режиму setMode () ігнорується параметр stepMode - режим комутації. Режим задається перемикачами на драйвері.

Завантажити бібліотеку StepDirDriver можна за цим посиланням.

Опис класу StepDirDriver.

У класу такі public методи.

public:
StepDirDriver (byte pinStep, byte pinDir, byte pinEn); // конструктор
void control (); // управління, функція повинна викликатися регулярно з максимальною частотою комутації фаз
void step (int steps); // ініціює поворот ротора на задане число кроків
void setMode (byte stepMode, boolean fixStop); // задає режими комутації фаз і зупинки
void setDivider (int divider); // установка подільника частоти для комутації фаз
int readSteps (); // читання залишилися кроків
>;

Неважко здогадатися, про призначення аргументів конструктора:

  • pinStep - висновок сигналу STEP;
  • pinDir - висновок сигналу DIR;
  • pinEn - висновок сигналу ENABLE.

StepDirDriver myMotor1 (10, 11, 12); // створюємо об'єкт StepDirDriver, задаємо висновки для сигналів STEP, DIR, ENABLE

Опис методів бібліотеки StepDirDriver.

Необхідно викликати метод регулярно в паралельному процесі (перериванні по таймеру). У ньому виробляються керуючі сигнали, що визначають комутацію фаз. Частота виклику функції control () разом з подільником, що задається функцією setDivider, визначає швидкість обертання двигуна.

// обробник переривання 200 мкс
void timerInt ()
myMotor1.control (); // управління двигуном
>

Метод ініціює поворот двигуна на задане число кроків. У мікро крокових режимах мова йде не про фізичних кроках двигуна, а про мікро кроках. Параметр steps з позитивним значенням ініціює поворот проти годинникової стрілки, з від'ємним значенням - за годинниковою стрілкою.

Запустивши обертання функцією step ()

myMotor1.step (300); // зробити 300 кроків проти годинникової стрілки

програма може виконувати інші завдання. Двигун зупиниться сам. У будь-який момент двигун можна зупинити командою

myMotor1.step (0); // зупинити привід

Нічого не заважає поставити нове число кроків, не чекаючи зупинки двигуна. Для безперервного обертання можна періодично викликати функцію step () з великим числом кроків.

myMotor1.step (30000); // постійне обертання

Про те, що двигун зупинився можна дізнатися за допомогою методу readSteps ().

void setMode (byte stepMode, boolean fixStop)

Метод задає стан двигуна при зупинці.

  • Якщо fixStop = true, то при зупинці на обмотки двигуна подається струм утримання, стан ротора зафіксовано.
  • При fixStop = false, напруга з обмоток двигуна при зупинці знімається.

Аргумент stepMode ігнорується. Він доданий для сумісності з такою ж функцією бібліотеки StepMotor.

myMotor1.setMode (0, true); // фіксація ротора при зупинці
myMotor1.setMode (0, false); // двигун повністю відключений

void setDivider (int divider)

Функція задає коефіцієнт ділення частоти виклику методу control (), а значить, визначає швидкість обертання двигуна. Швидкість обертання можна обчислити за такою формулою:

Rpm = 60 000 / (divider * Tcontrol * Nдвігателя) / Nмікрошагов

  • Rpm - швидкість обертання в оборотах в хвилину;
  • Tcontrol - період виклику методу control () в мс;
  • Nдвігателя - число кроків двигуна на повний оборот;
  • Nмікрошагов - число мікро кроків двигуна на одну фазу.

Для крокової режиму Nмікрошагов = 1, для підлоги крокової Nмікрошагов = 2 і т.д.

myMotor1.setDivider (5); // дільник частоти 5

Метод зчитує кількість кроків, що залишилися до зупинки двигуна. Повернення 0 означає, що двигун зупинений.

Приклади використання бібліотеки StepDirDriver.

Використання нової бібліотеки нічим не відрізняється від застосування функцій бібліотеки StepMotor з попередніх уроків.

Всього дві відмінності:

  • Підключення бібліотеки #include замість #include .
  • Інший формат конструктора StepDirDriver myMotor (10, 11, 12); замість StepMotor myMotor (10, 11, 12, 13).

У програмі змінюються всього 2 рядки.

Можете завантажити і перевірити скетч програми. яка змушує зробити двигун 2 оберти за годинниковою стрілкою зі швидкістю 1 оборот в секунду, потім пауза 1 секунда, 2 оберти проти годинникової стрілки, знову пауза на секунду і так в циклі. Він схожий на приклади з попередніх уроків для бібліотеки StepMotor. Не забудьте встановити бібліотеку StepDirDriver.

Перевірка драйверів крокової двигуна з AT командами.

Я замінив дві строчки програми драйвера з керуванням від комп'ютера з Урока31 і вийшло нове пристрій для роботи з кроковим двигуном. Завантажити новий драйвер з керуванням по протоколу AT команд можна за цим посиланням.

Зібрав систему за схемою на початку уроку і перевірив в самих різних режимах. Не буду описувати все докладно. Зупинюся на мікро шаговом режимі.

Задав мікро кроковий режим з 16 мікро кроками. У мене двигун має 400 фізичних кроків. У мікро шаговом режимі вийшов двигун, який має цілих 6400 кроків на оборот! Поробовать управляти програмою верхнього рівня StepMotor (урок 31).


уроки Ардуіно
Все працює. Точність установки просто неймовірна.

Перевірив і роботу стежить електроприводу з уроку 32.


уроки Ардуіно
Роздільна здатність положення ротора майже 0,05 °!

Напевно, в останніх двох уроках я переконливо показав переваги STEP / DIR драйверів. Але який драйвер застосовувати в конкретному випадку вирішувати розробнику. Що важливіше низька ціна простого драйвера з ключів або функціональність STEP / DIR драйвера.

Бувають дуже серйозні розробки з простими драйверами. Наприклад, практично всі крокові двигуни в фасувальному обладнанні НПП "РОСТ" працюють в уніполярному режимі з простими драйверами-ключами. Через це у двигунів зменшився крутний момент, знизилася максимальна швидкість обертання, але зате значно впала ціна системи управління. Для пристроїв з 7-10 кроковими двигунами це важливо.

Треба вибирати оптимальний варіант. У якихось випадках без STEP / DIR драйвера не обійтися, в інших проектах цілком вдало працюватимуть прості драйвери.

А ВИ не могли б вказати хоч приблизне напрямок, як організувати такий режим, щоб з панелі управління запускати послідовно кілька (5 шт.) Крокових двигунів, задаючи певні кути повороту і послідовність їх включення і це все автоматично запам'ятовувалося з можливістю коригування кутів повороту програмно. Взагалі, чи можливо це? Завдання така ставиться для управління станком 3d згинання дроту.

Вітаю!
Треба створити в програмі 5 об'єктів - двигунів. Перевірити кожен окремо. Потім зробити програмні таймери, що запускаються в потрібній послідовності. Додати управління параметрами таймерів і двигунів. Не можна сказати, що дуже складна, але досить об'ємна задача.

Схожі статті