Шановні друзі!
26 та 31 грудня магазин працюватиме до 16 години. 1 та 2 січня магазин працювати не буде.
Вітаємо всіх з Різдвом та Новим Роком!
Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Модуль драйвера двигунів на L293D

2021-05-31

Всі статті →

Олександр Баранюк

Сьогодні в центрі уваги опинився простий і водночас загадковий пристрій «Модуль драйвера двигунів на L293D».

Коментарі покупців на сторінці продукту та інших Інтернет-ресурсах свідчать, що з драйвером часто виникають проблеми. То двигуни не крутяться, то крутяться хаотично. Доходить до того, що виходить з ладу підключений контролер Arduino. Помічено, що часто на платі неправильно вставлена мікросхема. На форумах плату згадують різними «лагідними» словами на кшталт «чудо-чудное», «диво-дивное» та ін.

Виникла потреба з’ясувати, що не так із цією платою, і як використовувати її за призначенням, безпечно і результативно. Як і багато китайських плат-клонів, вона має бути з чогось «зідрана». Досить легко вдалося встановити, що прототипом є аналогічна плата під назвою «New L293D motor shield» від фірми Deek Robot, на сайті якої ще недавно можна було знайти схему підключення плати і навіть принципову схему, що трапляється досить рідко для подібних продуктів. Наразі фірма змінила свою назву і схеми стали недоступними.

Отже, потрібно з’ясувати кілька важливих питань, зокрема:

  • Як повинна стояти мікросхема на платі?
  • Що не так із живленням плати і чому горять контролери Arduino?
  • Як організувати подачу живлення на плату контролера Arduino та плату драйвера?
  • Як керувати двигунами постійного струму (ДПС) за допомогою плати?

Перше питання.

Як повинна стояти мікросхема на платі? З фірмової документації Даташит L293D видно, що більшість виводів мікросхеми розташовані центрально-симетрично (по діагоналі) по відношенню до аналогічних виводів протилежного боку мікросхеми.

Мікросхема так і проситься, щоб її поставили іншим боком (з поворотом на 180?). У деяких випадках вона навіть буде працювати. Проте не всі виводи розташовані симетрично, мова йде про виводи живлення. Вивід 16 (VCC1) живить логіку схеми, на ньому має бути напруга 5 В (допускається 4,5…7 В. На виводі 8 (VCC2) напруга може бути в діапазоні від VCC1 до 36 В. Отже існує єдиний випадок, коли неправильно встановлена мікросхема буде працювати – якщо обидві напруги живлення однакові і не виходять за межі діапазону 4,5…7 В. В усіх інших випадках це дві різні напруги і мікросхема повинна стояти так, як передбачено виробником.

Як же повинна стояти мікросхема на нашій платі? Виймаємо мікросхему з панельки, подаємо на плату напругу живлення VIN від блоку живлення напругою 9–12 В і заміряємо напругу на виводах панельки, зважаючи на ключ панельки, який розташований в центрі плати. На виводі 16 панельки присутня напруга 5 В, а на виводі 8 напруга 9 В. Плата має вбудований стабілізатор напруги типу 78M05, який забезпечує логіку схеми напругою 5 В.

Робимо перший висновок. Ключ на панельці мікросхеми співпадає з позначенням ключа білою фарбою під панелькою, мікросхему слід поставити згідно ключа, тобто виводи 1 і 16 мікросхеми повинні бути в центрі плати.

Примітка. Мікросхема на платі, одержаній автором з магазину arduino.ua стояла неправильно! Це видно також на фото на сторінці продукту. Звичайно ж, вини магазину в цьому немає, оскільки плата була запакована в антистатичний пакет з яскравою жовтою наліпкою, значить це виробник неправильно поставив мікросхему в панельку. Було б непогано, якби магазин попередив про це, аби убезпечити покупців від зайвого клопоту і втрат, а себе від справедливих нарікань покупців.

Друге питання.

Що не так із живленням плати і чому горять контролери Arduino? Схоже на те, що із живленням плати все в порядку. На вхід VIN плати потрібно подати одну напругу в діапазоні 9…24 В, і цього цілком достатньо. Для живлення логіки мікросхеми плата має вбудований лінійний стабілізатор напруги L78M05, який видає напругу 5 В і струм до 500 мА.

Згідно документації виробника для нормальної роботи стабілізатора L78M05 вхідна напруга повинна перевищувати вихідну щонайменше на 2 В, тобто бути більшою 7 В, інакше напруга на виході не буде стабільною. Далі буде показано, що для двигуна з напругою 6 В потрібна напруга живлення силових ключів мікросхеми L293D не менше 8,6 В. Отже на вхід VIN слід подати напругу живлення плати в діапазоні 9…24 В, що й рекомендовано виробником Deek Robot. Зважаючи на те, що конденсатор маловідомого виробника на вході VIN розрахований на максимальну напругу 25 В, навряд чи варто ризикувати з напругою, вищою від 20 В. Напруга живлення логічної частини мікросхеми VCC1 = 5 В одержується від стабілізатора напруги. Ця ж напруга присутня на роз’ємі поряд із входами для підключення контролера. Це вихідна напруга стабілізатора, вона може бути використана для живлення інших пристроїв з напругою 5 В. На цей вивід не потрібно подавати напругу від інших джерел, аби уникнути неприємностей.

Нарешті про один «жучок» плати, який пов’язаний з живленням і може доставити вам неприємності. З нижнього боку плати є ледь помітна перемичка, яка може з’єднувати вхід і вихід стабілізатора напруги (показана також як Vin-Vcc на схемі стабілізатора вище). Автору дісталася плата з розімкненою перемичкою, але на фото продукту на сайті arduino.ua вона, здається, замкнена.

Важко здогадатися про її призначення. Якщо замкнути цю перемичку, то висока напруга із входу стабілізатора потрапляє на його вихід, а отже і на вхід живлення логічної частини мікросхеми L293D. Якщо ця напруга суттєво вища від 7 В, то мікросхемі не можна позаздрити. А якщо хтось додумається подати напругу VCC ще й на контролер Arduino, то йому точно буде непереливки. Єдиний випадок, коли замкнена перемичка може виправдати своє призначення – якщо напруга живлення ключів двигуна і мікросхеми повинні бути однаковими VIN = VCC = 5 В, тоді стабілізатор виявляється зайвим і його можна вилучити із, схеми замкнувши перемичку. Автор не радив би цього робити у будь-якому випадку. При необхідності можна скористатися зовнішньою перемичкою.

Третє питання.

Як організувати подачу живлення на плату контролера Arduino та плату драйвера?

Способам живлення самої плати контролера Arduino присвячено окремі публікації. У даному випадку нас цікавлять лише способи організації живлення обох плат. Видається, що є чотири способи живлення плат.

  • Обидві плати живляться від одного джерела.
  • Контролер Arduino отримує живлення від плати драйвера.
  • Плата драйвера отримує живлення від контролера Arduino.
  • Обидві плати живляться від окремих джерел.

Конкретна схема живлення контролера Arduino та драйвера двигунів залежить від особливостей проекту, типу двигунів та наявних блоків живлення. Візьмемо для прикладу подачу живлення на модуль драйвера двигунів та плату Arduino Uno.

1) Якщо ваш блок живлення (9–12 В) має провідникові виходи, або ви дружите з паяльником, то можна подати напругу паралельно на входи Vin Arduino та VIN драйвера.

