⚙️ Мышцы робота

Урок 1.3 | Level 1: Новобранец

Моторы — сила машины

Вспоминаем

     👁️ SENSE   →   🧠 THINK   →   💪 ACT
                                   ┌──────┐
                                   │  ???  │ ← Сегодня!
                                   └──────┘

Датчики собрали данные, мозг принял решение.
Теперь нужно действовать!

Что такое мотор?

Простыми словами

Мотор превращает электричество в вращение.

🔋 Электричество → ⚙️ Мотор → 🔄 Вращение вала

Как это работает?

Электромагнетизм! (физика 8 класса)

  Магнит      Катушка с током      Магнит
    N    ←────── N ──────→    S
    │              │              │
    └──── отталкиваются ─────────┘
           Вал крутится!

Меняем направление тока → вал крутится в другую сторону.

Три главных типа моторов

ТипДля чегоПример
DC моторПросто крутитьсяВентилятор, машинка
СервоПовернуть на уголРука робота
ШаговыйТочные шаги3D-принтер

DC мотор (постоянного тока)

Самый простой мотор

    +5V ──────┐
           ┌──┴──┐
           │  M  │  ← DC мотор
           └──┬──┘
    GND ──────┘

Подал напряжение → крутится!

Как управлять?

ДействиеКак сделать
БыстрееБольше напряжения
МедленнееМеньше напряжения (или PWM)
РеверсПоменять + и - местами

Проблема: Arduino слабый!

Arduino даёт максимум 40 mA на пин.
Мотор хочет 200-500 mA!

Arduino ─────✕───── Мотор
         НЕ ХВАТИТ ТОКА!

Решение: Драйвер мотора (L298N, TB6612)

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

                  ┌───────────┐
  Arduino ────────┤           ├──────── Мотор 1
  (управление)    │   L298N   │
                  │           ├──────── Мотор 2
  Батарея ────────┤           │
  (сила)          └───────────┘

Arduino командует, батарея даёт силу.

PWM — регулируем скорость

Pulse Width Modulation — широтно-импульсная модуляция.

100% ████████████████████  (полная скорость)
 50% ████████░░░░░░░░░░░░  (половина)
 25% ████░░░░░░░░░░░░░░░░  (четверть)

Мотор «не замечает» мигания и крутится плавно!

Сервопривод (Servo)

Мотор, который знает свой угол!

Команда: "Повернись на 90°"

   0°        45°        90°       135°      180°
   │          │          │          │          │
   ▼          ▼          ▼          ▼          ▼
   ┌──────────────────────────────────────────┐
   │                  ────►                    │ ← Качалка
   └──────────────────────────────────────────┘

Внутри серво: DC мотор + редуктор + потенциометр + контроллер.

Как управлять серво?

Один провод для сигнала (PWM):

#include <Servo.h>

Servo myServo;

void setup() {
  myServo.attach(9);  // Пин 9
}

void loop() {
  myServo.write(0);    // Поворот на 0°
  delay(1000);
  myServo.write(90);   // Поворот на 90°
  delay(1000);
  myServo.write(180);  // Поворот на 180°
  delay(1000);
}

Применение серво

  • 🦾 Суставы роботов-манипуляторов
  • ✈️ Рули самолётов и дронов
  • 🚪 Замки и затворы
  • 👀 Поворот камеры

Популярные серво

МодельРазмерМоментДля чего
SG90Микро1.8 кг·смУчебные проекты
MG996RСтандарт11 кг·смРоботы
DS3218Мощный20 кг·смБольшие проекты

Шаговый мотор (Stepper)

Мотор, который шагает!

Обычный DC:  ──────────────────────► (крутится)

Шаговый:     ─┬─┬─┬─┬─┬─┬─┬─┬─┬─► (шаг-шаг-шаг)
              │ │ │ │ │ │ │ │ │
           1.8° на каждый шаг

200 шагов = 1 оборот (у типичного NEMA17)

Зачем нужен?

Когда важна точность, а не скорость:

  • 🖨️ 3D-принтеры
  • 📷 Фокусировка камеры
  • 🔬 Научное оборудование
  • 🏭 ЧПУ-станки

Как управлять?

Нужен драйвер (A4988, DRV8825, TMC2209):

        ┌─────────┐
Arduino─┤ STEP    ├─── Импульс = 1 шаг
        │ A4988   │
Arduino─┤ DIR     ├─── Направление
        │         │
        │         ├─── Мотор (4 провода)
        └─────────┘

Код для шагового мотора

const int STEP_PIN = 3;
const int DIR_PIN = 4;

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
}

void loop() {
  digitalWrite(DIR_PIN, HIGH);  // Направление
  
  // 200 шагов = 1 оборот
  for (int i = 0; i < 200; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(1000);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(1000);
  }
  
  delay(1000);
}

Сравнение моторов

ХарактеристикаDCСервоШаговый
УправлениеНапряжениеУголШаги
Точность❌ Низкая✅ Средняя✅✅ Высокая
Скорость✅✅ Высокая✅ Средняя❌ Низкая
Момент✅ Хороший✅ Хороший✅ Хороший
Цена$$$$$$

Когда что использовать?

ЗадачаЛучший выбор
Колёса роботаDC + энкодер
Рука манипулятораСерво
3D-принтерШаговый
ВентиляторDC
Поворот камерыСерво

Проверь себя

Вопрос 1

Почему нельзя подключить мотор напрямую к Arduino?

A) Мотор сгорит
B) Arduino не даст достаточно тока
C) Мотору нужен переменный ток

Ответ 1

B) Arduino не даст достаточно тока!

Максимум 40 mA с пина, а мотору нужно 200-500 mA.
Используй драйвер!

Вопрос 2

Какой мотор выбрать для точного поворота на 45°?

A) DC мотор
B) Сервопривод
C) Любой

Ответ 2

B) Сервопривод!

myServo.write(45);  // Вот так просто!

Итоги урока

Моторы = мышцы робота

ТипОсобенностьПрименение
DCПросто крутитсяКолёса, вентиляторы
СервоТочный уголСуставы, рули
ШаговыйТочные шагиПринтеры, ЧПУ

Не забывай:

⚡ Моторам нужен драйвер — Arduino слишком слабый!

Подробнее в справочнике

📚 DC моторы
📚 Сервоприводы
📚 Шаговые моторы
📚 BLDC (бесколлекторные)

Следующий урок

🔧 Собираем робота!

Урок 1.4: Первый робот →

Практика: соберём робота, который объезжает препятствия!