Электронный компонент:Контроллер электродвигателей Hercules Dual 15A 6-20V
Контроллер электродвигателей Hercules Dual 15A 6-20V[1]
Hercules Dual 15A 6-20V – это высокоамперная плата для управления электродвигателями. Она состоит из микроконтроллера, цепи для управления моторами, а также цепей для зарядки и защиты. Это комплексное решение, способное и обеспечивать проект питанием, и управлять им.
В отличие от драйвера L298, полумостовой драйвер IR2104 и N-канальный МОП-транзистор (которыми оснащен Hercules Dual 15A 6-20V) способны управлять даже высокомощными моторами, сила тока которых составляет до 15 ампер. Кроме того, контроллер Hercules Dual 15A 6-20V, как можно судить из названия, рассчитан на высокое напряжение, поэтому от него можно питать литий-полимерные батареи на 7.4 – 11.1 вольт, которыми оснащаются, к примеру, радиоуправляемые машины и модели самолетов. За защиту от перегрузок отвечают предохранитель и светодиод, показывающий статус защиты этим предохранителем.
Контроллер Hercules Dual 15A 6-20V совместим с Arduino. Более того, он как раз рассчитан на то, чтобы проект, создаваемый на его основе, можно было расширять. Для этого контроллер оснащен несколькими Grove-коннекторами для подключения сервомоторов, энкодеров, датчиков и т.д., благодаря которым проект можно сделать многофункциональным.
Купить контроллер электродвигателей Hercules Dual 15A 6-20V можно по этой ссылке.
Функционал
- Драйверная цепь на базе МОП-транзистора, который поддерживает два независимых канала – каждый по 15 ампер
- Светодиод, показывающий статус защиты предохранителем
- Несколько Grove-коннекторов, через которые к плате удобно подключать сервомоторы, энкодеры и датчики
- Контроллер ATmega328, совместимый с Arduino
Характеристики
Параметр | Минимум | Типично | Максимум | Единица измерения |
---|---|---|---|---|
Рабочее напряжение | 6.0 | - | 20.0 | Вольты(постоянный ток) |
Сила тока мотора на канал | - | - | 15 | Амперы |
Входное/выходное напряжение | - | 5 | - | Вольты(постоянный ток) |
Входная/выходная TTL-коммуникация | - | 5 | - | Вольты(постоянный ток) |
Температура | -40 | - | +125 | Градусы Цельсия |
Расположение компонентов
- А – коннекторы для энкодеров
- B – коннекторы для Grove-модулей
- C – коннекторы для сервомоторов
- D – чип ATmega328P
- E – коннектор для коммуникации SPI
- F – коннектор для программирования
- G – кнопка сброса
- H – перегорающий предохранитель для канала 1
- J – перегорающий предохранитель для канала 2
- K – винтовые зажимы для DC-мотора, подключенного к каналу 1
- L – винтовые зажимы для DC-мотора, подключенного к каналу 2
- M – винтовые зажимы для подключения входных линий от батареи
Коннекторы
- Коннекторы для энкодеров. В моторы платформы Hercules встроены энкодеры для измерения их скорости. Контроллер Hercules Dual 15A 6-20V оснащен двумя коннекторами для подключения этих энкодеров. Кроме того, эти коннекторы позволяют питать каждый энкодер 5 вольтами постоянного тока.
- Коннекторы для сервомоторов. Оснащены тремя контактами – GND, +5V и контактом для передачи данных. Коннекторы такого типа используются, как правило, для изменения угла сервомотора.
- Винтовые зажимы для подключения батареи. Помечены на плате надписями «GND»' и «VM». Зажим VM – для положительного, а зажим GND – для отрицательного вывода батареи. Чтобы избежать повреждения платы, входное напряжение должно быть в диапазоне 6-20 вольт.
- Винтовые зажимы для подключения моторов. Зажимы для канала 1 – это M1A/M1B, а для канала 2 – M2A/M2B. Каких-то специальных полюсов у моторов нет. Если мотор вращается в неправильном направлении, поменяйте провода мотора местами. Обратите внимание, что J20&J21 и J22&J23 подключены параллельно, поэтому 2 левых мотора следует подключать к одному каналу, а два правых – к другому.
Использование
Примечание: Контроллер Hercules Dual 15A 6-20V нельзя питать напрямую через программный коннектор (т.е. коннектор, который подключается к ПК для загрузки кода).
Контроллер нужно питать от зажимов J1, подключенных к батарее или другому источнику постоянного тока (6-20 вольт). Кроме того, для защиты Н-мостов контроллер использует два 15-амперных предохранителя. Подключив питание, проделайте следующее:
- Подключите DC-мотор к винтовым зажимам канала 1
- Подключите контроллер к компьютеру при помощи модуля UartSBee V4 и USB-кабеля
- Загрузите библиотеку «Motor Controller» и запустите демо-скетч «motorDriverDemo»:
#include "motordriver_4wd.h"
#include <seeed_pwm.h>
void setup()
{
MOTOR.init(); // инициализируем все контакты
}
void loop()
{
MOTOR.setSpeedDir(DIRF, 80); // задаем направление и скорость
// для моторов 1 и 2;
// направление – это «DIRF»,
// а скорость – это «80»;
// диапазон скорости: 0-100
delay(3000);
MOTOR.setSpeedDir(DIRR, 80); // задаем направление и скорость
// для моторов 1 и 2;
// направление – это «DIRR»,
// а скорость – это «80»;
// диапазон скорости: 0-100
delay(3000);
}
Примечание: Мотор может двигаться в двух направлениях – «DIRF» (т.е. вперед) и «DIRR» (т.е. назад). Если мотор вращается в неправильном направлении, поменяйте местами провода, через которые мотор подключен к контроллеру.
- Отключите контроллер от компьютера
- Через винтовые зажимы «GND» и «VM» подключите к контроллеру батарею или источник постоянного тока
- Теперь мотор должен вращаться с заданной скоростью
Функции
В демо-скетче «motorDriverDemo» используются две функции из библиотеки «Motor Controller». О них, а также о нескольких других читайте ниже:
- Функция setStop1(). Останавливает мотор 1
- Функция setStop2(). Останавливает мотор 2
- Функция setSpeedDir(). Задает направление и скорость вращения моторов 1 и 2
- Функция setSpeedDir1(). Задает направление и скорость вращения мотора 1
- Функция setSpeedDir2(). Задает направление и скорость вращения мотора 2
Расширенное использование
На базе контроллера Hercules Dual 15A 6-20V можно сделать радиоуправляемую машину – мощную и обладающую хорошей амортизацией. Этот проект будет состоять из двух частей: самой машины и ресивера.
Пульт управления
Для создания пульта управления понадобятся следующие компоненты:
- Модуль RFBee
- Grove-модуль с регулятором
- Системная плата XBee Carrier с Grove-коннекторами
- Батарея
Модуль RFBee будет использоваться для беспроводной передачи данных, Grove-модуль с регулятором – для управления машиной, а системная плата XBee Carrier – это основа всего устройства. Кроме того, XBee Carrier оснащена портом MiniUSB, через который мы будем загружать код на модуль RFBee.
Примечание: Чтобы обойтись без батареи, пульт управления можно запитать от ПК через USB-кабель.
Чтобы создать пульт, проделайте следующее:
- Вставьте модуль RFBee в сокет Bee на системной плате XBee Carrier
- Загрузите библиотеку «RFBee» и установите ее в IDE Arduino
- Откройте в IDE Arduino скетч «Remote Ivc». Далее кликните в IDE Arduino на Инструменты > Плата > Arduino Pro or Pro Mini (Tools > Board > Arduino Pro or Pro Mini).
Затем выберите в меню Инструменты > Порт (Tools > Port) коннектор, через который контроллер подключен к ПК. Наконец, загрузите этот скетч на модуль RFBee
- Подключите Grove-модуль с регулятором к системной плате XBee Carrier
- Подключите батарею к XBee Carrier через батарейный коннектор
Примечание: О том, где находится батарейный коннектор на XBee Carrier, можно посмотреть на этой картинке. Ищите красную надпись «Battery Connector» в правой части схемы.
Ресивер
Для создания ресивера понадобятся следующие компоненты:
- Модуль RFBee
- Системная плата XBee Carrier
- Контроллер электродвигателей Hercules Dual 15A 6-20V
Модуль RFBee будет использоваться для беспроводной передачи данных, системная плата XBee Carrier – это основа проекта, оснащенная коннектором MiniUSB для загрузки кода на модуль RFBee, а контроллер электродвигателей Hercules Dual 15A 6-20V – для вращения моторов.
Далее проделайте следующее:
- Подключите модуль RFBee к системной плате XBee Carrier
- Подключите Grove-коннектор I2C на XBee Carrier к Grove-коннектору I2C на контроллере электродвигателей Hercules Dual 15A 6-20V
- Подключите четыре мотора к винтовым зажимам M1A, M1B, M2A, M2B на контроллере Hercules Dual 15A 6-20V
В нашем случае в качестве контроллера Hercules Dual 15A 6-20V используется мобильная робо-платформа 4WD Hercules, показанная на фото ниже:
- Загрузите и установите в IDE Arduino библиотеку «Motordriver 4wd». Затем кликните в IDE Arduino на Инструменты > Плата > Arduino Duemilanove w/ ATmega328 (Tools > Board > Arduino Duemilanove w/ ATmega328)
- Загрузите на модуль RFBee вот этот скетч:
// демо-скетч для модуля RFbee;
// задача – получение и отправка данных
#include <Arduino.h>
#include <EEPROM.h>
#include <RFBeeSendRev.h>
#include <RFBeeCore.h>
#include <Wire.h>
#define FRAMESTART1 0x53 // блок данных для старта канала 1
#define FRAMESTART2 0x01 // блок данных для старта канала 2
#define FRAMEEND1 0x2f // блок данных для остановки канала 1
#define FRAMEEND2 0x45 // блок данных для остановки канала 2
void sendToI2C(unsigned char ilen, unsigned char *idata)
{
// передаем данные на устройство #4:
Wire.beginTransmission(4);
// отправляем один байт:
for(int i = 0; i<ilen; i++) {Wire.write(idata[i]);}
// останавливаем передачу данных:
Wire.endTransmission();
}
void setup(){
pinMode(10, OUTPUT);
RFBEE.init();
Wire.begin();
Serial.begin(38400);
Serial.println("ok");
}
unsigned char rxData1[200]; // передаваемые данные
unsigned char len1; // размер данных
unsigned char srcAddress1;
unsigned char destAddress1;
char rssi1;
unsigned char lqi1;
int result1;
unsigned char cntGetDta = 5;
void loop()
{
if(RFBEE.isDta())
{
result1 = receiveData(rxData1, &len1, &srcAddress1, &destAddress1, (unsigned char *)&rssi1 , &lqi1);
Serial.println(len1);
for(int i = 0; i< len1; i++)
{
Serial.print(rxData1[i]);Serial.print("\t");
}
Serial.println();
sendToI2C(6, rxData1);
}
}
Результат
Собранная р/у машина способна перевозить емкость с водой объемом до 19 литров.