Робомото — драйвер моторов для робота на Arduino
Робомото — это модуль расширения для плат Arduino, который позволяет управлять моторами постоянного тока и сервомоторами.
Версия A2M5-12 предназначена для управления двумя моторами с рабочим током до 5 А и напряжением от 6 до 12 В.
Особенности
встроенный стабилизатор напряжения для питания микроконтроллера;
два драйвера моторов постоянного тока, которые подойдут для всех популярных в DIY моторов: JGA25, JGB37, 20GP-180 и пр;
кнопка выключения питания;
встроенный делитель напряжения для оценки напряжения на входе;
массив тройных штырьков для подключения прочей периферии к Arduino.
Моторы управляются по схеме IN1/IN2/EN. Подробная инструкция по управлению моторами.
Совет
См. также материал «Управление мотором постоянного тока» в разделе уроков AlashEd Wiki.
Подключение
Для питания Робомото используется подходящий источник с напряжением от 6 до 12 Вольт. Напряжение на входе коммутируется на моторы через драйверы, так что следует выбирать такое напряжение питания, которое подойдет к выбранным моторам.
Источник питания подключается к контактам VIN и GND.
Кнопка питания
На модуле Робомото имеется силовой ключ на базе МОП-транзистора. Выключатель PSW управляет током через этот транзистор и позволяет выключать и включать внешнее питание модуля.
Если доступ к встроенному выключателю затруднён, то с помощью соответствующих контактов можно подключить внешний выключатель.
Стабилизатор напряжения
Для удобного питания отладочной платы Arduino, на Робомото предусмотрен стабилизатор напряжения. Стабилизатор обеспечивает выходной ток до 3А, чего хватит и на питание микроконтроллера и на различную периферию, включая несколько сервомоторов типа SG90 или один мотор MG995.
Моторы
Моторы подключаются к винтовым клеммам M1 и M2.
Контакты GPIO
Все неиспользованные GPIO контакты Arduino выведены на массив трёхконтактных разъёмов. К таким разъёмам удобно подключать датчики и сервомоторы.
Индикация
Слева расположены индикаторы направления вращения мотора: IN1/IN2 и IN3/IN4. С помощью этих индикаторов можно оценивать направление вращения, даже если при этом сам мотор не подключен.
Индикатор 13 — это штатный светодиод платы Arduino, выведенный на контакт D13.
Наконец, PWR — это индикатор выходного питания на стабилизаторе.
Дополнительно
Перемычка VSENSE подключает делитель напряжения к контакту Arduino — A0. Вход делителя подключен к входному напряжению VIN. Отношение делителя : 5/1, то есть при напряжении 12В на VIN делитель даст 2,4 В.
С помощью делителя можно оценивать входное напряжение.
Перемычки MCU позволяют выбрать подходящий источник питания для Arduino:
если перемычка MCU стоит на VIN, то VIN модуля подключается к контакту Vin на Arduino;
если перемычка MCU стоит на 5V, то выход стабилизатора 5В подключается к контакту +5V на Arduino.
Программа
Драйвер управляется сигналами вида IN1/IN2/EN. Уровни IN1 и IN2 определяют направление вращения мотора. На EN передаётся ШИМ.
Напишем тестовую программу, которая будет вращать моторами в разные стороны. Установим на EN1 и EN2 сигнал ШИМ с коэффициентом заполнения 0,5.
const byte in1Pin = 4;
const byte in2Pin = 7;
const byte en1Pin = 5;
const byte in3Pin = 8;
const byte in4Pin = 12;
const byte en2Pin = 6;
void setup() {
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(en1Pin, OUTPUT);
pinMode(in3Pin, OUTPUT);
pinMode(in4Pin, OUTPUT);
pinMode(en2Pin, OUTPUT);
// коэффициент заполнения ШИМ - 0,5
analogWrite(en1Pin, 128);
analogWrite(en2Pin, 128);
}
void loop() {
// моторы вперёд
digitalWrite(in1Pin, HIGH);
digitalWrite(in2Pin, LOW);
digitalWrite(in3Pin, HIGH);
digitalWrite(in4Pin, LOW);
delay(1000);
// стоп моторы
digitalWrite(in1Pin, LOW);
digitalWrite(in2Pin, LOW);
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, LOW);
delay(1000);
// моторы назад
digitalWrite(in1Pin, LOW);
digitalWrite(in2Pin, HIGH);
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, LOW);
delay(1000);
// stop
digitalWrite(in1Pin, LOW);
digitalWrite(in2Pin, LOW);
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, LOW);
delay(1000);
}