Моторы — сила машины
👁️ SENSE → 🧠 THINK → 💪 ACT
┌──────┐
│ ??? │ ← Сегодня!
└──────┘
Датчики собрали данные, мозг принял решение.
Теперь нужно действовать!
Мотор превращает электричество в вращение.
🔋 Электричество → ⚙️ Мотор → 🔄 Вращение вала
Электромагнетизм! (физика 8 класса)
Магнит Катушка с током Магнит
N ←────── N ──────→ S
│ │ │
└──── отталкиваются ─────────┘
↓
Вал крутится!
Меняем направление тока → вал крутится в другую сторону.
| Тип | Для чего | Пример |
|---|---|---|
| DC мотор | Просто крутиться | Вентилятор, машинка |
| Серво | Повернуть на угол | Рука робота |
| Шаговый | Точные шаги | 3D-принтер |
+5V ──────┐
│
┌──┴──┐
│ M │ ← DC мотор
└──┬──┘
│
GND ──────┘
Подал напряжение → крутится!
| Действие | Как сделать |
|---|---|
| Быстрее | Больше напряжения |
| Медленнее | Меньше напряжения (или PWM) |
| Реверс | Поменять + и - местами |
Arduino даёт максимум 40 mA на пин.
Мотор хочет 200-500 mA!
Arduino ─────✕───── Мотор
НЕ ХВАТИТ ТОКА!
Решение: Драйвер мотора (L298N, TB6612)
┌───────────┐
Arduino ────────┤ ├──────── Мотор 1
(управление) │ L298N │
│ ├──────── Мотор 2
Батарея ────────┤ │
(сила) └───────────┘
Arduino командует, батарея даёт силу.
Pulse Width Modulation — широтно-импульсная модуляция.
100% ████████████████████ (полная скорость)
50% ████████░░░░░░░░░░░░ (половина)
25% ████░░░░░░░░░░░░░░░░ (четверть)
Мотор «не замечает» мигания и крутится плавно!
Команда: "Повернись на 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 кг·см | Большие проекты |
Обычный DC: ──────────────────────► (крутится)
Шаговый: ─┬─┬─┬─┬─┬─┬─┬─┬─┬─► (шаг-шаг-шаг)
│ │ │ │ │ │ │ │ │
1.8° на каждый шаг
200 шагов = 1 оборот (у типичного NEMA17)
Когда важна точность, а не скорость:
Нужен драйвер (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 |
| Поворот камеры | Серво |
Почему нельзя подключить мотор напрямую к Arduino?
A) Мотор сгорит
B) Arduino не даст достаточно тока
C) Мотору нужен переменный ток
B) Arduino не даст достаточно тока!
Максимум 40 mA с пина, а мотору нужно 200-500 mA.
Используй драйвер!
Какой мотор выбрать для точного поворота на 45°?
A) DC мотор
B) Сервопривод
C) Любой
B) Сервопривод!
myServo.write(45); // Вот так просто!
| Тип | Особенность | Применение |
|---|---|---|
| DC | Просто крутится | Колёса, вентиляторы |
| Серво | Точный угол | Суставы, рули |
| Шаговый | Точные шаги | Принтеры, ЧПУ |
⚡ Моторам нужен драйвер — Arduino слишком слабый!
📚 DC моторы
📚 Сервоприводы
📚 Шаговые моторы
📚 BLDC (бесколлекторные)
Практика: соберём робота, который объезжает препятствия!