Дорожная карта обученияНачальный

Управление двигателями роботов: дорожная карта обучения

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

Двигатели превращают решения робота в движение. Эта дорожная карта обучения строит управление двигателями с самого начала: сначала безопасно коммутировать реальный ток двигателя с помощью H-моста и PWM, затем замкнуть контур, считывая данные энкодеров, чтобы знать, на какой угол и с какой скоростью повернулось каждое колесо, и, наконец, объединить два колеса в дифференциальный привод для руления и одометрии.

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

Прежде чем начать

Вам нужно уверенно соединять схему на макетной плате и измерять напряжение, а также иметь микроконтроллер, который уже можно прошивать, — обычно это Arduino Uno. Теория управления не требуется; для неё предназначен путь по ПИД-регулятору, который предполагает предварительное изучение этого материала.

Чему вы сможете научиться

  • Управлять коллекторным двигателем постоянного тока (DC) в обоих направлениях с заданной скоростью, не нагревая драйвер или плату.
  • Объяснить, почему двигатель стоит неподвижно при скважности 15% и начинает движение при 30%, и измерить этот порог для собственного оборудования вместо догадок.
  • Преобразовывать импульсы энкодера в пройденные миллиметры и миллиметры в секунду, правильно учитывая коэффициент квадратурного счёта ×4.
  • Преобразовать команду «повернуть налево на 90°» в скорости левого и правого колёс и предсказать конечное положение робота только по движению колёс.
  • Выбрать редукторный двигатель по массе и колёсам собственного робота, а не брать тот, что входит в набор, и узнавать о его свойствах на ковре.
  • Измерить люфт редуктора в градусах и назвать его влияние на одометрию.
  • Определить максимальную силу, которую робот может приложить к покрытию, и установить, что мешает движению: двигатели или шины.

Где обычно возникают трудности

Питание двигателей от шины 5 V контроллера. Это самая частая неисправность первого робота. Регулятор не может обеспечить ток двигателей, поэтому напряжение на шине падает, плата перезагружается, а симптом выглядит как ошибка программного обеспечения. Для двигателей нужна отдельная линия питания; только логическая сторона драйвера использует 5 V платы. Расчёты и измерения приведены на странице бюджета питания робота.

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

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

Непоследовательный подсчёт фронтов энкодера. Квадратурный энкодер даёт четыре подсчитываемых фронта за цикл. Если считать один и использовать из паспортных данных коэффициент ×4, каждое расстояние будет ошибочно в четыре раза, что выглядит как грубо неверно откалиброванное колесо.

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

Что понадобится

Что Зачем это нужно пути Примечания
Два редукторных двигателя постоянного тока (DC) Предмет всего пути Версии с энкодерами стоят немного дороже, но избавляют от последующей переделки
Драйвер двигателей H-мост, чтобы логическим выводом можно было задать ток двигателя L298N, если он был в наборе; TB6612FNG, если вы покупаете
Отдельная батарея для двигателей Питание, которое просаживают двигатели, не должно совпадать с питанием платы Любой аккумуляторный блок, способный обеспечить ток блокировки
Мультиметр Измерение тока блокировки и просадки питания Здесь важны показания тока, а не только напряжения
Рулетка Проверка, что команда «проехать 1 m» дала перемещение на 1 m Самый дешёвый и честный прибор на рабочем месте

Почему путь устроен именно так

Выбор двигателей намеренно предшествует подключению. Почти каждый вопрос «мой робот слишком медленный» или «мой драйвер сгорел» возникает из случайного решения о выборе, принятого месяцами ранее, когда использовался тот двигатель, что лежал в коробке. Расчёт момента, необходимого вашему роботу, занимает двадцать минут и снимает вопросы, которые в остальной части пути приходилось бы задавать снова.

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

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

Энкодеры идут перед дифференциальным приводом, поскольку дифференциальный привод — это арифметика над измеренным движением колёс. Без энкодеров можно рулить, но нельзя сказать, куда дошёл робот, и у одометрии в этом узле не будет исходных данных.

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

Контрольные точки: как проверить усвоение этапа

