Общие сведения
Мотор-редуктор (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х шлейф