Общие сведения
Мотор-редуктор (620 об/мин) — реверсно-коллекторный электромотор с металлическим цилиндрическим редуктором и энкодером на ведущем валу.
Мотор имеет широкое применение: робототехника / детские игрушки / бытовая техника и т.д.
Характеристики
- Питание мотора: 12В;
 - Питание энкодера: от 3,3 до 5В;
 - Скорость без нагрузки: 620 об/мин; (до 700)
 - Передаточное отношение редуктора: 1:14,5
 - Количество магнитов на энкодер: 7
 - Потребление тока без нагрузки: 80мА;
 - Потребление тока под рабочей нагрузкой: 380мА;
 - Потребление тока под максимальной нагрузкой: 1300мА;
 - Размеры, мм (±0,2):
- A: 17
 - B: 12
 
 

Подключение
Мотор оснащен разъемом из 6 выводов который используется для подключения.
- Выводы M, M (Motor) являются входами питания мотора (номинально 12В).
 - Выводы S, S (Signal) являются выходами датчиков Холла энкодера.
 - Выводы G, V (GND, Vcc) являются входами питания энкодера (номинально 5В).
 
Энкодер: устройство позволяющее определять наличие и направление поворотов. На моторах, чаще всего, устанавливают оптические или магнитные энкодеры.
На представленный мотор установлен магнитный энкодер состоящий из двух датчиков Холла и магнитного диска. Магнитный диск установлен валу ротора и имеет по 7 одноимённых магнитных полюсов.
Подключение к Arduino через любые драйверы:
- Выводы мотора M, M можно подключать через ключ, через любой драйвер коллекторных моторов, через выключатель или напрямую к питанию от 1В до 12В. Полярность питания определяет направление вращения мотора.
 - Питание энкодера осуществляется через выводы G, V. При подключении необходимо соблюдать полярность: G (GND) общий вывод энкодера и Arduino, V (Vcc) = +3,3В ... +5В.
 - Считывать количество совершённых оборотов и их направление можно с выводов S, S которые подключаются к Arduino.
 
Пример подсчёта оборотов:
//  Определяем выводы S энкодера мотора:  //
int pin_S1 = 2;                           // Вывод Arduino с поддержкой внешних прерываний (вывод 2 или 3 для Arduino Uno, Nano, ProMini).
int pin_S2 = 5;                           // Любой вывод Arduino.
                                          // 
volatile long counter = 0;                // Определяем счётчик.
                                          // 
void setup(){                             // 
     Serial.begin(9600);                  // Инициируем передачу данных в монитор на скорости 9600 бит/сек.
     pinMode(pin_S1, INPUT);              // Конфигурируем вывод Arduino pin_S1 как вход.
     pinMode(pin_S2, INPUT);              // Конфигурируем вывод Arduino pin_S2 как вход.
     int i=digitalPinToInterrupt(pin_S1); // Получаем номер прерывания вывода pin_S1.
     attachInterrupt(i, myFunc, RISING);  // Определяем функцию myFunc как обработчик прерываний.
}                                         // 
                                          //
void loop(){                              //
     float i=counter/7/14.5;              // Определяем количество полных оборотов = счётчик/количество магнитов/передаточное отношение.
     Serial.println(i);                   // Выводим количество полных оборотов.
     delay(1000);                         // Мы ждём, а прерывания продолжают считаться.
}                                         //
                                          //
