В уроці підключимо 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.
Напевно, в останніх двох уроках я переконливо показав переваги STEP / DIR драйверів. Але який драйвер застосовувати в конкретному випадку вирішувати розробнику. Що важливіше низька ціна простого драйвера з ключів або функціональність STEP / DIR драйвера.
Бувають дуже серйозні розробки з простими драйверами. Наприклад, практично всі крокові двигуни в фасувальному обладнанні НПП "РОСТ" працюють в уніполярному режимі з простими драйверами-ключами. Через це у двигунів зменшився крутний момент, знизилася максимальна швидкість обертання, але зате значно впала ціна системи управління. Для пристроїв з 7-10 кроковими двигунами це важливо.
Треба вибирати оптимальний варіант. У якихось випадках без STEP / DIR драйвера не обійтися, в інших проектах цілком вдало працюватимуть прості драйвери.
А ВИ не могли б вказати хоч приблизне напрямок, як організувати такий режим, щоб з панелі управління запускати послідовно кілька (5 шт.) Крокових двигунів, задаючи певні кути повороту і послідовність їх включення і це все автоматично запам'ятовувалося з можливістю коригування кутів повороту програмно. Взагалі, чи можливо це? Завдання така ставиться для управління станком 3d згинання дроту.
Вітаю!
Треба створити в програмі 5 об'єктів - двигунів. Перевірити кожен окремо. Потім зробити програмні таймери, що запускаються в потрібній послідовності. Додати управління параметрами таймерів і двигунів. Не можна сказати, що дуже складна, але досить об'ємна задача.