发布时间: 2026-04-08
对于好多电子爱好者来讲,在运用ESP32开发板去控制舵机之际,最为经常碰到的问题乃是“怎样接线”以及“为何舵机无法转动”。举例来说,当你试着去制作一个简易的机械臂或者云台,明明依照网上的图示连接妥当,舵机却仅仅抖动而不转动——这一般是由于供电不足或者信号线接错。本文直接给出经过验证的ESP32控制舵机的完整原理图、接线步骤以及核心代码,保证你一次成功。
标准舵机有三根线:
红色(VCC):电源正极,工作电压通常为4.8V~6.0V
棕色或黑色(GND):电源负极/地线
橙色或黄色(信号线):接收PWM控制信号
正确连接方式(关键点):
1. 用于舵机的VCC,要连接到外部5V电源的正极,注意不要去连接ESP32的3.3V引脚或者5V引脚,不然电流会不足,进而导致舵机出现抖动情况或根本不转动。
2. 将舵机GND,连接到外部电源负极,与此同时,连接ESP32的GND引脚,二者实现共地。
![]()
3. 舵机的信号线,要连接到ESP32的任意GPIO口,其中推荐连接到GPIO 2或者伟创动力舵机,4或者,15或者,18。
原理图核心逻辑:
ESP32借助GPIO口输出频率为50Hz的PWM脉冲,其脉宽处于0.5ms至2.5ms的范围,此范围对应着舵机从0°至180°的转角幅度,控制电路依据脉宽来判定电机的停止位置。
不少刚开始学习的人,直接把舵机的VCC接上ESP32的5V引脚,致使舵机有无力抖动的状况,甚至ESP32会重启。原因在于,一个标准的9g舵机工作的时候,电流能够达到200至500mA,然而ESP32开发板的5V输出,通常仅仅能够提供大约400mA,并且还要给自己供电。正确的做法是:采用独立的5V/2A电源适配器或者电池盒,并且把该电源的GND与ESP32的GND连接起来(共地)。
// 使用ESP32 LEDC PWM外设控制舵机
#
const int = 2; // 信号线接GPIO2
const int freq = 50; // PWM频率50Hz(周期20ms)
const int = 0; // 使用LEDC通道0
const int = 10; // 分辨率10位(01023)
// 角度转占空比(0.5ms~2.5ms对应0~180°)
int (int angle) {
// 脉宽 = 0.5ms + (angle/180)2.0ms
// 占空比 = 脉宽 / 20ms 1023
= 0.5 + (angle / 180.0) 2.0;
(int)( / 20.0 1023);
}
void setup() {
(, freq, );
(, );
}
void loop() {
// 0度
(, (0));
delay(1000);
// 90度
(, (90));
delay(1000);
// 180度
(, (180));
delay(1000);
}
代码的相关说明情况则是伟创动力,ESP32的LEDC属于硬件PWM,其精度在程度上远远高于 UNO ,上述所提到的代码经进行验证是能够在常见的ESP32开发板之上直接运行的。
主要核心看法为:ESP32操控舵机的实质是生成稳定的50Hz PWM信号,而且一定要运用外部共地电源。只要线路连接契合上述原理图(外部5V连接到舵机VCC,共地,GPIO连接到信号线),代码就能直接进行驱动。
立即行动清单:
1. 把一个有着5V/2A电压电流规格的电源准备好,这个电源是由手机充电器与USB转DC线组合而成的,或者,准备一个装有4节AA电池的电池盒。
2. 以文字原理图为依据进行连接:舵机的红色线路连接至电源的正极之处,棕色线路连接到电源的负极以及ESP32的GND,橙色线路连接于GPIO2。
3. 把上述代码,复制到 IDE之中,挑选正确的ESP32开发板型号,进行上传。
4. 对舵机进行观察,看其是不是依照顺序转到0°、90°、180°。要是达成了,那就能够被应用于你的机械臂、云台或者机器人项目之中。
要是依照上述步骤去实行操作,那你会在5分钟之内达成ESP32针对舵机的精确控制。倘若依旧存在问题,那就优先去核查共地以及电源电流。