Модуль драйвера двигунів L298N дозволяє управляти двома моторами постійного струму, або кроковим двигуном з споживаним струмом до 2 Ампер.
За функціоналом L298N повністю ідентична L293D. Ми бачимо ті ж керуючі висновки. Чергування різнойменних сигналів (високий логічний рівень або низький) на парах висновків IN1, IN2 і IN3, IN4 задають напрямок обертання моторів.
Висновки ENABLE A, B (ENA прив'язаний до IN1, IN2. ENB до IN3, IN4) відповідають за роздільне управління каналами. Можуть використовуватися в двох режимах:
Умовно "активному" режимі (ріс.а1). коли ними буде керувати контролер - високий логічний рівень дозволяє обертання моторів, низький забороняє незалежно від стану висновків "IN". Для регулювання швидкості моторів, на "EN" висновки подається ШІМ (PWM) сигнал.
Умовно "пасивному" режимі (ріс.а2). притягнувши висновки "EN" до високого рівня (+ 5V). Для цього на платі, поруч з висновками ENA і ENB знаходяться штирі з'єднані з + 5V. Замикаємо висновки за допомогою джамперів. В даному режимі ми не зможемо регулювати швидкість двигунів, вони будуть завжди обертатися в повну швидкість (за то для управління заощаджується 2 виведення контролера). Напрямок обертання буде задаватися як і раніше, а от для зупинки в даному варіанті, стан висновків буде вже грати роль. Для зупинки потрібно буде подавати однойменні сигнали на виодіт "IN".
Клеммник подачі живлення і робота стабілізатора.
Підключення до Arduino
Економічне підключення одного мотора без регулювання швидкості обертання
Для цього замикаємо джампер як показано на малюнку, тим самим поєднуючи висновок EN з + 5V
Як вже говорилося раніше, при такому способі ми не можемо регулювати швидкість обертання, однак для управління одним каналом модуля буде задіяно два цифрових виведення замість трьох.
Змусимо моторчик обертатися "вправо" 4 секунди, зупинитися на 0.5 секунди, обертатися "вліво" 4 секунди, зупинка 5 секунд і знову цикл повторюється.
Приклад програмного коду
Підключення одного мотора з регулюванням швидкості обертання
В даному прикладі ми під'єднали ENB до висновку ШІМ (D3). Тепер стає можливо управляти швидкістю мотора, змінюючи шпаруватість посилається ШІМ сигналу.
Значення скважности задаються функцією analogWrite (pin, число), де число змінюється від 0 до 255, прямо пропорційно скважности сигналу. Для наочності, підібрані чотири значення при яких двигун стартує з низьких оборотів, набирає середні, виходить на максимальні і не обертається.
Приклад програмного коду
Фінальний приклад. Підключення двох моторів з регулюванням швидкості обертання
У наведеному нижче скетчі два мотори будуть обертатися в обидві сторони з плавним наростанням швидкості.
Приклад програмного коду
Корисна інформація
Повернемося до розгону двигунів за допомогою висновків ENABLE. У статті про підключення L293D я вже згадував про те, що при старті двигун в середньому споживає струм в 2-4 рази більше номінального, а при різкому реверсі ще більше. Даний стрибок можна знизити або взагалі прибрати, якщо розганяти двигун плавно і дати на розгін якийсь проміжок часу.
Ми спеціально взяли слабкий по току блок живлення (9V, 600 мА), щоб наочно показати просідання напруги. Спостерігайте за світлодіодом і ви все побачите самі.
P.S. Ми використовували танкову платформу, з огляду на що мотор крутить редуктор і гусениці, то для його запуску потрібно пристойний струм. При вимірах виявилося, що при різкому запуску одного мотора, короткочасний стрибок струму склав близько 0.7- 0.9A (при номінальному 0.2A), а при включенні відразу двох моторів до 1.8A. При плавному розгоні ми фіксували рідкісні скачки струму до 0.3А. Про ефективність плавного розгону судіть самі.