2) Якщо контролер Arduino не має окремого джерела живлення, то живлення подають на плату драйвера, а напругу VCC з плати драйвера можна використати для живлення контролера Arduino, в цьому випадку її подають прямо на вхід 5 В контролера, оминаючи встановлений на платі Arduino стабілізатор. Цей спосіб не рекомендують до використання початківцям, адже будь-яка необережність із живленням може пошкодити мікроконтролер Arduino.

3) Якщо блок живлення з напругою 9–12 В має вихідний роз’єм типу DC 5,5/2,1 мм, то його підключають до плати Arduino, а з вивода плати Vin подають напругу на вхід VIN драйвера. У цьому випадку напруга VIN драйвера буде приблизно на 0,8 В меншою від напруги, поданої на Arduino через падіння напруги на діоді D1 плати Arduino Uno.

4) Якщо двигун постійного струму розрахований на напругу живлення, суттєво більшу від 6 В, то краще на плату драйвера двигунів і на плату Arduino подати напруги від окремих джерел живлення з відповідними напругами. В усіх варіантах живлення плати з’єднуються між собою виводом GND «земля».

Четверте питання, основне. Як керувати двигунами постійного струму за допомогою плати драйвера і контролера Arduino?

L293D являє собою набір із чотирьох драйверів напівмостового типу. Кожних два напівмости утворюють повний міст (H-міст). Мікросхема може керувати чотирма окремими двигунами постійного струму, якщо не передбачається зміна напряму обертання (реверсу), або двома двигунами постійного струму, якщо необхідний реверс. Мікросхема може також керувати кроковими двигунами, хоча це тема окремої розмови. Мостова схема потрібна для того, щоб змінювати напрям струму через двигун при однополярному живленні. Всі логічні входи схеми ТТЛ-сумісні. Кожний вихід схеми являє собою двотактний підсилювач на складених транзисторах, нижній транзистор виконаний за схемою Дарлінгтона (на транзисторах одного типу провідності), а верхній за схемою псевдо-Дарлінгтона (на транзисторах різного типу провідності). Складені транзистори на виходах дають високий коефіцієнт підсилення за струмом, проте мають і один суттєвий недолік, про який варто пам’ятати. Згідно документації, типова напруга низького рівня на виходах схеми становить 1,2 В (при навантаженні 0,6 А), а типова напруга високого рівня становить VCC2 – 1,4 В. Тобто, напруга, прикладена до двигуна, може бути на 2,6 В менша від напруги живлення, яка подається на вивід VCC2 мікросхеми. Отже для керування двигунами з напругою 6 В потрібно подавати не менше 8,6 В, а для двигунів з напругою 3 В потрібно не менше 5,6 В. Інакше кажучи напруга VCC2 має бути на 2,5…3 В більшою від напруги двигуна. Вихідні каскади мікросхеми L293D мають вбудовані діоди для захисту від ЕРС самоіндукції при індуктивному навантаженні.

