Логотип sheen.bot

← Идеи и опыт

Почему ваш двухколёсный робот не едет прямо

20 авг. 2026 г.·Sheen Robotics
Почему ваш двухколёсный робот не едет прямо

Одинаковые двигатели не вращаются с одинаковой скоростью. Разбираем, почему жёстко прописанные поправки мощности не работают и как добиться настоящего движения по прямой с помощью энкодеров.

Когда вы подаёте сигнал со 100-процентным коэффициентом заполнения на два одинаковых двигателя постоянного тока робота с дифференциальным приводом, робот почти всегда уводит влево или вправо. Причина в том, что два серийных двигателя постоянного тока никогда не бывают одинаковыми ни электрически, ни механически: небольшие расхождения во внутреннем трении, силе магнитов и сцеплении колёс дают разную частоту вращения при абсолютно одинаковом электрическом входе.

В классе или на соревновательной мастерской этот увод — одно из первых препятствий, которое выводит учеников из себя. Понимание того, почему так происходит и почему быстрые программные хитрости этого не решают, и есть мост между игрушечной робототехникой и настоящей инженерией.

Анатомия разброса двигателей

Небольшие мотор-редукторы постоянного тока — особенно распространённые в учебных наборах любительские двигатели в жёлтом корпусе — изготавливаются с широкими производственными допусками. Несколько микроскопических различий гарантируют, что двигатель A поведёт себя иначе, чем двигатель B:

  • Намотка катушки и внутреннее сопротивление: медный провод, намотанный на якорь, немного отличается по длине и натяжению, что создаёт небольшую разницу в сопротивлении и противо-ЭДС (электродвижущей силе).
  • Сила постоянных магнитов: у спечённых ферритовых магнитов есть небольшой разброс плотности магнитного потока, а он меняет отдаваемый момент.
  • Трение щёточного контакта: механические щётки прижимаются к коллектору с разным усилием пружины, добавляя неравномерное сопротивление.
  • Допуски редуктора: многоступенчатые редукторы с прямозубыми шестернями, установленные на такие двигатели, дают разное трение в зависимости от постоянства профиля зубьев, соосности валов и распределения смазки внутри.

Проблему усугубляют и механические факторы за пределами самого двигателя. Если одна резиновая шина посажена на обод на 0,5 мм глубже, её эффективный радиус качения меняется. Если аккумуляторный блок робота смещён на 10 мм влево от осевой линии, на левое колесо приходится большая нормальная сила и большее сопротивление качению. В итоге приводная база оказывается несимметричной.

Почему жёстко прописанные «поправки» всегда подводят

Первое, что приходит ученику в голову, — вручную уравнять двигатели в коде:

// The standard beginner workaround
motorLeft.setSpeed(255);
motorRight.setSpeed(238); // trim down the faster motor

Это называется разомкнутым управлением: команда отправляется, а результат в реальном мире считается совпадающим с запросом, хотя никто его не проверяет. Ручная поправка, может, и заставит робота проехать прямо три метра по гладкому линолеуму на свежих батареях, но в реальных условиях она стабильно разваливается:

  • Кривые разряда батареи: когда за 45-минутный урок напряжение падает, двигатели постоянного тока теряют скорость нелинейно. Поправка, откалиброванная при 8,2 В, начнёт уводить в сторону, как только батарея просядет до 7,4 В.
  • Изменение трения поверхности: переезд с гладкой плитки кабинета на офисный ковролин с коротким ворсом меняет сопротивление качению неодинаково для обеих шин.
  • Тепловые изменения: по мере нагрева редукторов и обмоток при непрерывной работе внутреннее трение падает, и соотношение скоростей двух сторон смещается.

Решение: замкнутая обратная связь с энкодерами

Чтобы робот ехал прямо независимо от напряжения батареи и фактуры поверхности, микроконтроллер должен в реальном времени измерять, что на самом деле делают колёса. Для этого нужно замкнутое управление.