void myFunc(){                            // Функция вызывается по прерываниям.
     if(digitalRead(pin_S2))              // Если на выводе pin_S2 установлен высокий логический уровень...
     {counter+=1;}else{counter-=1;}       // то увеличиваем счётчик, иначе уменьшаем его.
}                                         //
Данный пример выводит в монитор последовательного порта количество совершённых оборотов. При вращении мотора в одну сторону, они будут положительными, а при вращении в другую, отрицательными.
Управление скоростью и направлением мотора осуществляется при помощи тех устройств, через которые мотор подключён к своему питанию.
Подключение к Arduino через драйвер FLASH-I2C:
Драйвер моторов с управляющим контроллером, FLASH-I2C позволяет задавать скорость вращения мотора в %, об/мин и даже в м/с. Останавливать двигатель по истечении заданного времени, пройденного расстояния или совершённых оборотов. Узнавать реальную скорость вращения вала, даже если мотор отключён, а вал вращается по средством внешних сил.
- Мотор подключается к драйверу по 6 проводам, как показано на картинке (цвет проводов может отличаться).
 - Подключение драйвера к ардуино осуществляется по шине I2C.
 - Инструкция по подключению мотора к драйверу и драйвера к Arduino.
 

Пример установки скорости и чтения оборотов:
#include <iarduino_I2C_Motor.h>                          // Подключаем библиотеку для работы с мотором I2C-flash.
iarduino_I2C_Motor mot(0x09);                            // Объявляем объект mot для работы с функциями и методами библиотеки iarduino_I2C_Motor, указывая адрес модуля на шине I2C.
                                                         // Если объявить объект без указания адреса (iarduino_I2C_Motor mot;), то адрес будет найден автоматически.
void setup(){                                            //
     Serial.begin(9600);                                 // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бит/сек.
     mot.begin();                                        // Инициируем работу с модулем.
//   Настройка модуля под мотор-редуктор 25MM 620RPM:    //
     mot.setVoltage    ( 12.0       );                   // Указываем номинальное напряжение (В).
     mot.setNominalRPM ( 620        );                   // Указываем номинальную скорость вращения вала (об/мин).
     mot.setReducer    ( 14.5       );                   // Указываем передаточное отношение редуктора.
     mot.setInvGear    ( true, true );                   // Указываем флаги инверсии (инверсия вращения редуктора, вращение ротора против ч.с.).
     mot.setMagnet     ( 7          );                   // Указываем количество магнитов или щелей на диске энкодера.
//   Настраиваем левое/правое колесо:                    //
//   mot.setDirection  ( true       ); // Правое колесо. // Прямое   вращение (    по часовой стрелке при положительных скоростях).
//   mot.setDirection  ( false      ); // Левое  колесо. // Обратное вращение (против часовой стрелки при положительных скоростях).
//   mot.setStopNeutral( true       );                   // Включать нейтралку при остановке мотора (ротор мотора будет свободен при остановке).
//   mot.setStopNeutral( false      );                   // Не включать нейтралку при остановке мотора (ротор мотора будет застопорен при остановке).
}                                                        //
                                                         //
void loop(){                                             //
     float i;                                            //
//   Запускаем мотор:                                    //
     mot.setSpeed( 200, MOT_RPM );                       // Запускаем мотор на скорости 200об/мин.
//   Ждём 10 секунд:                                     //
     for(int j=0; j<10; j++){                            //
         delay(1000);                                    // Ждём.
         i=mot.getSpeed( MOT_RPM );                      // Получаем реальную скорость в об/мин.
         Serial.println((String)"Скорость "+i+"об/мин.");// Выводим полученное значение в монитор последовательного порта.
     }                                                   //
//   Останавливаем мотор:                                //
     mot.setStop();                                      // Запускаем мотор на скорости 200об/мин.
     Serial.println( "Остановка.");                      // Выводим полученное значение в монитор последовательного порта.
     delay(1000);                                        // Ждём.
}                                                        //
В данном скетче мотор запускается на скорости 200 об/мин (допускается указывать любую скорость до номинальной для мотора). Эта скорость поддерживается драйвером мотора. Значит при управлении машиной, она будет ехать с одинаковой скоростью в горку, с горки, без груза и с грузом.
Скетч выводит реальную скорость вращения вала в монитор последовательного порта.
Комплектация
- 1х мотор-редуктор (620 об/мин);
 - 1х шлейф
 
      



          
          













