- Управление биполярным шаговым двигателем. Часть 2. Схема с контроллером PIC12F629 и драйвером L293D
- Обзор motor shield l293d
- Технические параметры
- Общие сведения о L293D
- Подключение к Arduino двигателя постоянного тока с помощью L293D
- Motor Shield L293D. Подключение к Arduino и управление четырьмя двигателями или двумя сервомоторами.
- Описание Motor Shield L293D
- Подключение четырёх моторов к Motor Shield L293D и скетч
- Подключение сервомоторов к Motor Shield L293D и скетч
Управление биполярным шаговым двигателем. Часть 2. Схема с контроллером PIC12F629 и драйвером L293D
Поскольку драйвера для шаговиков L293D более популярны у радиолюбителей, чем LB1838, и их гораздо легче достать, то, по просьбам форумчан, я решил написать продолжение статьи про управление биполярными шаговыми двигателями и рассмотреть схему с драйвером L293D.
Про то, как подключать обмотки и в каком порядке на них подавать сигналы, я писать не буду, это было подробно рассмотрено в первой части статьи, вместо этого давайте рассмотрим, чем, с точки зрения управления, драйвер L293D отличается от рассмотренного нами ранее драйвера LB1838 и как нужно переделать схему и программу управления, чтобы получить точно такое же устройство, только на драйвере L293D.
Итак, в чём же отличия? Во-первых, — в обозначениях. У LB1838 выходы обозначены как OUT, а у L293D они обозначены буквой Y, у LB1838 управляющие входные сигналы обозначены как IN, а у L293D они обозначены буквой A. Во-вторых, — в количестве управляющих сигналов. У LD293D для каждого выхода есть свой управляющий входной сигнал, а у LB1838 один входной сигнал управлял сразу двумя выходами. В остальном, никаких принципиальных отличий с точки зрения управления, в этих драйверах нет.
Далее, давайте посмотрим на таблицу истинности драйвера L293D и нарисуем для него диаграммы входных управляющих сигналов для одного полного цикла вращения, когда на выходах последовательно появляются все 4 комбинации подключения обмоток (также, как мы это делали для LB1838):
Таблица истинности для L293D (состояние выходов в зависимости от состояния входов):
1,2EN | 1A | 1Y (a) | 2A | 2Y (b) | 3,4EN | 3A | 3Y (c) | 4A | 4Y (d) |
High | High | + | High | + | High | High | + | High | + |
High | Low | — | Low | — | High | Low | — | Low | — |
Low | X | откл | X | откл | Low | X | откл | X | откл |
Если внимательно посмотреть на диаграмму слева, то можно увидеть, что сигнал 1A можно сделать одинаковым с сигналом 3A, а сигнал 2A — одинаковым с сигналом 4A. В этом случае наша диаграмма упроститься и будет выглядеть так:
На последней диаграмме нарисовано, какие комбинации уровней сигналов должны быть на управляющих входах драйвера (1,2EN, 3,4EN, 1A, 2A, 3A, 4A) для того, что бы получить соответствующие комбинации подключения обмоток двигателя, а также стрелками указан порядок смены этих комбинаций для обеспечения вращения в нужную сторону.
Теперь внимательно смотрим на последнюю диаграмму и сравниваем её с соответствующей диаграммой для драйвера LB1838. Мы видим, что в случае с L293 нам придётся использовать для управления драйвером 4 ноги контроллера вместо трёх, как это было в случае с LB1838, соответственно схему и программу для контроллера придётся переделать.
Начнём со схемы. Схема для L293 будет выглядеть так:
Элементы можно взять те же самые, что и для схемы с LB1838:
|
Далее давайте подумаем, что нужно будет изменить в программе микроконтроллера, чтобы наше устройство с L293D работало аналогично девайсу на LB1838 (который мы рассматривали в первой части). А, собственно говоря, практически ничего. Что у нас изменилось? Только количество ног и их подключение (нога GP4 у нас теперь будет использоваться для управления драйвером, а КН2 мы подключим к ноге GP3). Соответственно, в программе мы должны сделать следующие три вещи:
- настроить GP4 на выход. Для этого нужно заменить в программе вот эту строчку:
movlw b’00110000′ ; настройка выходов (GP4,GP5 — входы)
movlw b’00101000′ ; настройка выходов (GP3,GP5 — входы)
Обзор motor shield l293d
Автор: Сергей · Опубликовано 22.05.2020 · Обновлено 04.08.2020
Если задумались спроектировать робота, первым делом необходимо научится управлять различными двигателями, это может быть и двигатель постоянного тока или сервопривод. Один из самых простых и недорогих способов это воспользоваться Motor Shield на базе L293D, который можно легко установить на плату Arduino UNO.
Технические параметры
► Напряжение питания двигателей: 5 — 36 В
► Напряжение питания платы: 5 В
► Допустимый ток нагрузки: 600 мА на канал
► Максимальный (пиковый) ток нагрузки: 1,2 А на канал
► Размер платы: 70х54х20 мм
Общие сведения о L293D
Motor shield построен на микросхеме L293D, состоящая из двух H-мост (H-Bridge), с помощью которых можно управлять двумя постоянными двигателями или одним шаговым двигателем. Каждый канал рассчитан на 0.6 А с пиком 1.2 А. Так как на shield установлено две микросхемы L293D, можно управлять сразу четырьмя двигателями постоянного тока, это позволяет использовать данный shield в разработке робот платформ. Так же, на shield установлена микросхема 74HC595, которая расширяет 4 цифровых контакта Arduino до 8 управляющих контактов двух микросхем L293D.
Питание Motor shield L293D:
► Общий источник питания для Arduino и двигателей (максимальное напряжение 12 В) — можно использовать один источник питания, используется разъем DC на Arduino UNO или 2-х контактный разъем на shield «EXT_PWR«, так же необходимо установить перемычку «PWR«.
► Раздельный источник питания — рекомендуется отдельно питать Arduino и shield, для этого Arduino подключаем к USB, а двигатели подключаем к источнику постоянного тока, используя разъем » EXT_PWR». Необходимо убрать перемычку перемычку «PWR«.
Внимание! Нельзя подавать питание на «EXT_PWR» выше 12 В при установленной перемычке «PWR».
Выходные контакты двух микросхем L293D выведены по бокам shield с помощью 5-ти контактных винтовых клемм, а именно М1 , М2 , М3 и М4. К этим контактам подключается четыре двигателя постоянного тока и два шаговых двигателя.
Так же, на shield выведен два 3-х контактных разъема, которым можно подключить два сервопривода.
Неиспользуемые контакты:
Цифровые контакты D2 и D13 и аналоговые контакты A0-A5 не используются.
Подключение к Arduino двигателя постоянного тока с помощью L293D
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Блок питания 12В, 2А x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Двигатель постоянного тока x 21шт.
► Motor shield L293D
Подключение:
Устанавливаем shield сверху Arduino, далее подключаем источник питания к клеммам «EXT_PWR«, в примере используется источник питания на 9 В. Теперь подключаем двигатели к клеммам M1, M2, M3 или M4. В примере подключаем к М4.
Установка библиотеки:
Для удобной работы с Motor shield L293D необходимо установить библиотеку «AFMotor.h». Заходим в Arduino IDE, открываем вкладку «Скетч» -> «Подключить библиотеку» и нажимает «Управлять библиотеками…«
Откроется новое окно «Менеджер библиотек«, в окне поиска вводим «Adafruit Motor Shield» и устанавливаем библиотеку.
Программа:
В данном скетче показано, как управлять скоростью и направлением движении двигателями постоянного тока.
Motor Shield L293D. Подключение к Arduino и управление четырьмя двигателями или двумя сервомоторами.
Всем привет! Сегодня я покажу вам как подключить Motor Shield L293D к Arduino.
Для этого понадобятся:
1. Arduino Uno или Mega с USB кабелем
2. Компьютер с установленной Arduino IDE и драйверами для плат
3. Четыре двигателя с припаянными проводами или два серво(можно использовать и один)
4. Motor Shield L293D
5. Бокс и два литий-ионных аккумулятора на 3.7V(в качестве источника питания). Можно использовать и другой источник питания.
Описание Motor Shield L293D
Motor Shield L293D оснащён двумя драйверами двигателей L293D, поэтому он может управлять четырьмя двигателями, или двумя двигателями и одним серво, или двумя серво, или двумя шаговыми двигателями. Также этот шилд имеет контакты для внешнего питания, что часто бывает полезно в проектах.
Нужно учесть, что для управления двигателями драйвер использует пины платы с 3 по 8 и 12 , а для управлением серво — пины 9 и 10. Поэтому к ним лучше ничего не подключать. Я пробовал в проекте танка использовать сразу L293D и L298N, подключенный к контактам управления драйвером L293D. Из-за того, что L298N и L293D использовали общие контакты управления часто срабатывали не те двигатели.
Для работы с L293D нужно установить библиотеку AFmotor. Скачать её можно отсюда . Извлеките содержимое скачанного архива в папку libraries.
Обратите внимание! Нельзя подавать на EXT_PWR напряжение больше 12V при наличии перемычки PWR!
Подключение четырёх моторов к Motor Shield L293D и скетч
Схема подключения четырёх моторов и источника питания к L293D представлена ниже:
Теперь напишем скетч для четырёх моторов. Вместо звёздочки перед include нужно вставить «решётку». Если мотор будет вращаться не в ту сторону нужно поменять контакты в клеммнике местами.
void setup() <
motor1.setSpeed(255); // задаем максимальную скорость первого мотора
motor1.run(RELEASE); // останавливаем первый мотор
motor2.setSpeed(255); // задаем максимальную скорость второго мотора
motor2.run(RELEASE); // останавливаем второй мотор
motor3.setSpeed(255);//задаем максимальную скорость 3-го мотора
motor3.run(RELEASE); // останавливаем третий мотор
m otor4.setSpeed(255);//задаем максимальную скорость 4-го мотора
motor4.run(RELEASE); // останавливаем четвёртый мотор
>
void loop() <
motor1.run(FORWARD); // вращаем первый мотор вперёд
motor2.run(FORWARD); // вращаем второй мотор вперёд
motor1.setSpeed(255); // задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора
motor3.run(FORWARD); // вращаем третий мотор вперёд
motor4.run(FORWARD); // вращаем четвёртый мотор вперёд
motor3.setSpeed(255); // задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора
delay(5000); // задержка 5 секунд
m otor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор
motor1.run(BACKWARD); // вращаем первый мотор назад
motor2.run(BACKWARD); // вращаем второй мотор назад
motor1.setSpeed(255); // задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора
m otor3.run(BACKWARD); // вращаем третий мотор назад
motor4.run(BACKWARD); // вращаем четвёртый мотор назад
motor3.setSpeed(255); // задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора
delay(5000); // задержка 5 секунд
motor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор
Подключение сервомоторов к Motor Shield L293D и скетч
Подключать сервомоторы нужно к контактам, которые выделены на фото ниже. Соединяем так:
Красный провод(Сервомотор) — плюс(Motor Shield L293D)
Коричневый провод(Сервомотор) — минус(Motor Shield L293D)
Оранжевый провод(Сервомотор) — S(Motor Shield L293D)
Как я уже писал для управления сервомоторами используются пины 9 и 10 платы Arduino. Приступим к написанию скетча для двух сервомоторов. Вместо звёздочки перед include нужно вставить «решётку».