Electronic – arduino – Servo Motor Won’t Turn Without Push

arduinomovementservo

So, please forgive me for the naiveté I'm most certainly going to exhibit here. I'm mostly a software guy, so this project is a little out of my comfort zone. Nevertheless:

Project

I have been given a Python script that sends commands to an Arduino board, which in turn runs a servo motor, turning a plate to which it is attached.

When I run this script, the plate is supposed to do 1 full rotation.

Problem

The motor doesn't turn. The script works, and the Arduino does get the proper commands, but the plate just sits. Here's the expected workflow:

  • Run script
  • Motor turns
  • Plate rotates 360 degrees

Here's the only workflow I can get to work:

  • Run script
  • Give plate a push
  • Motor turns
  • Plate rotates 360 degress

Background

There is nothing obstructing the motor or the plate. This exact setup has allegedly worked in the past. Because I've not had much experience with Arduinos and servos, I'm having a hard time pinpointing where to begin debugging this problem. Any help or suggestions would be most appreciated.

Hardware

Further Testing

About once out of every 5 times (20%), it will just work. No pushing or prodding; it just zips up to speed and rotates.

About once every 50 times (2%), it won't move at all, even with pushing. This, however, might be an issue with the script/Arduino communication.

Best Answer

First, let me say that you didn't give enough information to say for certain what's causing the problem. Not a big deal, really, except that you have to understand that my answer may not be 100% correct.

The link to the Hobbico web site doesn't give much information about that servo. I "think" it says that it will pull 0.7 amps when running without a load. If this is the case, then you can assume that at startup or with a load (a.k.a. plate) it will consume more than 0.7 amps. This amount of current does not seem high to me, given the large size of the servo.

What we don't know is just how much more than 0.7 amps does the servo consume. A good guess is, "way more than 0.3 amps more". What this means is that you are likely drawing more current than what the 1 amp power supply can provide.

There are several things that could happen when the servo tries to consume more power than is available. Odds are that one or more of these things is happening:

  • Power Supply (PS) output dips, causing a loss of torque in the servo. This will make the servo stick until pushed.
  • PS output dips, causing the control electronics in the servo to reset.
  • PS output dips, causing the Arduino board to lock up or reset.
  • PS detects a fault and shuts off. It might turn back on immediately, or after a while, or not at all until it is unplugged and replugged.
  • PS gets damaged.

The simple way to see if any of this is happening is to put an o-scope on the output of the power supply. While you have the o-scope out, you might as well look at other signals, like the signals going to the servo. You could also try a different, more powerful, power supply but that is less informative.

Related Topic