Электронный компонент:Контроллер электродвигателей Hercules Dual 15A 6-20V

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1852 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Контроллер электродвигателей Hercules Dual 15A 6-20V[1]

Hercules 03 1.jpg

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 можно по этой ссылке.

Функционал

Характеристики

Параметр Минимум Типично Максимум Единица измерения
Рабочее напряжение 6.0 - 20.0 Вольты(постоянный ток)
Сила тока мотора на канал - - 15 Амперы
Входное/выходное напряжение - 5 - Вольты(постоянный ток)
Входная/выходная TTL-коммуникация - 5 - Вольты(постоянный ток)
Температура -40 - +125 Градусы Цельсия

Расположение компонентов

4WD Robot Controller Interface Function 2.jpg

Коннекторы

  • Коннекторы для энкодеров. В моторы платформы 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-кабеля
Hercules Dual 15A 6-20V Motor Controller 3.JPG
  • Загрузите библиотеку «Motor Controller» и запустите демо-скетч «motorDriverDemo»:
  1. #include "motordriver_4wd.h"
  2.     #include <seeed_pwm.h>
  3.  
  4.     void setup()
  5.     {
  6.         MOTOR.init();  //  инициализируем все контакты
  7.     }
  8.  
  9.     void loop()
  10.     {
  11.         MOTOR.setSpeedDir(DIRF, 80); // задаем направление и скорость
  12.                                      // для моторов 1 и 2;
  13.                                      // направление – это «DIRF»,
  14.                                      // а скорость – это «80»;
  15.                                      // диапазон скорости: 0-100
  16.         delay(3000);
  17.         MOTOR.setSpeedDir(DIRR, 80); // задаем направление и скорость
  18.                                      // для моторов 1 и 2;
  19.                                      // направление – это «DIRR»,
  20.                                      // а скорость – это «80»;
  21.                                      // диапазон скорости: 0-100
  22.         delay(3000);
  23.     }

Примечание: Мотор может двигаться в двух направлениях – «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 – это основа всего устройства. Кроме того, 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

Remote Control 4.jpg

Примечание: О том, где находится батарейный коннектор на XBee Carrier, можно посмотреть на этой картинке. Ищите красную надпись «Battery Connector» в правой части схемы.

Ресивер

Для создания ресивера понадобятся следующие компоненты:

Модуль RFBee будет использоваться для беспроводной передачи данных, системная плата XBee Carrier – это основа проекта, оснащенная коннектором MiniUSB для загрузки кода на модуль RFBee, а контроллер электродвигателей Hercules Dual 15A 6-20V – для вращения моторов.

Далее проделайте следующее:

В нашем случае в качестве контроллера Hercules Dual 15A 6-20V используется мобильная робо-платформа 4WD Hercules, показанная на фото ниже:

4WD Robot Car Body 5.jpg
  • Загрузите и установите в IDE Arduino библиотеку «Motordriver 4wd». Затем кликните в IDE Arduino на Инструменты > Плата > Arduino Duemilanove w/ ATmega328 (Tools > Board > Arduino Duemilanove w/ ATmega328)
  • Загрузите на модуль RFBee вот этот скетч:
  1. // демо-скетч для модуля RFbee;
  2. // задача – получение и отправка данных
  3.     #include <Arduino.h>
  4.     #include <EEPROM.h>
  5.     #include <RFBeeSendRev.h>
  6.     #include <RFBeeCore.h>
  7.     #include <Wire.h>
  8.  
  9.     #define FRAMESTART1   0x53  //  блок данных для старта канала 1
  10.     #define FRAMESTART2   0x01  //  блок данных для старта канала 2
  11.     #define FRAMEEND1     0x2f  //  блок данных для остановки канала 1
  12.     #define FRAMEEND2     0x45  //  блок данных для остановки канала 2
  13.  
  14.     void sendToI2C(unsigned char ilen, unsigned char *idata)
  15.     {
  16.         //  передаем данные на устройство #4:
  17.         Wire.beginTransmission(4);
  18.         //  отправляем один байт:
  19.         for(int i = 0; i<ilen; i++) {Wire.write(idata[i]);}
  20.         // останавливаем передачу данных:
  21.         Wire.endTransmission();
  22.     }
  23.  
  24.     void setup(){
  25.  
  26.         pinMode(10, OUTPUT);
  27.         RFBEE.init();
  28.         Wire.begin();
  29.         Serial.begin(38400);
  30.         Serial.println("ok");
  31.     }
  32.  
  33.     unsigned char rxData1[200];       //  передаваемые данные
  34.     unsigned char len1;               //  размер данных
  35.     unsigned char srcAddress1;
  36.     unsigned char destAddress1;
  37.     char rssi1;
  38.     unsigned char lqi1;
  39.     int result1;
  40.  
  41.     unsigned char cntGetDta = 5;
  42.  
  43.     void loop()
  44.     {
  45.         if(RFBEE.isDta())
  46.         {
  47.             result1 = receiveData(rxData1, &len1, &srcAddress1, &destAddress1, (unsigned char *)&rssi1 , &lqi1);
  48.             Serial.println(len1);
  49.             for(int i = 0; i< len1; i++)
  50.             {
  51.                 Serial.print(rxData1[i]);Serial.print("\t");
  52.             }
  53.  
  54.             Serial.println();
  55.  
  56.             sendToI2C(6, rxData1);
  57.         }
  58.     }

Результат

Собранная р/у машина способна перевозить емкость с водой объемом до 19 литров.

4WD Robot 6.jpg

Полезные ссылки

См.также

Внешние ссылки

  1. wiki.seeed.cc - Hercules Dual 15A 6-20V Motor Controller