基本问题解决--舵机
为什么舵机供电不要用单片机供电?
答:
核心原因可以归结为两个字:电流。
1. 电流需求巨大(最核心的原因)
单片机的工作电流:单片机本身(如常见的STM32、Arduino Uno上的ATmega328P)在正常运行时的电流消耗很小,通常只在几十毫安(mA) 级别。其板载的稳压芯片(如经典的AMS1117-5.0或LM7805)也是按照这个等级设计的,最大持续输出电流一般在500mA - 1A左右,同时还需要为板上的其他元件供电。
舵机的工作电流:一个普通的微型舵机(如SG90)在空载、轻载运行时,电流可能达到100-200mA。但一旦遇到阻力(堵转),或者你是更大、扭矩更强的舵机(如MG996R),电流会瞬间飙升。
堵转电流(Stall Current):这是最关键的数据。当舵机轴被卡住无法转动,但电机仍在全力输出时,电流会达到最大值。一个MG996R舵机的堵转电流可以轻松超过1A,甚至达到2A。
后果:如果你让单片机板上的稳压芯片去提供这个电流,就如同让一辆家用轿车去拉重载卡车。结果必然是:
电压骤降:稳压芯片无法提供如此大的电流,输出电压会急剧下降。导致单片机因供电不足而自动复位或程序跑飞,你的整个系统会变得极不稳定。
过热损坏:稳压芯片在超负荷工作下会急剧发热(功率 = 压降 × 电流,热量巨大),轻则触发过热保护而关闭输出,重则永久性烧毁。
2. 电流噪声与干扰
舵机内部的电机是感性负载,在启动、停止和转向时会产生非常大的电流尖峰和电气噪声。
后果:这些噪声会通过供电线路传导回单片机的电源系统,导致电源电压上产生毛刺。
单片机是对电源质量非常敏感的器件,这些毛刺轻则导致ADC(模数转换)采样不准,重则引起内部逻辑错误,再次导致系统不稳定或复位。
3. 地线干扰
即使你外接了电源给舵机供电,也必须将外接电源的地(GND)和单片机的地(GND)连接在一起,为电流提供一个完整的回路。
如果不共地:控制信号的电平不匹配,舵机将无法正确识别来自单片机的PWM信号。
大电流回路:舵机工作时的大电流会在地线上产生一个微小的电压波动(因为导线有微小电阻)。如果模拟传感器(如电位器、光敏电阻)和数字电路共用一条很长的地线,这个波动会干扰传感器的读数。