Почему робот перезагружается при включении моторов (и как это исправить)

Микроконтроллер перезапускается потому, что пусковой бросок тока двигателей постоянного тока роняет напряжение батареи ниже рабочего порога. Разбираем, как побороть brownout-сброс в классе.
Если робот выполняет код инициализации, зажигает светодиоды, а затем сбрасывается ровно в тот момент, когда начинает работать код движения, ваш микроконтроллер уходит в brownout-сброс (сброс по просадке питания). Моторы не сжигают чип — они лишают его напряжения.
Когда двигатель постоянного тока (DC) трогается с места, он на доли миллисекунды требует огромного броска тока. Если источник питания не способен отдать этот ток мгновенно, напряжение в схеме проваливается. Как только оно опускается ниже безопасного рабочего порога микроконтроллера — около 2,7 В для 3,3-вольтового чипа вроде ESP32 или 4,3 В для стандартной 5-вольтовой Arduino Uno — процессор сбрасывается, чтобы не повредить содержимое памяти. Мотор во время сброса останавливается, напряжение восстанавливается, код загружается снова, и цикл повторяется бесконечно.
Механика просадки питания
Чтобы надёжно всё починить, полезно понять, почему напряжение вообще падает. За перезагрузки из-за моторов в школьных робототехнических наборах отвечают две физические причины:
- Пусковой ток. У неподвижного двигателя постоянного тока практически нет противо-ЭДС. С точки зрения электрики включение мотора почти неотличимо от короткого замыкания источника питания на долю секунды. Жёлтый хоббийный мотор-редуктор, потребляющий 150 мА на ходу, в момент старта легко требует от 1,2 А до 1,5 А.
- Внутреннее сопротивление батареи. Внутреннее сопротивление есть у любой батареи. Когда от четырёх щелочных элементов AA или пары банок 18650 требуют мгновенно отдать 2 А—3 А на два ходовых мотора, напряжение на клеммах падает прямо пропорционально этому сопротивлению. Тонкие перемычки и подпружиненные батарейные контакты делают просадку заметно хуже.
Если микроконтроллер и драйвер моторов на H-мосте (например, L298N, DRV8833 или TB6612FNG) питаются от одной и той же батареи без буфера, эта просадка приходит прямо на шину питания процессора. Микроконтроллер воспринимает провал как пропадание питания и перезагружается.
Решение 1: поставьте буферные конденсаторы
Самая простая аппаратная мера, не требующая второго комплекта батарей, — добавить ёмкость рядом с драйвером моторов.
Конденсатор работает как крошечный, но очень быстрый резервуар электрического заряда. Когда мотор включается и резко требует тока, конденсатор разряжается в драйвер раньше, чем напряжение основной батареи успевает окончательно провалиться.
- Поставьте электролитический конденсатор на 470 мкФ—1000 мкФ прямо на сильноточные клеммы питания драйвера моторов (Motor VCC и GND).
- Делайте выводы конденсатора как можно короче. Если он стоит через три ряда на макетной плате, сопротивление её контактных дорожек сведёт эффект на нет.
- Следите за полярностью: полоса минуса на конденсаторе должна идти на землю (GND), а плюсовая ножка — на питание.
Против высокочастотных помех от щёток мотора дополнительно припаяйте керамический конденсатор 0,1 мкФ (100 нФ) прямо на две металлические клеммы каждого двигателя.
Решение 2: полностью разделите шины питания
Если вы строите полноприводных роботов или используете более мощные моторы, одних буферных конденсаторов может не хватить при подсевших батареях. Окончательное инженерное решение — разделить питание на логическое и моторное.
| Схема | Плюсы | Минусы | Кому подходит |
|---|---|---|---|
| Один комплект батарей с буферным конденсатором | Малый вес, меньше батарей в обороте на уроке | Сбросы всё ещё возможны на почти севших батареях | Лёгкие двухмоторные роботы — следопыты по линии |
| Два комплекта батарей | Нулевое влияние моторов на микроконтроллер | Лишний вес, заряжать нужно два комплекта | Соревнования по робототехнике, тяжёлое шасси |
| Буфер на понижающем преобразователе | Один комплект батарей, чистое стабилизированное напряжение | Выходное напряжение нужно настраивать мультиметром | Продвинутые проекты старшей школы |
Как правильно развести два источника питания:
- Питайте микроконтроллер (Arduino, micro:bit или ESP32) от отдельного источника — например, от повербанка на 5 В или небольшого LiPo на 3,7 В с повышающим преобразователем.
- Питайте моторную клемму драйвера (её часто подписывают VM или VMS) от основной моторной батареи (например, отсека на 4×AA или сборки 2S из Li-ion).
- Соедините все провода земли (GND) вместе. У микроконтроллера и драйвера моторов должна быть общая земля, иначе логические сигналы направления и скорости «повиснут» и поведение станет непредсказуемым.
Решение 3: сделайте плавный пуск в коде
Часто перезагрузки из-за моторов удаётся убрать вообще без паяльника — просто изменив то, как код подаёт мощность. В классе ученики обычно пишут код, который мгновенно прыгает от покоя к полной скорости:
analogWrite(motorPin, 255);
Такой мгновенный переход вызывает максимальный пусковой ток. Вместо этого наращивайте скважность ШИМ (PWM) в течение 50—100 миллисекунд простым циклом. Разгон от 0 до 255 за пять небольших шагов заметно снижает пиковый бросок и удерживает напряжение батареи выше порога brownout, при этом робот не начинает двигаться ощутимо вяло.
Ошибки монтажа в классе, которые маскируются под просадку питания
Прежде чем перебирать всё шасси, проверьте три механических слабых места, типичных для школьных условий:
- Беспаечные макетные платы. Шины питания макетной платы не способны надёжно проводить пиковые 1,5 А—2 А, которые тянут два раскручивающихся двигателя. Ведите сильноточное питание моторов через винтовые клеммы или пайку, а не через пружинные контакты макетки.
- Тонкие перемычки. У дешёвых перемычек dupont сечением 28 AWG высокое сопротивление. Когда через них идёт моторный ток, сам провод роняет заметную часть напряжения ещё до драйвера.
- Севшие щелочные батареи. По мере разряда щелочных элементов их внутреннее сопротивление резко растёт. Батарейный отсек, показывающий на мультиметре 6,0 В без нагрузки, под током 500 мА может провалиться до 3,2 В. Всегда измеряйте напряжение батареи в момент, когда моторы реально пытаются крутиться.
Если вы оснащаете компьютерный класс или команду для соревнований надёжной силовой электроникой, модули драйверов со встроенной фильтрацией есть в магазине Sheen Robotics, а также входят в наши структурированные робототехнические наборы Infinity.