Проще всего добиться этого с помощью поворотных энкодеров на колёсах. Энкодер состоит из датчика (обычно оптического прерывателя или магнитного датчика Холла) и вращающегося элемента на валу двигателя или на колесе (щелевого диска или многополюсного магнитного кольца). Каждый раз, когда колесо поворачивается, датчик выдаёт импульсы.

Подход к управлениюМеханизмПоведение при севшей батарееПоведение на новой поверхности
Разомкнутое (фиксированный ШИМ)Считает двигатели одинаковымиУводит непредсказуемоУводит непредсказуемо
Разомкнутое (жёсткая поправка)Вручную смещает один двигательТеряет калибровкуТеряет калибровку
Замкнутое (обратная связь по энкодерам)Динамически подстраивает мощность по измеренным тикам колёсДержит прямой курсДержит прямой курс

Как реализовать пропорциональное управление скоростью

Чтобы сделать работающий замкнутый регулятор, продвинутый курс матанализа не нужен. Для школьной робототехники достаточно простого пропорционального (П) контура, выполняющегося каждые 50–100 миллисекунд.

Вместо того чтобы задавать мощность двигателей напрямую, программа измеряет обороты колёс за фиксированный интервал времени и подстраивает мощность так, чтобы убрать разницу:

  1. Считайте импульсы энкодеров на обоих колёсах за фиксированное окно (например, каждые 50 мс).
  2. Вычислите ошибку: error = leftTicks - rightTicks.
  3. Если error > 0, левое колесо вращается быстрее правого. Немного уменьшите ШИМ левого двигателя, немного увеличьте ШИМ правого — или примените поправку, пропорциональную величине ошибки: correction = error * Kp (где Kp — подобранный коэффициент усиления).
  4. Обнулите счётчики тиков и повторите.

Если вы собираете собственную программу занятий или подбираете аппаратные платформы, выбор наборов с микроконтроллерами, поддерживающими аппаратные прерывания, и со встроенными магнитными энкодерами — таких как модульные экосистемы на платформах вроде Sheen Canvas или робототехнические платформы линейки Infinity — экономит десятки часов ученических мучений. Фокус обучения смещается с борьбы с механическими дефектами на освоение обратной связи по датчикам и теории управления.

Главный вывод

Механические несовершенства — не дефекты, которые надо прятать за временными программными заплатками; это фундаментальная реальность физических вычислений. Если научить учеников измерять реальную работу двигателей энкодерами и замкнутыми алгоритмами, привычный источник раздражения в мастерской превращается в понятный практический урок по реальным системам управления.

#робототехника#двигатели#пид-регулирование#STEM-образование#электроника

Больше в категории «Идеи и опыт»

Почему аналоговый датчик на ESP32 сходит с ума при включении Wi-Fi
Идеи и опыт· 15 окт. 2026 г.

Почему аналоговый датчик на ESP32 сходит с ума при включении Wi-Fi

Если аналоговый датчик начинает выдавать бессмысленные значения сразу после запуска Wi-Fi, скорее всего, он подключен к выводу ADC2. Радиомодуль Wi-Fi в ESP32 монополизирует ADC2; переключение датчика на ADC1 моментально решает проблему.

Читать далее →
Почему пин Arduino считывает HIGH при отсутствии подключения (и как это исправить)
Идеи и опыт· 14 окт. 2026 г.

Почему пин Arduino считывает HIGH при отсутствии подключения (и как это исправить)

Неподключенный входной пин Arduino не имеет по умолчанию нулевого напряжения: он находится в высокоомном состоянии и действует как антенна, улавливающая электростатические наводки.

Читать далее →
Почему корни в школьной гидропонике становятся коричневыми и осклизлыми (и как это исправить)
Идеи и опыт· 13 окт. 2026 г.

Почему корни в школьной гидропонике становятся коричневыми и осклизлыми (и как это исправить)

Коричневые осклизлые корни в гидропонике указывают на питиум (корневую гниль), вызванный высокой температурой воды и нехваткой кислорода в закрытых классах. Вот как спасти систему с помощью аптечной перекиси водорода и аквариумной аэрации.

Читать далее →