Введение в робототехнику: типы моторов
Мотор - это то, что превращает код в движение. От выбора мотора зависит всё остальное: какое нужно питание, какой контроллер, по какой шине с ним говорить, сколько будет стоить сустав и сможет ли робот вообще встать. Эта статья - обзорная карта: как устроены основные типы моторов, чем их питать и чем ими управлять, где их купить, и что брать под три типичных задачи - силовую платформу от 100 кг, шагающего робота до 100 кг и колёсного робота до 30 кг.
Цены - ориентировочные на сентябрь 2026 года, взяты с сайтов магазинов по ссылкам. В разных регионах добавляются доставка, НДС и пошлины.
- Базовые понятия: момент, KV, редуктор, FOC
- Карта типов моторов
- Коллекторные (brushed) DC
- Хобби-сервоприводы и умные сервы
- Бесколлекторные (BLDC) для дронов
- Гимбальные моторы (direct drive)
- BLDC + энкодер + планетарка + ODrive
- QDD и полностью интегрированные актуаторы
- Шаговые моторы
- Мотор-колёса (hub motors)
- Силовые: AC-сервы, червячные, линейные
- Сводная таблица
- Управление из софта
- Много моторов: шины и проводка
- Питание
- Сценарии: 100+ кг, шагающие, колёсные
Базовые понятия
Чтобы читать даташиты, достаточно десятка терминов.
Момент (Н·м)
Сила вращения. 1 Н·м - это 1 ньютон на плече 1 метр, то есть примерно 100 г, подвешенные на конце метрового рычага, или 10 кг на плече 1 см. Сервы часто пишут в «кг·см»: 30 кг·см ≈ 2.9 Н·м.Пиковый и номинальный
Номинальный (continuous) момент мотор держит долго без перегрева. Пиковый (peak) - секунды. Для прыжков важен пик, для стояния и подъёма груза - номинал.KV (об/мин на вольт)
Скорость без нагрузки на каждый вольт. Низкий KV - медленнее, но больше момента на ампер. Kt (Н·м/А) ≈ 8.27 / KV.Передаточное число
Редуктор 10:1 умножает момент в ~10 раз (минус потери) и делит скорость в 10 раз. Но и трение, люфт и инерция мотора тоже умножаются.Backdrivability
Можно ли провернуть выход рукой. С редуктором 1:300 - нельзя, с 1:6 - легко. Это важно для шагающих: сустав должен «пружинить» при ударе о землю.Энкодер
Датчик угла. Инкрементальный считает шаги от старта, абсолютный знает угол сразу после включения. Магнитные абсолютные (AS5047, MA702) стоят 10-20 €.FOC
Field Oriented Control - алгоритм, который по углу ротора точно дозирует ток в трёх фазах BLDC. Даёт тихую работу, плавный момент на нулевой скорости и управление по току (то есть по моменту).Контуры управления
Позиция → скорость → ток. В хороших драйверах есть все три, и можно задавать любую цель: угол, скорость или момент.Карта типов моторов
Грубо все моторы для роботов делятся по двум осям: есть ли щётки (коллекторный или бесколлекторный) и сколько интеграции в корпусе (голый мотор → мотор с редуктором → мотор с редуктором, энкодером и драйвером, говорящий по шине). Чем больше интеграции, тем дороже штука, но тем меньше проводов и отладки.
| Тип | Цена за сустав | Главный плюс | Главный минус | Где брать |
|---|---|---|---|---|
| Коллекторный + редуктор | 5-60 € | Просто: два провода и H-мост | Щётки изнашиваются, нет обратной связи без энкодера | Колёсные роботы до 30 кг |
| Хобби-серво (ШИМ) | 3-60 € | Готовое позиционирование из коробки | Шумит, люфт, нет обратной связи в софт | Игрушки, захваты, мелкие манипуляторы |
| Умная серва по шине | 15-500 € | Шина, обратная связь по углу/току/температуре | Большой редуктор - не backdrivable | Настольные руки (SO-ARM101, LeRobot), мелкие гуманоиды |
| BLDC (дроны) | 15-100 € | Огромная мощность на грамм | Высокие обороты, нужен ESC или FOC-драйвер | Пропеллеры, база для DIY-актуаторов |
| Гимбальный | 20-60 € + драйвер | Direct drive, плавно, тихо | Слабый момент | Камеры, лёгкие суставы, демо |
| BLDC + энкодер + планетарка | ~150-250 € в сборе | Дёшево, гибко, open source | Много сборки и настройки | DIY-шагающие, исследования |
| QDD-актуатор интегрированный | 120-600 € | Один кабель: питание + CAN; прозрачный сустав | Дорого за штуку, закрытые прошивки | Шагающие роботы, гуманоиды, экзоскелеты |
| Шаговый | 10-50 € + драйвер 5-40 € | Точное позиционирование без энкодера | Теряет шаги, греется на удержании, слабеет на скорости | 3D-принтеры, ЧПУ, линейные оси |
| Мотор-колесо (hub) | 30-150 € | Колесо, мотор и подшипник в одном | Нужен FOC-драйвер, тяжёлое | Колёсные платформы 20-300 кг |
| AC-серво / червячный / линейный | 100-1000+ € | Промышленная надёжность и сила | Тяжело, часто 220 В, медленно (червяк) | Подъёмники, силовые платформы от 100 кг |
Коллекторные (brushed) DC-моторы
Щётки переключают ток, а не вращают поле вместе с валом
Магниты статора неподвижны: поле в зазоре направлено от N к S. Обмотки и медные пластины коллектора вращаются вместе с валом, но щётки остаются на корпусе. Когда под щётку приходит другая пластина, меняется путь тока. Поэтому суммарное поле обмоток остаётся примерно поперёк поля статора, хотя сами катушки уже повернулись. Момент продолжает тянуть вал в одну сторону.
Коллектор меняет ток при переходе щётки на следующую пластину.
Модель: три одинаковые обмотки соединены треугольником между пластинами 1-2, 2-3 и 3-1. Цвета A/B/C связывают катушки и токи; красный/синий торец означает N/S. Индуктивность, ширина щёток и искрение не моделируются. В этой грубой схеме угол меняется от 60° до 120°, момент ∝ sin(угла). Больше обмоток и пластин - меньше пульсации около 90°. Скорость здесь задана для наглядности, а не рассчитана из момента.
Самый старый и самый простой тип. Подключил к батарейке - крутится, поменял полярность - крутится в обратную сторону. Голый коллекторный мотор слишком быстрый (5-15 тыс. об/мин) и слабый, поэтому для роботов почти всегда покупают мотор-редуктор: мотор + металлический редуктор + опционально энкодер Холла на валу.
- Напряжение 6-24 В
- Ток 0.1-10 А (стоп-ток до 20+ А)
- Редуктор 10:1 - 300:1
- Момент 0.1-10 Н·м на выходе
- КПД 40-70% с редуктором
- Ресурс щёток ~1000-3000 ч
Плюсы
- Дёшево и доступно везде
- Управление - два провода и H-мост с ШИМ
- Большой момент на низкой скорости благодаря редуктору
- Часто есть версии с энкодером
Минусы
- Щётки изнашиваются, искрят и создают электромагнитные помехи
- Не backdrivable при большом редукторе
- Нет точного управления моментом
- Хуже КПД, чем у BLDC
Где лучше всего
Колёсные роботы до 20-30 кг, гусеничные платформы, конвейеры, захваты, поворотные механизмы. Отличный первый мотор для обучения.Контроллеры и библиотеки
- Драйверы H-моста: DRV8871 / TB6612FNG (до ~1-3 А), Cytron MDD10A / MDD20A (10 / 20 А на канал), RoboClaw (2x15 - 2x160 А, считает энкодеры и держит PID сам, есть Python- и ROS-драйверы), Sabertooth. Старый L298N лучше не брать: он теряет 2-4 В на себе и греется.
- Софт: на Arduino/ESP32 это просто
analogWrite()+ два пина направления; энкодеры - библиотекаEncoderили аппаратный счётчик ESP32 (PCNT). Для ROS 2 -ros2_controlсdiff_drive_controller.
Где купить
- Pololu 37D - классика: 12 или 24 В, от 6.3:1 до 150:1, с энкодером; 30:1 даёт 330 об/мин и ~14 кг·см на 12 В. Примерно $40-60.
- goBILDA Yellow Jacket - планетарные мотор-редукторы со встроенным энкодером, $54.99; удобная экосистема крепежа.
- AliExpress: серии JGB37-520, JGA25-370 с энкодером - 8-15 €, но разброс качества большой.
Хобби-сервоприводы и умные сервы
Период сигнала 20 мс (50 Гц): импульс 1.0 мс - 0°, 1.5 мс - 90°, 2.0 мс - 180°. Пунктирная качалка - цель, белая - реальный вал. Нагрузка тянет качалку к 0°. Модель упрощена: редуктор нарисован 43:1 (в реальных сервах 100-300:1, поэтому на картинке мотор крутится медленнее настоящего), время замедлено в 5 раз, мотор - модель первого порядка с трением. Мёртвая зона и частоты - типичные значения, у конкретных серв они другие.
Серва - это коллекторный (реже бесколлекторный) мотор с редуктором и датчиком угла в одном корпусе. Вы говорите «встань на 90°» - она встаёт и держит. Редуктор обычно очень большой, от 30:1 в быстрых до 300:1 в силовых, поэтому момент приличный, но выход невозможно провернуть рукой, а шестерни шумят.
Аналоговые и цифровые
Аналоговые сервы регулируют мотор с частотой входного сигнала (50 Гц): мягче, тише, но «мёртвая зона» и хуже удержание. Цифровые обрабатывают тот же ШИМ-сигнал микроконтроллером и подают импульсы на мотор сотни раз в секунду: точнее, сильнее держат позицию, но больше потребляют и характерно пищат. С точки зрения софта разницы нет - обе управляются одинаково.
Умные сервы по шине (serial bus servo)
Следующий уровень: вместо ШИМ - полудуплексный UART или RS-485, у каждой сервы свой ID, все сидят на одном шлейфе цепочкой. Можно не только задать угол, но и прочитать текущий угол, ток, температуру, напряжение; есть режим колеса и режим ограничения момента. Именно на таких сервах собраны популярные open-source руки LeRobot SO-ARM100/101.
- Хобби: 4.8-8.4 В
- Шинные: 7.4-14.8 В
- Момент 0.2-6 Н·м (2-60 кг·см), бесколлекторные до 50+ Н·м
- Угол 180°, 270° или 360° + режим колеса
- Ток до 2-3 А на серву в стопе
Плюсы
- Позиционирование из коробки
- Никаких драйверов (хобби) или один адаптер USB-UART (шинные)
- Шинные легко подключать десятками
- Очень дёшево: STS3215 за $16
Минусы
- Шумные, есть люфт
- Большой редуктор - нет податливости, удары ломают шестерни
- Хобби-серва ничего не сообщает о себе
- Слабое управление по моменту
Где лучше всего
Захваты, настольные манипуляторы, головы и руки маленьких гуманоидов, робо-собаки до 2-3 кг, аниматроника. Для ног тяжелее ~5 кг - уже плохо: редуктор не выдерживает ударов.Где купить
- Feetech STS3215 (12 В, 30 кг·см, магнитный энкодер) - около $16; такая же у Waveshare как ST3215 - $21.90. Там же есть бесколлекторные версии на 450-1000 кг·см за $399-650.
- ROBOTIS Dynamixel - эталон умных серв с отличной документацией: XL430 от ~€50-60, серия X/XM сотни долларов, Pro - тысячи.
- Хобби-сервы: MG996R (клон, 3-5 €), Savöx, Hitec, KST - от 20 до 100+ €.
Контроллеры и библиотеки
- Хобби-сервы напрямую: Arduino
Servo, ESP32ESP32Servo. Больше 4-6 серв - плата PCA9685 (16 каналов по I²C, ~5 €) + Adafruit PWM Servo Driver илиadafruit-circuitpython-servokitна Raspberry Pi. - Dynamixel: Dynamixel SDK (C++, Python, ROS 2), адаптер U2D2.
- Feetech: SCServo SDK от производителя, драйвер в LeRobot; адаптер - Waveshare Bus Servo Driver Board или любой USB-UART с полудуплексной схемой.
Бесколлекторные (BLDC) моторы для дронов
Бесколлекторный мотор - это «вывернутый наизнанку» коллекторный: обмотки неподвижны, магниты вращаются, а переключение тока делает контроллер. Отсюда высокий КПД (80-90%), отсутствие износа щёток и огромная удельная мощность. Дроновые моторы оптимизированы под высокие обороты с пропеллером, поэтому у них высокий KV (900-2500), и для робота их используют либо с редуктором, либо берут низко-KV «толстые» модели (5010, 6374, 8308, 8318).
- Обозначение 2207, 5010, 8308 = диаметр × высота статора в мм
- KV 50-2500
- Напряжение 2S-12S LiPo (7.4-44 В)
- Ток 10-80 А
- Мощность 100 Вт - 3+ кВт
Как три синусоиды вращают магнитное поле
Катушка на зубе статора - это электромагнит. Контроллер подаёт на неё напряжение (на самом деле быстрый ШИМ, среднее которого - синус), из-за индуктивности ток в катушке нарастает плавно и повторяет эту синусоиду. Ток в одну сторону делает торец зуба полюсом S, в обратную - полюсом N, а сила полюса пропорциональна току. Три катушки стоят под углом 120° друг к другу, их поля складываются как векторы - и если токи сдвинуты по времени тоже на 120°, сумма получается одним полем постоянной силы, которое плавно вращается. Магнит ротора тянется за ним.
Нажмите «Пауза» и двигайте ползунок угла, чтобы рассмотреть отдельные моменты. Переключите режим, чтобы сравнить FOC с простым ESC.
Плюсы
- Лучшая мощность и момент на грамм
- Нет щёток - долгий ресурс, тишина
- Дёшево: 15-60 € за мотор
- Огромный выбор
Минусы
- Обязателен контроллер (ESC или FOC)
- Сам по себе быстрый и слабый на низких оборотах
- Дешёвый ESC не умеет держать позицию и плохо стартует под нагрузкой
Где лучше всего
Дроны и винты. В робототехнике - как «сердце» самодельных актуаторов (см. ниже), для колёс через редуктор, для бросающих и прыгающих механизмов.Контроллеры
- ESC для дронов (прошивки BLHeli_32, Bluejay, AM32) - управляются ШИМ, DShot, PWM. Только скорость, без позиции. 10-40 €.
- VESC - open-source контроллер для электроскейтов и робототехники: FOC, датчики Холла или энкодер, CAN, UART; 50-200 € у Flipsky, Trampa, MakerX. Отлично для колёс.
- FOC-драйверы для суставов - ODrive, moteus, Tinymovr, SimpleFOC: см. следующие разделы.
Где купить: T-Motor (включая серию для роботов), iFlight, BrotherHobby, Flipsky (моторы 63xx для скейтов), AliExpress (Eaglepower 8308/8318, Maytech).
Гимбальные моторы: direct drive без редуктора
Это BLDC, намотанный тонким проводом с большим числом витков: сопротивление фазы 5-15 Ом вместо 0.05-0.2 Ом у дронового. Он медленный и слабый (обычно 0.05-0.3 Н·м), зато его можно питать малым током, он плавно держит любой угол и крутится без единой шестерёнки. Сочетание «мотор прямо на суставе» называют direct drive.
- Типичные: GM2804, GM3506, GM4108, GM5208
- Сопротивление фазы 5-15 Ом
- Ток 0.3-2 А
- Момент 0.05-0.5 Н·м
- 12-24 В
Плюсы
- Ноль люфта и шума шестерён
- Идеальная прозрачность - сустав чувствует внешнюю силу через ток
- Быстрая реакция
- Можно питать дешёвыми слаботочными драйверами
Минусы
- Слабый: руку тяжелее сотни граммов не удержит
- Нужен FOC-контроллер и энкодер
- Удержание веса = постоянный ток = нагрев
Где лучше всего
Стабилизаторы камер, «умные ручки» с силовой обратной связью (haptic knob), лёгкие демо-манипуляторы, балансирующие роботы-кубы (reaction wheel), учебные проекты FOC.Контроллеры и цены
- Tinymovr R5.4 (сейчас бренд Motionlayer) - FOC-контроллер размером с мотор, крепится прямо на заднюю крышку, встроенный энкодер, CAN; €88, стартовый набор - €124. Python-библиотека
tinymovrи GUI Studio. - SimpleFOC - open-source библиотека FOC для Arduino/STM32/ESP32 и дешёвые платы SimpleFOC Shield / Mini (10-30 €). Лучший способ разобраться в FOC руками.
- Сами моторы: iFlight iPower GM-серия, T-Motor GB-серия, AliExpress - 20-60 €.
BLDC + магнитный энкодер + планетарка + ODrive
Классический путь самодельных шагающих роботов со времён MIT Mini Cheetah: берёте толстый низко-KV BLDC, приклеиваете на вал диаметрально намагниченный магнит, ставите напротив плату магнитного энкодера, добавляете напечатанный или купленный планетарный редуктор 6:1 - 10:1 и управляете всем через FOC-драйвер. Получается сустав, похожий на коммерческий QDD, но в 1.5-3 раза дешевле и полностью под вашим контролем. Классический разбор такой конструкции - магистерская работа Бена Каца «A low cost modular actuator for dynamic robots» (MIT, 2018).
Из чего складывается цена
| Компонент | Пример | Цена |
|---|---|---|
| Мотор | Eaglepower 8308 / Flipsky 6374 / ODrive M8325s | ~30-90 € |
| Магнитный энкодер | AS5047P, MA702 breakout, CUI AMT102 (инкрементальный) | +15-25 € |
| Контроллер | ODrive S1 $149, ODrive Micro $89, moteus r4.11 ~$86-99, Tinymovr €88 | ~80-150 € |
| Редуктор | напечатанная планетарка / циклоида, или готовый 1:6-1:10 | 5-80 € |
| Подшипники, крепёж | тонкостенные подшипники 6808/61808 и т.п. | 10-20 € |
| Итого за сустав | ~150-300 € |
ODrive S1 / Pro / Micro
Самая популярная экосистема. S1: 12-48 В, до 1.6-2 кВт, встроенный энкодер на плате, CAN, USB, UART, STEP/DIR. Python-пакетodrive и веб-GUI. Есть готовые наборы «S1 + мотор M8325s» от $279. Поддерживает мотор-колёса от гироскутеров.mjbots moteus
Крошечная плата со встроенным абсолютным энкодером, питание и CAN-FD проходят цепочкой. Очень хорошая документация и Python/C++ библиотеки, используется в четвероногом Quad A1 и многих гуманоидах. Внимание: нужен CAN-FD (fdcanusb или pi3hat), обычный CAN-адаптер не подойдёт.Tinymovr / SimpleFOC
Tinymovr - компактный контроллер, крепится на заднюю часть мотора, CAN 1 Мбит/с. SimpleFOC - библиотека для своих плат на STM32/ESP32. Хороши для обучения и лёгких суставов.QDD и полностью интегрированные актуаторы
Quasi-direct drive (квази-прямой привод) - компромисс между direct drive и сервой: мощный плоский BLDC с маленьким редуктором 6:1 - 10:1. Этого хватает, чтобы умножить момент до нужных значений, но передаточное число ещё настолько мало, что сустав остаётся backdrivable: его можно провернуть рукой, и драйвер «чувствует» внешнюю силу по току - без отдельного датчика момента. Для шагающих роботов это критично: нога мягко принимает удар о землю, а не ломает шестерни, как у сервы.
Полностью интегрированный актуатор - это QDD (или планетарный с бОльшим передаточным числом), в котором мотор, редуктор, энкодер, иногда второй энкодер на выходе, драйвер и температурный датчик собраны в один «толстый цилиндр». Наружу выходят только два провода питания и пара проводов CAN. Все моторы на ноге подключаются цепочкой к одной шине.
Планетарка, передаточное число и прозрачность сустава
Солнце сидит на валу мотора, кольцо неподвижно, выход снимается с водила: i = 1 + Zкольца / Zсолнца. Нагрузку делят три сателлита, поэтому одна ступень компактна и держит большой момент. Меняйте передаточное число и толкайте выход «рукой»: видно, как растёт сила и как пропадает чувствительность к внешнему миру.
Учебная модель, не расчёт конкретного актуатора: мотор 1 Н·м, КПД ступени 97%, масса мотора 0.3 кг + 0.08 кг на ступень, трение редуктора растёт с передаточным числом условно. Во время толчка драйвер в режиме нулевого момента и только измеряет ток. Для 36:1 и выше показана первая ступень, а стрелка «выход» учитывает все.
- Питание 24-48 В
- Номинал 3-40 Н·м, пик 9-120+ Н·м
- Масса 0.3-2.5 кг
- Скорость 100-500 об/мин на выходе
- CAN 1 Мбит/с или CAN-FD, иногда RS-485 / EtherCAT
- Режимы: позиция, скорость, момент, «MIT-режим» (импеданс)
Плюсы
- Backdrivable, ударостойкий, быстрый
- Управление моментом без датчика момента
- Минимум проводки: питание + CAN цепочкой
- Тише серв: шестерён мало, они большие
- Готов к работе из коробки
Минусы
- Дорого: от ~€120 до €600 за сустав
- Закрытые прошивки, разные протоколы у разных брендов
- При удержании позиции постоянно ест ток и греется
- Тяжелее серв при равном моменте на малых размерах
Где лучше всего
Четвероногие и двуногие роботы, гуманоиды, экзоскелеты, коллаборативные руки, силовая обратная связь (телеоперация), любые суставы, которые касаются мира.Популярные производители и цены
| Модель | Пик / номинал | Редуктор | Масса | Шина | Цена |
|---|---|---|---|---|---|
| CubeMars AK60-6 | ~9 / 3 Н·м | 6:1 | ~380 г | CAN, UART | $298.90 |
| CubeMars AK70-10 | 24.8 / 8.3 Н·м | 10:1 | 621 г | CAN | от $398.90 |
| CubeMars AK80-9 | 22 Н·м пик | 9:1 | ~500 г | CAN | см. магазин |
| Damiao DM-J4310-2EC | ~7 / 3 Н·м | 10:1 | ~300 г | CAN, 2 энкодера | ~€120 |
| RobStride RS02 | 17 / 7 Н·м | 7.75:1 | 380 г | CAN | ¥699 в Китае |
| RobStride RS03 | 60 / 21 Н·м | 9:1 | 900 г | CAN | ¥999 в Китае |
| Unitree GO-M8010-6 | 23.7 Н·м пик | 6.33:1 | ~530 г | RS-485 | $369 |
Цены RobStride в юанях - официальный прайс производителя; у европейских реселлеров они заметно выше. У RobStride есть и RS04 на 120 Н·м для крупных гуманоидов. Ещё стоит посмотреть на MyActuator (серия RMD-X, CAN/EtherCAT) и SteadyWin (GIM). CubeMars пишет, что AK-серия (интегрированный драйвер) и AKE-серия (QDD без драйвера, «голый» модуль под свой контроллер) - разные линейки.
CAN: как с ними говорить
Почти все интегрированные актуаторы общаются по CAN. Это дифференциальная пара CANH/CANL, до 1 Мбит/с (CAN-FD - до 5-8 Мбит/с в фазе данных), до ~110 узлов на шине, по два терминатора 120 Ом на концах. Каждому мотору задаётся свой ID, и все висят на одном кабеле.
- USB-CAN адаптер: CANine от Motionlayer - €34.50, USB-C, CAN 2.0A/B до 1 Мбит/с, встроенный переключаемый терминатор, прошивка slcan или candleLight (тогда в Linux это обычный
can0через SocketCAN). Подходит к Jetson Orin Nano, Raspberry Pi, ноутбуку. Аналоги: CANable, PEAK PCAN-USB, Waveshare USB-CAN. - Встроенный CAN на Jetson Orin: у модулей Orin есть контроллер CAN (драйвер
mttcan), но нужен внешний трансивер вроде SN65HVD230 и настройка pinmux. USB-адаптер обычно быстрее запустить. - CAN-FD (для moteus): mjbots fdcanusb или pi3hat для Raspberry Pi с несколькими независимыми шинами - удобно выделить по шине на каждую ногу.
- Unitree использует RS-485 - нужен USB-RS485 адаптер и их SDK.
Шаговые моторы
Полный шаг, полушаг, микрошаг и потеря позиции
Две фазы создают поле с компонентами A и B. Полный шаг резко меняет его направление, полушаг добавляет промежуточные положения. При микрошаге токи IA = cos(θ), IB = sin(θ) дробят этот переход на маленькие приращения. Зубчатый ротор следует за полем, но только пока хватает момента.
Учебная модель, не расчёт динамики: четыре периода зубцов на оборот, поэтому полный шаг увеличен до 22.5° (у типичного гибридного мотора 1.8°). Четыре крупных зубца подчёркивают периодичность; расположение фаз условное, это не чертёж статора реального гибридного мотора. При нагрузке больше 100% вал блокируется тормозом, а команды продолжаются. После снятия тормоза ротор захватывается ближайшим устойчивым положением, но пропущенные обороты электрического поля не восстанавливаются. Ошибку видим мы; драйвер без энкодера её не знает. «Сброс позиции» условно выполняет поиск нуля, а не просто обнуляет счётчик STEP.
Шаговый мотор двигается дискретными шагами. Драйвер получает два сигнала: STEP (один импульс = один шаг) и DIR (направление). Число шагов и есть позиция, поэтому энкодер не нужен. Размеры стандартизованы: NEMA 17 (42 мм, 3D-принтеры), NEMA 23 (57 мм, ЧПУ), NEMA 34 (86 мм, станки).
- 1.8° (200 шагов) или 0.9°
- Микрошаг до 1/256
- NEMA 17: 0.4-0.6 Н·м
- NEMA 23: 1-3 Н·м
- NEMA 34: 4-12 Н·м
- Драйвер 12-48 В (и выше для NEMA 34)
Плюсы
- Точная позиция без энкодера
- Большой момент на малых оборотах, держит нагрузку на месте
- Дёшево, стандартные размеры и крепления
- Простое управление STEP/DIR
Минусы
- Пропуск шагов без обратной связи
- Ток течёт всегда - греется даже стоя
- Резонансы, вибрация, шум (лечится TMC-драйверами)
- Тяжёлый для своего момента, слабеет на скорости
- Не backdrivable, плохо для динамики
Где лучше всего
Линейные оси (ремень, винт), 3D-принтеры, ЧПУ, поворотные столы, настольные манипуляторы с медленными движениями, дозаторы, фокусировка камер. Для ног - нет.Драйверы и библиотеки
- TMC2209 (BigTreeTech и др., 5-10 €) - до 2 А RMS, 4.75-28 В, StealthChop (почти бесшумно), StallGuard (обнаружение упора без концевика), настройка по UART. Библиотека TMCStepper.
- Для NEMA 23/34 - DM542 / DM556 или закрытый контур StepperOnline CL57T ($33-51): энкодер на моторе, шаги не теряются.
- Генерация импульсов: AccelStepper (разгон и торможение), FastAccelStepper (аппаратные таймеры ESP32/AVR, до десятков кГц), прошивки Klipper / grblHAL / FluidNC для многоосевых систем.
Где купить: StepperOnline - всё от NEMA 8 до 34, комплект NEMA 17 closed loop + драйвер $46.64; LDO Motors, Moons', Trinamic/ADI.
Мотор-колёса (hub motors)
BLDC outrunner, у которого колокол - это и есть обод колеса с шиной. Самый доступный источник - гироскутеры (hoverboard): 6.5" колесо, 36 В, ~250-350 Вт, датчики Холла, пара колёс с рынка б/у стоит копейки. Новые 6.5-10" хаб-моторы с энкодером для AGV продаются на AliExpress примерно за $120-130 за штуку с заявленной нагрузкой до 200 кг на колесо.
Плюсы
- Нет редуктора, цепей, ремней - нечему ломаться
- Большой момент на низкой скорости (10-20+ Н·м)
- Подшипники рассчитаны на вес человека
- Тихо, есть рекуперация
Минусы
- Тяжёлые (2.5-4 кг каждое)
- Датчики Холла грубые - для точного позиционирования на месте нужен энкодер
- Нужен FOC-драйвер на 36-48 В
Где лучше всего
Колёсные платформы 20-300 кг: садовые роботы, тележки-доставщики, «платформа за человеком», AGV, мобильная база манипулятора.- Драйверы: ODrive (S1 на колесо, Pro на тяжёлые; у ODrive есть руководство по гироскутерным моторам), VESC, или родная плата гироскутера с прошивкой hoverboard-firmware-hack-FOC (FOC, управление по UART) - почти бесплатный драйвер на два колеса.
Силовые приводы: AC-сервы, червячные, линейные актуаторы
Когда нужно поднимать или возить сотни килограммов, на первый план выходят не динамика и прозрачность, а надёжность, тормоза и безопасность.
Промышленные AC-сервы
Синхронный мотор с абсолютным энкодером (17-23 бит) и отдельным серво-драйвером, 220 В переменного или 48 В постоянного тока, управление STEP/DIR, RS-485 (Modbus), CANopen или EtherCAT. С планетарным редуктором 10:1 - 50:1 даёт сотни Н·м. StepperOnline A6 750 Вт с драйвером - от $116, у Delta, Leadshine, Yaskawa - дороже. Есть версии с электромагнитным тормозом.Червячные мотор-редукторы
Коллекторный или BLDC-мотор с червячной передачей 30:1 - 100:1. Главное свойство - самоторможение: без питания груз не падает. Минусы - КПД 40-70%, медленно, греется. Сюда же относятся моторы стеклоочистителей (12 В, ~10-20 Н·м, дёшево на разборках) - любимый приём робо-боев и DIY-подъёмников.Линейные актуаторы
Мотор + винтовая передача: толкает шток с силой 500-10 000 Н (50-1000 кг). Встроенные концевики, часто потенциометр или датчик Холла для обратной связи, самоторможение. Управляются как коллекторный мотор (H-мост). Progressive Automations, Actuonix (миниатюрные), AliExpress за 30-100 €.BLDC для электротранспорта
Моторы электроскейтов (63xx-80xx), мотор-колёса скутеров, e-bike с VESC или ODrive Pro. Лучший выбор «много мощности за разумные деньги» для платформ 100-300 кг.Сводная таблица
| Коллекторный | Серва | BLDC + FOC | Гимбальный | QDD | Шаговый | Hub | |
|---|---|---|---|---|---|---|---|
| Шум | средний | высокий | низкий | очень низкий | низкий | средний* | низкий |
| Backdrivable | зависит от редуктора | нет | да | да | да | нет | да |
| Управление моментом | грубое | нет / грубое | точное | точное | точное | нет | точное |
| Обратная связь | опц. энкодер | шинные - да | энкодер | энкодер | встроена | нет (или closed loop) | Холлы / энкодер |
| Интерфейс | ШИМ + DIR | ШИМ / UART | CAN / UART / USB | CAN / SPI | CAN / CAN-FD | STEP/DIR, UART | CAN / UART / ШИМ |
| Питание | 6-24 В | 5-14 В | 12-56 В | 12-24 В | 24-48 В | 12-48 В | 24-48 В |
| Много штук | драйвер на каждый | шина - легко | шина | шина | шина - очень легко | драйвер на каждый | шина |
| Сложность старта | ★☆☆ | ★☆☆ | ★★★ | ★★☆ | ★★☆ | ★☆☆ | ★★☆ |
* С TMC-драйвером в режиме StealthChop шаговый почти бесшумен на малых скоростях.
Управление из софта
С точки зрения программиста есть пять уровней интерфейса. Чем выше уровень, тем меньше реального времени нужно в вашем коде.
| Интерфейс | Кто | Что вы шлёте | Нужен ли realtime в вашем коде |
|---|---|---|---|
| ШИМ + DIR | коллекторные, ESC, хобби-сервы | скважность или длину импульса | да, если замыкаете контур по энкодеру сами |
| STEP / DIR | шаговые, AC-сервы | поток импульсов | да, генерация импульсов (таймеры МК) |
| UART / RS-485 | шинные сервы, Unitree, Modbus | команды с ID: угол, скорость | нет, 100-1000 Гц достаточно |
| CAN / CAN-FD | ODrive, moteus, Tinymovr, CubeMars, Damiao, RobStride | позиция, скорость, момент, Kp/Kd | мягкий: 200-1000 Гц на Linux |
| EtherCAT | промышленные сервы, дорогие актуаторы | циклический обмен процессными данными | да, RT-ядро (IgH, SOEM) |
Хобби-серва на Arduino
#include <Servo.h>
Servo s;
void setup() { s.attach(9); } // сигнальный провод на пин 9
void loop() {
s.write(0); delay(1000); // 1.0 мс импульс
s.write(180); delay(1000); // 2.0 мс импульс
}
Шаговый с TMC2209 и AccelStepper
#include <AccelStepper.h>
AccelStepper st(AccelStepper::DRIVER, 2, 3); // STEP=2, DIR=3
void setup() {
st.setMaxSpeed(4000); // шагов/с (с учётом микрошага)
st.setAcceleration(8000);
st.moveTo(3200); // 1 оборот при 1/16 микрошага
}
void loop() { st.run(); } // вызывать как можно чаще
ODrive из Python (прошивка 0.6)
import odrive
from odrive.enums import AxisState, ControlMode
odrv = odrive.find_any() # USB
ax = odrv.axis0
ax.controller.config.control_mode = ControlMode.POSITION_CONTROL
ax.requested_state = AxisState.CLOSED_LOOP_CONTROL
ax.controller.input_pos = 2.5 # в оборотах мотора
print(ax.pos_vel_mapper.pos_rel, ax.motor.foc.Iq_measured)
На роботе вместо USB используют CAN (протокол CANSimple, есть пакет odrive_can для ROS 2).
moteus по CAN-FD
import asyncio, math, moteus
async def main():
c = moteus.Controller(id=1)
await c.set_stop() # сбросить ошибки
while True:
state = await c.set_position(position=math.nan, velocity=0.5,
maximum_torque=2.0, query=True)
print(state.values[moteus.Register.POSITION])
await asyncio.sleep(0.01)
asyncio.run(main())
«MIT-режим» (CubeMars, Damiao и многие клоны)
Самый распространённый протокол для QDD пришёл из Mini Cheetah. В одном 8-байтном CAN-кадре вы шлёте сразу желаемую позицию, скорость, жёсткость Kp, демпфирование Kd и момент прямой подачи. Драйвер сам считает τ = Kp·(p_des - p) + Kd·(v_des - v) + τ_ff на своей частоте. Это и есть импедансное управление: маленький Kp - мягкая «пружинящая» нога, большой - жёсткая.
import can
def f2u(x, lo, hi, bits): # float -> беззнаковое целое
x = min(max(x, lo), hi)
return int((x - lo) * ((1 << bits) - 1) / (hi - lo))
# Диапазоны берите из даташита своей модели! Здесь пример для AK70-10.
P, V, T, KP, KD = 12.5, 50.0, 25.0, 500.0, 5.0
def mit_frame(p, v, kp, kd, t):
p_i, v_i = f2u(p, -P, P, 16), f2u(v, -V, V, 12)
kp_i, kd_i, t_i = f2u(kp, 0, KP, 12), f2u(kd, 0, KD, 12), f2u(t, -T, T, 12)
return bytes([p_i >> 8, p_i & 0xFF, v_i >> 4,
((v_i & 0xF) << 4) | (kp_i >> 8), kp_i & 0xFF,
kd_i >> 4, ((kd_i & 0xF) << 4) | (t_i >> 8), t_i & 0xFF])
bus = can.Bus(interface="socketcan", channel="can0", bitrate=1_000_000)
ENTER = bytes([0xFF] * 7 + [0xFC]) # войти в режим управления
bus.send(can.Message(arbitration_id=1, data=ENTER, is_extended_id=False))
bus.send(can.Message(arbitration_id=1, data=mit_frame(0.5, 0, 20, 1, 0),
is_extended_id=False))
print(bus.recv(0.01)) # ответ: позиция, скорость, ток
Поднять CANine в режиме candleLight в Linux: sudo ip link set can0 up type can bitrate 1000000. Для slcan-прошивки используйте interface="slcan" в python-can.
Библиотеки и фреймворки
- python-can - универсальный CAN из Python (SocketCAN, slcan, PCAN, Kvaser).
- ros2_control - стандартный слой ROS 2: пишете (или берёте готовый) hardware interface для своих моторов, и получаете контроллеры траекторий, diff drive, gravity compensation и т.д. Готовые интерфейсы есть для Dynamixel, ODrive, moteus, CubeMars, Feetech.
- LeRobot - обучение политик на руках с Feetech/Dynamixel.
- SimpleFOC, moteus, ODrive docs, гайд CubeMars, RobStride на Seeed Wiki.
Много моторов: насколько удобно подключать
Отдельный драйвер на мотор
Коллекторные и шаговые: каждый мотор - свой драйвер, свои 2-4 пина МК (ШИМ, DIR, энкодер A/B). На 4 колеса это нормально, на 12 суставов - клубок проводов и нехватка таймеров. Решение - вынести драйверы на отдельную плату (RoboClaw по UART, плата ЧПУ с 4-6 драйверами).Шина цепочкой
Шинные сервы, QDD, ODrive/moteus: один кабель от мотора к мотору, у каждого ID. 12 суставов собаки - это 4 кабеля по ноге. Главное - заранее прошить разные ID, выставить одинаковую скорость шины и поставить терминаторы.Пропускная способность
CAN 1 Мбит/с: кадр с 8 байтами ≈ 110-130 бит, команда + ответ ≈ 250 бит. Это ~4000 обменов в секунду - например, 6-8 моторов по 500 Гц. Поэтому у четвероногих обычно по шине на ногу (3 мотора × 1 кГц). CAN-FD и EtherCAT дают запас в разы.Питание
Какое напряжение
- 5-8 В - хобби-сервы (отдельный BEC на 5-10 А, не с пина Arduino!)
- 12 В - коллекторные моторы, шинные сервы, NEMA 17
- 24 В - средние роботы, шаговые, ODrive/moteus в лёгких роботах
- 48 В - QDD-актуаторы, мотор-колёса, всё тяжёлое. Меньше ток при той же мощности → тоньше провода и меньше нагрев
Источник
- LiPo 6S/12S (22.2 / 44.4 В) - большие токи, лёгкие, но требуют осторожности и BMS/мониторинга
- Li-ion 10S-13S (36-48 В) из электросамокатов/велосипедов - с готовой BMS, дешевле, но ток ограничен BMS
- БП на стенде - только с защитой от рекуперации
Рекуперация
При торможении BLDC становится генератором и поднимает напряжение на шине. Батарея это съест, лабораторный БП - нет: драйвер уйдёт в ошибку перенапряжения или сгорит. Нужен тормозной резистор (brake resistor) или регенеративный клапан (у ODrive продаётся Regen Clamp).Схема питания, которая не подведёт
- Батарея → предохранитель → аварийная кнопка (e-stop), которая физически разрывает силовую линию моторов → анти-искровой разъём (XT90-S) или схема предзаряда → шина моторов.
- Толстые провода: 48 В × 20 А суммарно - уже 12-14 AWG. Разъёмы XT30/XT60/XT90 по току.
- Логика (Jetson, Raspberry Pi, датчики) - через отдельный DC-DC. Просадки напряжения при старте моторов не должны перезагружать компьютер.
- Общая земля логики и драйверов, но без «земляных петель» через толстые силовые провода.
- Для QDD: пиковый ток всех суставов при прыжке может быть в 3-5 раз выше среднего - батарея и BMS должны это выдерживать.
Сценарии
1. Силовые приводы: платформа или подъёмник от 100 кг
Пример: тележка 150 кг (с грузом) должна ехать 1.5 м/с и заезжать на уклон 10%. На колёсах радиусом 10 см: сила сопротивления ≈ m·g·(sin α + Crr) = 150 × 9.81 × (0.1 + 0.02) ≈ 176 Н, плюс разгон 0.5 м/с² даёт +75 Н. Итого ~250 Н, то есть ~25 Н·м на всех ведущих колёсах, по ~12.5 Н·м на каждое из двух. Проверьте нужный момент при выборе мотора и редуктора.
Что брать
- Колёсная база: 2-4 хаб-мотора 8-10" на 36-48 В + ODrive Pro/S1 или VESC. Дёшево и мощно.
- Если нужна точность и тормоз: AC-серво 400-750 Вт с тормозом + планетарный редуктор 10:1 - 20:1.
- Подъём/вертикальная ось: червячный мотор-редуктор или линейный актуатор - самоторможение, груз не падает при отключении питания.
На что обратить внимание
- Электромагнитные тормоза (fail-safe: зажаты без питания)
- E-stop, ограничение скорости, бамперы
- Номинальный, а не пиковый момент - платформа везёт груз долго
- Нагрев в корпусе, IP-защита на улице
- Рекуперация на спусках - тормозной резистор
2. Шагающие роботы до 100 кг
Главное требование - прозрачный, ударостойкий сустав с управлением моментом, то есть QDD. Грубая прикидка пикового момента в колене: вес, который приходится на одну ногу при беге, умножить на плечо (при сильно согнутой ноге - ~0.7-0.8 длины сегмента) и на коэффициент динамики 1.5-3.
| Робот | Колено (пик) | Кандидаты | Бюджет на суставы |
|---|---|---|---|
| Четвероногий 3-8 кг (учебный) | 5-12 Н·м | Damiao J4310, CubeMars AK60-6, DIY 5010/6374 + moteus/ODrive Micro. Для самых лёгких - STS3215 | 12 × 120-300 € ≈ 1.5-3.5 тыс. € |
| Четвероногий 10-30 кг | 20-45 Н·м | RobStride RS02/RS03, CubeMars AK70-10 / AK80-9, Unitree GO-M8010-6 (у Go1 - с доп. редукцией в колене) | 12 × 150-450 € ≈ 2-5.5 тыс. € |
| Гуманоид / четвероногий 40-100 кг | 80-200+ Н·м | RobStride RS03/RS04, CubeMars AK10-9 и выше, MyActuator RMD-X, в коленях - ременная/рычажная доп. редукция или циклоидные/волновые редукторы | от 5-10 тыс. € и выше |
- Для ориентира: MIT Mini Cheetah (~9 кг) использует актуаторы с пиком ~17 Н·м при редукторе 6:1, у колена есть дополнительная передача.
- Моторы ставят как можно ближе к корпусу (бедро), а колено приводят ремнём или тягой - это уменьшает инерцию ноги.
- Управление: MIT-режим на 500-1000 Гц, по CAN-шине на ногу, Jetson Orin / Raspberry Pi 5 / x86 с RT-патчем, ROS 2 + ros2_control или собственный цикл на C++. Политику часто обучают в симуляторе (Isaac Lab, MuJoCo).
- Питание 24-48 В, батарея с высоким пиковым током, обязательный e-stop и «безопасное приземление» (переход в демпфирование) при потере связи.
3. Колёсные роботы до 30 кг
Здесь хватает самых простых решений. Для 30 кг, колёс 150 мм и скорости 1 м/с нужно порядка 2-4 Н·м на каждое из двух ведущих колёс с учётом уклона и разгона.
Бюджет и простота
Коллекторные мотор-редукторы 24 В с энкодером (Pololu 37D, goBILDA Yellow Jacket) + RoboClaw 2x15A или Cytron MDD20A. ESP32/Arduino считает энкодеры, Raspberry Pi/Jetson шлёт скорости. ROS 2:diff_drive_controller. На 2 колеса ~100-250 €.Тихо и мощно
Пара гироскутерных мотор-колёс + ODrive S1 на каждое колесо или плата гироскутера с hoverboard-firmware-hack-FOC. Легко тянет и 30, и 80 кг. Минус - вес колёс и 36 В батарея.Точные и компактные
Маленький BLDC с планетаркой (goBILDA-подобный или QDD типа Damiao/AK60 в режиме скорости). Дороже, но есть управление моментом - полезно для балансирующих роботов (сегвей-схема).Всенаправленным платформам (mecanum, omni) нужно 4 мотора с энкодерами и замкнутым контуром скорости - шаговые здесь работают хуже, чем мотор-редукторы с энкодером.
С чего начать
- Колёсный робот: два мотор-редуктора 24 В с энкодером, RoboClaw, Raspberry Pi 5, ROS 2
diff_drive_controller. Всё заведётся за выходные. - Понять FOC: гимбальный мотор + SimpleFOC или Tinymovr. Покрутите режимы позиции, скорости и момента, почувствуйте рукой «виртуальную пружину».
- Рука на столе: 6 × STS3215 (набор SO-ARM101) + LeRobot - шинные сервы и обучение политик.
- Первый QDD-сустав: один Damiao J4310 или CubeMars AK60-6 + CANine + python-can. Когда один сустав слушается в MIT-режиме, 12 суставов - вопрос масштабирования.
- Большая платформа: гироскутерные колёса + ODrive или VESC, с e-stop с первого дня.