Motor Shield L293D — это шилд, который позволяет подключать к Arduino различные
моторы и сервоприводы.
Принципиальная схема модуля:
Технические документации содержат в себе подробные описания модулей: MPU-9250 и BMP280.
Технические характеристики
возможность подключения 2-х сервоприводов на 5 Вольт;
возможность подключения 2-х шаговых двигателей от 6 до 12 Вольт;
подключение до 4-х моторов с возможностью реверса направления вращения;
контакты для подключения внешнего питания для двигателей;
Motor Shield for Arduino совместим с платами Uno и Mega.
Напряжение питания платы: 5 В
Допустимый ток нагрузки: 600 мА на канал
Максимальный (пиковый) ток нагрузки: 1,2 А на канал
Размер платы: 70х54х20 мм
Назначение выводов:
Работа с библиотекой AFMotor.h
Для работы с шилдом нужна библиотека AFMotor.h:
afmotor.zip
Функции управления двигателем постоянного тока
AF_DCMotor: Эта функция выполняется для описания двигателя
постоянного тока.
Создание объекта AF_DCMotor (номер двигателя, частота) для установки
H-моста и сдвигового регистра. Экземпляры класса должны иметь уникальные имена
для каждого двигателя. Конструктор класса принимает два аргумента.
Первый аргумент номер двигателя — номер канала, к которому подключен мотор.
Данный параметр может принимать значения 1, 2, 3, 4.
Второй аргумент частота — это частота ШИМ. Для двигателей 1 и 2 этот аргумент
может принимать значения MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, или
MOTOR12_1KHZ. Для двигателей 3 и 4 этот аргумент
может принимать значения MOTOR34_64KHZ, MOTOR34_8KHZ, или MOTOR34_1KHZ.
Первый способ:
AF_DCMotor motor1(1); // Здесь для каждого двигателя указывается только
номер канала, а значение частоты PWM устанавливается по умолчанию - 1 кГц.
Второй способ:
AF_DCMotor left_motor (1, MOTOR12_64 кГц); // Здесь снова выбран канал 1.
Название канала "left_motor". Второй аргумент - значение частоты ШИМ.
Функция скорости двигателя:
Функция "setSpeed" С помощью этой функции можно установить частоту
вращения двигателя от 0 до 255. Например:
motor1.setSpeed (180); // Для "motor1" установлена скорость 180
Функция движения двигателя:
Функция "Run": позволяет включать двигатель в прямом и обратном направлении
и останавливать двигатель. Функция "Run" имеет три аргумента:
FORWARD - вперед
BACKWARD - назад
RELEASE - останов
Например:
motor1.run (FORWARD); // "motor1" включен в прямом направлении
motor1.run(RELEASE); // остановить
Функции управления шаговым двигателем
Вместо четырех моторов постоянного тока, к шилду можно подключить два
шаговых двигателя - один к каналам 1 и 2, второй к каналам 3 и 4.
AF_Stepper: Эта функция выполняется для описания шагового двигателя.
AF stepper motor_name (шаг, номер канала) - функция представляет собой
общее описание структуры шагового двигателя.
motor_name - имя, которое присваивается шаговому двигателю.
шаг - количество шагов на оборот для двигателя
номер канала - к какому каналу подключен двигатель (1 или 2).
step (шаг, направление, режим): Это определение шага и информации о
направлении для перехода в режим шагового двигателя.
шаг - задает требуемое число шагов. направление - В качестве параметра направление может выступать
FORWARD или BACKWARD ("ВПЕРЕД" или "НАЗАД"). режим - Здесь могут быть значения: SINGLE, DOUBLE, INTERLEAVE или
MICROSTEP. SINGLE означает возбуждение одной обмотки, DOUBLE означает что две
катушки возбуждаются одновременно, что способствует высокому крутящему моменту,
INTERLEAVE означает что происходит чередование между единственной катушкой и
двумя катушками, что дает более высокое разрешение, но половинную скорость.
MICROSTEP — это способ, при котором производится ШИМ для создания сглаженного
движения между шагами. Можно выбрать любой метод и изменять его "на ходу",
чтобы получить минимальную мощность, больший крутящий момент, или большую
точность.
Например:
Stepper1.step(150, FORWARD, DOUBLE); - Двигатель "Stepper1" поворачивается на
150 шагов вперед в режиме "DOUBLE".
setSpeed(rpm) - в качестве параметра rpm необходимо указать желаемое
число оборотов в минуту (об/мин).
Например:
Stepper1.setSpeed(10); - двигатель "Stepper1" будет вращаться со скоростью 10 об/мин.
OneStep(направление, режим) - реализует перемещение на один шаг двигателя.
Например:
Stepper1.onestep(FORWARD, DOUBLE); - аналогично функции step(), только на один шаг.
release(); - По умолчанию, двигатель удерживает свою позицию, после
того как к нему перестали обращаться. Если вы хотите разблокировать обмотки,
чтобы мотор смог свободно вращаться, необходимо вызвать функцию release ().
Эта функция уменьшает нагрев и снижает потребление тока, но двигатель не
сопротивляется вращению извне.
Например:
Stepper1.release();
Управление сервоприводами
Motor Shield L293D позволяет управлять двумя сервоприводами, которые подключаются
непосредственно к пинам 9 и 10 Arduino. Питание для сервоприводов подается от
5-ти вольтного стабилизатора Arduino, поэтому подключать дополнительное питание в
разъем EXT_PWR не нужно. А так как используется стандартный вывод PWM, то нет
смысла использовать дополнительную библиотеку, можно использовать стандартную
библиотекой Servo.h