Home > Industry Insights >Servo
TECHNICAL SUPPORT

Product Support

Does The ESP32 Control Servo Not Move? Most Likely The Power Supply Is Insufficient Or The Wiring Is Wrong.

Published 2026-03-02

After working on it for a long time, why doesn’t theservostop moving? Don't worry, nine times out of ten something went wrong in these places.

The most crazy thing about controllingservos with ESP32 is writing the code and connecting the wires with great anticipation, only to find that one of the severalservos always "goes out" as soon as the power is turned on. Don't be too quick to doubt life. Most likely, this is not a metaphysical problem, but a common pitfall we have made in wiring, power supply, or code configuration. Today we are going to talk about how to find it out step by step when encountering "one of the steering gears is not moving".

Is the servo power supply insufficient?

Many times, the servo does not move because it is broken, but because it is "hungry". Ordinary small servos, such as SG90, may seem inconspicuous, but once they are loaded or need to respond quickly, the instantaneous current demand will soar. The onboard 3.3V output capability of ESP32 is very weak and cannot feed a moving servo at all. If you plug the power cord of the servo directly into the 3.3V pin of the ESP32, it is normal for it to be unable to move or to move stumblingly. Think about it, how can an adult have the strength to work if he doesn’t have enough to eat? The same principle applies to steering gear.

Therefore, a separate "canteen" must be prepared for the servo. Generally speaking, it is recommended to use an external power supply to power the servo, such as a 18650 lithium battery, or an adjustable output buck module. Remember to connect the GND of the ESP32 and the GND of the servo power supply firmly together so that the signals have a common reference point. Check your wiring. Is it "turning on" the servo that doesn't move? Or let it squeeze together with everyone to grab food?

Are the signal lines connected to the correct pins?

Although the ESP32 is powerful, its pin functions are somewhat complicated. Not all GPIO pins marked with numbers can directly output PWM signals for controlling the servo. Some pins have a default "high level" at startup or are used for other special functions. If you accidentally connect the servo signal line to these "special" pins, after the program is run, it may not be initialized at all, or it may behave strangely.

I suggest you develop a good habit and give priority to using the ESP32 development board with clearly marked pins that can be used for PWM. You can usually refer to the pin function diagrams of various ESP32s. Avoid using GPIO 6-11 which are usually connected to the onboard Flash. You can try changing the signal line of the non-moving servo to a PWM pin that you are sure will work well, such as GPIO 13, 14, and 15. Make some changes simultaneously in the code and see if it "comes alive".

Is the channel configuration in the code accurate?

esp32 controls the servo and one servo does not move_esp01 controls the servo_esp32 controls the servo code

ESP32 controls the servo. The core is to generate PWM signals through the LEDC hardware library. In the code, we need to first set up a PWM channel, then bind this channel to a specific GPIO pin, and finally set the PWM frequency and resolution to generate the 20ms period pulse required by the servo. If in your code, several servos share the same PWM channel, they will interfere with each other, which may show that only one servo can move, or it may act abnormally.

Take a quick look back at your initialization code. Is each servo assigned an independent channel number? For example, if (0, 50, 16) uses channel 0, then the next servo should use (1, 50, 16). The channel number and the pin are two different things. It must be ensured that each servo instance has a unique channel. This is a small detail that is easy to overlook but is very crucial.

Is the servo itself really broken?

After troubleshooting to this step, if the power supply, pins, and code seem to be OK, then we have to wonder if there is a "physical" problem with the servo itself. After all, the steering gear is a combination of mechanics and electronics. It may be broken when leaving the factory, or it may be burned by inappropriate voltage or wrong wiring during previous troubles. A simple way to judge is to connect the "problem servo" to a channel that is confirmed to be working properly and test it.

For example, you connect the signal wire of the servo that is not moving to the signal pin of the servo that is running happily next to it (note that it is the same control program, just change the wire and plug it in). If it moves, it means there is nothing wrong with the servo itself, and the problem is still in your previous wiring or configuration. If it remains motionless, or just makes a "buzzing" sound but does not turn, it can basically be concluded that this steering gear brother is probably about to "retire with honor." Don't be reluctant, just change it when it's time to change it.

Can the power of the power supply keep up?

You may have supplied power to the servo separately, but is the power source powerful enough? Imagine that several servos need to turn at the same time, and the instantaneous current demand will be very large. If you are using an ordinary dry battery, or an old mobile phone charger with an output capacity of only 500mA, the voltage will be pulled down instantly. When the voltage is low, the ESP32 may reset, and the servo controller may also strike due to insufficient voltage. The servo that is farthest from the power supply or has a slightly larger internal resistance may be the first to "fall down."

You can try to connect the power to the non-moving servo separately and see if it moves. Or, change to a more powerful power supply, such as a regulated power supply with an output of more than 2A, or a lithium battery pack with a smaller internal resistance. At the same time, try to use thicker wires to power the steering gear. Slender wires have high resistance, which will also cause a lot of voltage loss during transmission, and it will be "overpowered" when it reaches the steering gear.

Okay, we have talked so much, from power supply to pins, from code to the servo itself, these pitfalls are basically the culprit of "one servo not moving". If you go through it from beginning to end, you should be able to solve most of the problems. Thinking back on your construction process, which aspect do you think is most easily overlooked? Is it a problem with the power supply or the channel configuration in the code? Welcome to share your experience in the comment area, and don’t forget to like and save it. Next time you encounter the same problem, you can directly check it out!

Update Time:2026-03-02

Powering The Future

Contact Kpower's product specialist to recommend suitable motor or gearbox for your product.

Mail to Kpower
Submit Inquiry
+86 0769 8399 3238
 
kpowerMap