DC мотор JGA25-370 с энкодером
1. Введение
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+) |
Плюс мотора (можно поменять с белым для смены направления) |
Распиновка проводов мотора
Совет
Чтобы изменить направление вращения мотора, поменяйте местами красный и белый провода (M+ и M-).
4. Необходимое оборудование
Кол-во |
Деталь |
|---|---|
1 |
Плата Arduino UNO / Nano / Mega |
1 |
Мотор JGA25-370 с энкодером |
1 |
Драйвер мотора L298N |
1 |
Источник питания 12V |
10+ |
Провода-перемычки |
5. Схема подключения
Схема подключения мотора к 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 секунд и считаем импульсы:
// Пины энкодера
#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. Практические задачи
Рассчитайте пройденное расстояние, зная диаметр колеса
Добавьте второй канал энкодера для определения направления
Реализуйте PID-регулятор для поддержания заданной скорости
См. также
Урок 21: Управление Сервоприводом — Управление сервоприводом
Урок 22: Шаговый Двигатель — Шаговый двигатель