Этап Проверка Признак успешного прохождения
Выбор двигателя Рассчитайте необходимый момент по массе робота, радиусу колеса и целевому ускорению Получите значение в N·m для сравнения с паспортными данными и узнаете ток блокировки двигателя
Предел сцепления Удерживайте робота полным газом на кухонных весах Показание выходит на плато значительно ниже силы блокировки двигателя, а колёса проворачиваются
Управление PWM Изменяйте скважность от 0 до 255 шагами по 5 на каждом колесе Назовёте скважность первого вращения каждого колеса, и эти два значения различаются
Управление направлением Подайте команды движения вперёд, назад и торможения на обоих каналах Все шесть состояний работают, и вы объясните, чем торможение отличается от инерционного хода
Энкодеры Вручную протолкните робота ровно на 1 m и прочитайте счётчики Показания преобразуются в 1000 mm ± 20 mm с коэффициентом квадратурного счёта ×4
Дифференциальный привод Задайте разворот на 90°, измерьте транспортиром Отклонение в несколько градусов с повторяемостью: постоянная ошибка — люфт, случайная — проскальзывание
Профили движения Задайте короткое и длинное перемещение с одинаковыми пределами Короткое перемещение не достигает максимальной скорости, и вы объясните это по форме профиля
Люфт Вращайте колесо вручную до появления сопротивления в каждом направлении Получите ненулевое значение в градусах

Где заканчивается этот путь

Этот путь заканчивается точным заданием движения. Он не замыкает контур вокруг внешней цели: нет линии для слежения, стены для удержания и уставки, к которой нужно сойтись. Это задача ПИД-регулятора, которая предполагает всё изложенное выше.

Следует назвать три намеренных пропуска. Бесколлекторные двигатели и ESCs (электронные регуляторы скорости) — другая задача управления, а небольшому наземному роботу они почти никогда не нужны. Шаговые двигатели заменяют энкодер управлением положением без обратной связи ценой момента и скорости; для принтера это разумный компромисс, а для передвижного робота — неверный, поскольку для них есть отдельный путь в разделе точное перемещение со шаговыми двигателями. Омнидирекционные приводы — колёса mecanum и omni, способные перемещаться вбок, — нуждаются в четырёх независимо управляемых колёсах и другом наборе кинематических уравнений; для них есть отдельный путь в разделе омнидирекционный привод. И измерение тока, то есть определение фактически потребляемого двигателем тока, а не заданного, — профессиональный способ обнаружить блокировку. Он действительно полезен, но требует оборудования, которого нет у большинства стартовых драйверов.

Дорожная карта обучения

Путь

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

0 / 13 выполнено

100%
Руководство

Управляйте двигателями постоянного тока (DC) с помощью PWM и H-моста

Пошаговое руководство

Открыть руководство
Руководство

Измеряйте расстояние и скорость с помощью энкодеров

Пошаговое руководство

Открыть руководство
Руководство

Дифференциальный привод и одометрия

Пошаговое руководство

Открыть руководство
Руководство

Плавно разгоняйте движение, а не задавайте его скачком

40 мин

Открыть руководство
Симулятор

Запланируйте движение и наблюдайте за ним

Интерактивно

Открыть симулятор
Цель

Точно управляйте роботом

Навык открыт

Частые вопросы

Часто задаваемые вопросы

Что нужно изучить для управления двигателями робота?

Четыре уровня, по порядку. Первый: выбор — перевести массу робота и диаметр колёс в реально необходимые момент и RPM, чтобы двигатель был выбран, а не унаследован от набора. Второй: коммутация — H-мост и PWM позволяют логическому выводу управлять током, который он никогда не смог бы обеспечить. Третий: измерение — энкодер, чтобы робот знал угол поворота каждого колеса, а не предполагал его. Четвёртый: объединение — дифференциальный привод, превращающий скорости двух колёс в курс и положение. Всё последующее — движение по линии, ПИД-регулятор (PID), навигация — строится на этих четырёх уровнях.

Почему мой двигатель не движется примерно до 30% скважности PWM?

Прежде чем что-либо повернётся, необходимо преодолеть трение покоя и заедание редуктора; ниже этого порога двигатель лишь гудит на месте. Значение зависит от конкретного оборудования: передаточного отношения редуктора, состояния подшипников, температуры и нагрузки на колёса, поэтому его нужно измерить, а не найти в справочнике. Увеличивайте скважность шагами по 5 и отмечайте, при каком значении впервые поворачивается каждое колесо. У роботов часто два разных порога, по одному на сторону, и уход робота в сторону на низкой скорости обычно показывает именно эту разницу, а не ошибку управления.

Насколько точна одометрия колёс?

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

L298N или TB6612FNG — какой драйвер двигателей выбрать?

Выбирайте TB6612FNG практически для любого небольшого робота. Его выходной каскад на MOSFET снижает напряжение примерно на 0.5 V против примерно 2 V у L298N, и для двигателя 6 V эта разница превращается в треть напряжения питания, которая уходит на нагрев до передачи двигателю. L298N оправдан, если каждому каналу непрерывно требуется более примерно 1.2 A либо питание двигателей превышает предел TB6612FNG 13.5 V. Кроме того, большинство наборов комплектуется именно этим драйвером, поэтому его стоит хорошо знать, даже если вы замените его.

Нужны ли энкодеры для первого робота?

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

Почему поворот моего робота постоянно перелетает на одну и ту же величину?

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