sheen.bot 标志

← 深度见解

电机一转机器人就重启:原因与解决办法

2026年8月23日·Sheen Robotics
电机一转机器人就重启:原因与解决办法

单片机之所以重启,是因为直流电机启动瞬间的电流尖峰把电池电压拉到了它的工作下限以下。下面是课堂上解决欠压复位的办法。

如果你的机器人跑完初始化代码、点亮了 LED,却在执行驱动电机那一行的瞬间复位,那么你的单片机遇到的是欠压复位。电机并没有烧坏芯片,它只是把芯片的电压抢走了。

直流(DC)电机从完全静止启动时,会在不到一毫秒的时间里索要一股巨大的电流尖峰。如果电源无法瞬间供上这股电流,整个电路上的电压就会骤降。一旦电压跌破单片机的安全工作门限——ESP32 这类 3.3V 芯片大约是 2.7V,标准 5V 的 Arduino Uno 则是 4.3V——处理器就会复位,以免存储器里的内容被写坏。复位期间电机停转,电压随即恢复,代码重新启动,这个循环就无休止地重复下去。

欠压是怎么发生的

要想稳妥地解决它,先得弄清楚电压一开始为什么会掉下去。在学校的机器人套件里,有两个物理事实会导致电机引发的重启:

  • 浪涌电流:静止的直流电机几乎没有反电动势。从电学上看,启动一台电机与把电源瞬间短路几乎没有区别。一台匀速运转时只吃 150 mA 的黄色减速电机,在开始转动的那一瞬间轻轻松松就要 1.2 A 到 1.5 A。
  • 电池内阻:任何电池都有内阻。当四节 5 号碱性电池、或者两节 18650 电芯被要求瞬间给两台驱动电机送出 2 A 到 3 A 时,电池两端的电压就会与内阻成正比地跌落。细杜邦线和弹片式电池夹会让这种电压下垂严重得多。

如果单片机和 H 桥电机驱动(比如 L298N、DRV8833 或 TB6612FNG)共用同一组没有任何缓冲的电池,这段电压下垂就会径直传到处理器的供电线上。单片机把这次下跌理解成断电,于是重启。

办法一:加大容量去耦电容

在不加第二组电池的前提下,最简单的硬件办法就是在电机驱动附近补上大容量电容。

电容相当于一个很小、但反应极快的电荷蓄水池。电机启动、突然索要大电流时,电容会抢在主电池电压彻底垮掉之前,先把电放给电机驱动。

  • 把一只 470 µF 到 1000 µF 的电解电容直接并在电机驱动的大电流供电输入端子(Motor VCC 与 GND)上。
  • 电容的引脚要尽量短。如果它插在三排开外的面包板孔位上,面包板插接铜条的电阻会把它的作用削掉一大半。
  • 确认极性正确:电容上标着负极的那一道条纹必须接地(GND),正极引脚接电源。

针对电机电刷产生的高频电噪声,还应在每台直流电机的两个金属接线端子上,直接焊一只 0.1 µF(100 nF)的小瓷片电容。

办法二:把两路供电彻底分开

如果你做的是四驱机器人,或者用了扭矩更大的电机,电池一旦用旧,光靠大电容未必压得住电压下垂。工程上的终极解法,是把供电分成逻辑供电和电机供电两路。

方案优点缺点最适合
单电池组加大容量电容轻,课堂上要管的电池少电池快没电时仍然容易复位轻量的两驱循迹小车
双电池组电机对单片机零干扰更重,要充两组电池机器人竞赛、重型底盘
降压模块做缓冲只用一组电池,输出电压干净稳定需要用万用表把输出电压调准中学阶段的进阶项目

双电源的正确接法:

  1. 给单片机(Arduino、micro:bit 或 ESP32)配一路自己专用的电源——例如一只 5V 的 USB 充电宝,或者一块 3.7V 小锂电加升压模块。
  2. 电机驱动上的电机供电端子(通常标着 VM 或 VMS)接你的主电机电池组(例如 4×AA 电池盒或 2S 锂电池组)。
  3. 把所有地线(GND)连在一起。单片机和电机驱动必须共用同一个地参考,否则控制方向和转速的逻辑信号会悬空,行为变得飘忽不定。

办法三:在代码里给电机做软启动

很多时候不用碰烙铁,只要改一改代码给电机加电的方式,就能消掉这种重启。课堂上,学生通常写的是从静止一步跳到全速的代码:

analogWrite(motorPin, 255);

这种瞬间跳变会触发最大的浪涌电流。正确的做法是用一个简单的循环,在 50 到 100 毫秒里把脉宽调制(PWM)的占空比一步步升上去。分五小步从 0 加到 255,峰值冲击会明显下降,既能把电池电压保持在单片机的欠压门限之上,机器人的动作又不会明显变迟钝。

课堂上那些看起来像欠压的接线错误

在把整台底盘重新接一遍之前,先检查课堂环境里常见的这三处机械故障点:

  • 免焊面包板:面包板的电源导轨扛不住两台直流电机转起来时 1.5 A 到 2 A 的峰值电流。大电流的电机供电要直接走接线端子或者焊接,不要经过面包板的弹片。
  • 过细的杜邦线:廉价的 28 AWG 杜邦线电阻很大。电机电流从细线上流过时,电还没送到电机驱动,导线本身就已经吃掉了可观的一段电压。
  • 没电的碱性电池:碱性电池越用,内阻涨得越厉害。空载时万用表上读到 6.0V 的电池组,在 500 mA 负载下可能一路掉到 3.2V。测电池电压,永远要在电机正试图转动的时候测。

如果你要为计算机教室或竞赛队配一套可靠的配电硬件,Sheen Robotics商城里有自带滤波的驱动模块;它们也可以作为我们成体系的机器人套件的一部分,通过 Infinity 获得。

#机器人#电子#故障排查#STEM 教育

更多深度见解