DC мотор JGA25-370 с энкодером

1. Введение

JGA25-370 — это редукторный мотор-колесо с встроенным магнитным энкодером и муфтой. Энкодер позволяет точно измерять скорость вращения и пройденное расстояние, что важно для робототехники и систем позиционирования.

Чертёж мотора JGA25-370

Точные размеры мотора

Размеры мотора с колесом в сборе

Размеры мотора с колесом в сборе

2. Технические характеристики

Параметр

Значение

Модель

JGA25-370

Напряжение питания

6-12V DC

Передаточное число редуктора

1:34

Скорость вращения (без нагрузки)

171 об/мин

Разрешение энкодера

11 импульсов на оборот вала мотора

Импульсов на оборот выходного вала

11 × 34 = 374 импульса

Напряжение энкодера

3.3V - 5V

Таблица характеристик мотора

Характеристики мотора в зависимости от передаточного числа редуктора

3. Распиновка

Мотор JGA25-370 имеет 6 проводов:

Цвет

Назначение

Описание

Белый

M- (Motor-)

Минус мотора (можно поменять с красным для смены направления)

Синий

VCC

Питание энкодера (3.3-5V)

Зелёный

C1 (Phase A)

Сигнальный провод энкодера A (11 импульсов/оборот)

Жёлтый

C2 (Phase B)

Сигнальный провод энкодера B (11 импульсов/оборот)

Чёрный

GND

Минус питания энкодера

Красный

M+ (Motor+)

Плюс мотора (можно поменять с белым для смены направления)

Распиновка мотора JGA25-370

Распиновка проводов мотора

Совет

Чтобы изменить направление вращения мотора, поменяйте местами красный и белый провода (M+ и M-).

4. Необходимое оборудование

Кол-во

Деталь

1

Плата Arduino UNO / Nano / Mega

1

Мотор JGA25-370 с энкодером

1

Драйвер мотора L298N

1

Источник питания 12V

10+

Провода-перемычки

5. Схема подключения

Схема подключения JGA25-370 к Arduino

Схема подключения мотора к Arduino через L298N

Подключение L298N к Arduino:

L298N

Arduino

Описание

IN1

D5

Направление

IN2

D6

Направление

ENA

D9

PWM скорость

GND

GND

Общая земля

Подключение энкодера к Arduino:

Энкодер

Arduino

Описание

Синий (VCC)

5V

Питание энкодера

Чёрный (GND)

GND

Земля

Зелёный (C1)

D2

Канал A (прерывание)

Жёлтый (C2)

D3

Канал B (опционально)

Предупреждение

Обязательно соедините GND Arduino и GND источника питания!

6. Пример кода: Тест энкодера

Простой тест — крутим мотор 5 секунд и считаем импульсы:

encoder_test.ino
// Пины энкодера
#define ENCODER_A 2

// Пины мотора
#define MOTOR_IN1 5
#define MOTOR_IN2 6
#define MOTOR_PWM 9

volatile long pulses = 0;

void countPulse() {
  pulses++;
}

void setup() {
  Serial.begin(115200);
  pinMode(ENCODER_A, INPUT_PULLUP);
  pinMode(MOTOR_IN1, OUTPUT);
  pinMode(MOTOR_IN2, OUTPUT);
  pinMode(MOTOR_PWM, OUTPUT);

  attachInterrupt(digitalPinToInterrupt(ENCODER_A), countPulse, RISING);

  Serial.println("=== Крутим 5 секунд ===");
}

void loop() {
  static unsigned long startTime = 0;
  static unsigned long lastPrint = 0;
  static bool running = false;

  // Если не запущен - запускаем
  if (!running) {
    pulses = 0;
    startTime = millis();
    running = true;

    // Запуск мотора
    digitalWrite(MOTOR_IN1, HIGH);
    digitalWrite(MOTOR_IN2, LOW);
    analogWrite(MOTOR_PWM, 128);
  }

  // Показываем импульсы каждые 200мс
  if (millis() - lastPrint >= 200) {
    Serial.print("Импульсов: ");
    Serial.println(pulses);
    lastPrint = millis();
  }

  // Через 5 секунд - стоп
  if (millis() - startTime >= 5000) {
    // Стоп
    digitalWrite(MOTOR_IN1, LOW);
    digitalWrite(MOTOR_IN2, LOW);
    analogWrite(MOTOR_PWM, 0);

    Serial.print("\nСТОП! Всего импульсов: ");
    Serial.println(pulses);

    delay(2000);  // Пауза 2 сек
    Serial.println("\n--- Заново ---\n");

    running = false;
  }
}

7. Расчёт оборотов

Формула для расчёта оборотов выходного вала:

Обороты = Импульсы / (PPR × Передаточное_число)
Обороты = Импульсы / (11 × 34)
Обороты = Импульсы / 374

Например, если за 5 секунд насчитали 2000 импульсов:

Обороты = 2000 / 374 ≈ 5.3 оборота
RPM = 5.3 / 5 × 60 ≈ 64 об/мин (при PWM 128)

8. Частые ошибки

Проблема

Решение

Энкодер не считает импульсы

Проверьте питание энкодера (синий на 5V, чёрный на GND)

Мотор не вращается

Проверьте подключение L298N и питание 12V

Неправильное количество импульсов

Убедитесь что передаточное число 1:34 (может отличаться)

9. Практические задачи

  1. Рассчитайте пройденное расстояние, зная диаметр колеса

  2. Добавьте второй канал энкодера для определения направления

  3. Реализуйте PID-регулятор для поддержания заданной скорости


См. также