Кожна пара драйверів має спільний вхід дозволу, по два входи керування і по два виходи (для прикладу перша пара драйверів мають вхід дозволу 1,2EN, входи керування 1A, 2A, виходи 1Y, 2Y).

Якщо на вході дозволу високий рівень, робота відповідної пари драйверів дозволена, їх виходи активні і визначаються поданими вхідними сигналами керування. Якщо на вході дозволу низький рівень, відповідна пара драйверів заборонена, їх виходи відключені (перебувають у третьому стані).

Тепер конкретно про нашу плату. Плата драйвера двигунів може керувати двома двигунами постійного струму в реверсному режимі. Схема підключень показана на рисунку.

На платі встановлено дві перемички, які подають на входи дозволу EN1, EN2 високий рівень, таким чином дозволена робота обох пар драйверів.

Для підключення контролера Arduino до плати потрібно з’єднати «землю» (GND) обох плат і використати 4 цифрових виводи Arduino (для прикладу 5, 6, 7, 8). Режими роботи двигуна можна представити таблицею.

IN1IN2Режим
LOWLOWГальмування
LOWHIGHОбертання
HIGHLOWРеверс
HIGHHIGHГальмування

Отже однакові сигнали на входах IN1, IN2 забезпечують режим гальмування двигуна, а різні сигнали на входах – обертання в один та інший бік. Вказані режими забезпечують обертання двигунів з постійною швидкістю. Для зміни швидкості обертання двигунів слід задіяти входи дозволу. На платі драйвера потрібно зняти перемички, а до входів дозволу EN1, EN2 підключити два виходи контролера Arduino, які підтримують широтно-імпульсну модуляцію PWM (для прикладу ~10, ~11). Будьте обережні, підключаючи входи EN1, EN2, вони знаходяться ближче до краю плати поряд з відповідними написами на платі. На виводах, які знаходяться ближче до мікросхеми, присутня напруга 5 В!

Змінюючи значення PWM на аналогових виходах в діапазоні приблизно від 100…120 до 255, можна змінювати швидкість обертання двигуна в певних межах. Нижня межа діапазону залежить від двигуна і напруги живлення, її можна визначити експериментально. Пам’ятайте, що при низьких напругах крутний момент двигуна різко падає і врешті-решт він зупиняється.

На сайті компанії Adafruit можна ознайомитись з уроком, присвяченим керуванню двигуном постійного струму, або скачати його у форматі PDF.

Висновки:

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

2. Плата драйвера двигунів живиться від напруги VIN = 9–24 В, конкретне значення напруги залежить від двигуна і повинно бути на 2,5…3 В більшим від номінальної напруги двигуна. На платі встановлено лінійний стабілізатор напруги на 5 В, який живить логічну частину мікросхеми L293D, його можна також задіяти для живлення інших пристроїв з напругою 5 В і струмом споживання до 500 мА.

3. Є кілька способів подачі живлення на плату драйвера та плату контролера Arduino. 1) Обидві плати живляться від одного джерела. 2) Плата драйвера отримує напругу Vin від контролера Arduino. 3) Контролер Arduino отримує напругу 5 В від плати драйвера. 4) Обидві плати живляться від окремих джерел. В усіх варіантах живлення плати з’єднуються між собою виводом GND «земля». Конкретна схема подачі живлення залежить від проекту (наявних блоків живлення та типу їх роз’ємів, напруги двигунів, досвіду електромонтажних робіт та ін.).

4. Є кілька способів використання плати драйвера у проектах. 1) Керування чотирма ДПС без реверсу з постійною швидкістю. 2) Керування двома ДПС з реверсом і постійною швидкістю. 3) Керування чотирма ДПС без реверсу зі змінною швидкістю. 4) Керування двома ДПС з реверсом і змінною швидкістю. У будь якому випадку цифрові виходи портів контролера Arduino з’єднують з входами керування IN1…IN4 драйвера. Якщо керування швидкістю не потрібне, на входи дозволу EN1, EN2 драйвера подають 5 В за допомогою перемичок. Якщо потрібно змінювати швидкість обертання двигунів, перемички знімають, а до входів дозволу плати підключають виходи контролера Arduino з PWM.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Модуль драйвера двигунів на L293D"
5 з 5
зроблена на основі 1 оцінки 1 клієнтських відгуку.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Сергій
10.07.2023 14:55:32
Опис доступний для розуміння та досить інформативний
оплата картами Visa і MasterCard