Servos don't move smoothly

Hi,

I'm assembly a robot arm kit with 4 servos.
The servos are "Micro Servo SG90".

I code a simple sketch ti test them buy they don't move smoothly. They move in jerks and sometimes don't move at all and emit a buzzing.

How Can I move them smoothly?

Perhaps there's not enough current?- where are they getting their power from?

Even micro servos can draw about 700mA at stall, so they could be drawing almost 3A if stalled together, such as they would be for example if you have them starting to move at the same time.

Insufficient power is indeed a common problem with servos. If you're trying to run 4 servos from the Arduino 5V pin then that will be your problem.

Or maybe the "simple sketch" that you haven't shown us is doing something strange.

Steve

How can I supply enough Power? How voltage and ampere do I Need?

FabioZ96:
How voltage and ampere do I Need?

4.8 to 6V.

About say 800mA for each servo that can possibly draw stall current at once; over 3A worst case.

FabioZ96:
How can I supply enough Power?

Something like this, with one big supply, or duplicate this with smaller supplies running say 2 servos each:

For those servos 4 x AA NiMH rechargeable batteries will almost certainly be o.k. NOTE: NiMH rechargeables only NOT standard AA alkaline batteries.

Steve

A lot of good advice so far.
Another point to consider - those are tiny servos without a lot of torque. They may not be strong enough for your application.

vinceherman:
They may not be strong enough for your application.

FabioZ96:
I'm assembly a robot arm kit with 4 servos

I'm guessing it's a me-Arm, which doesn't really have an application, it's a toy. Useful for learning of course, but not going to be used for any real lifting.

I tryed your suggest.

To supply my 4 Servos I used the "AC/DC Adamptor" furnish by Arduino kit: 9Volt, 1Ampere.
I use a diodo to stabilize current.

This is my code to test the Arm:

#include <Servo.h>


//0-Base
//1-Rise Arm
//2-Approach Arm
//3-Tool

Servo servo[4];
//           Joint #0 #1 #2 #3
const int pin[4] = {3, 5, 6, 9};

const int minPos[4] = {90, 20, 10, 2};
const int maxPos[4] = {180, 90, 140, 30};

int pos[4] = {minPos[0], minPos[1], minPos[2], minPos[3]};
int curPos[4];



void setup() {
  Serial.begin(9600);

  for ( int i = 0; i < 4; i++) {
    servo[i].attach(pin[i]);
    servo[i].write(pos[i]);
    curPos[i] = pos[i];
  }

}

void loop() {


  for ( j = 0; j < 4; j++) {


    for ( int i = minPos[j] ; i < maxPos[j]; i++) {
      servo[j].write(i);
      Serial.println(i);
      delay(10);
    }
    for ( int i = maxPos[j] ; i >= minPos[j]; i--) {
      servo[j].write(i);
      Serial.println(i);
      delay(10);
    }
    delay(1500);
  }

  
}

Here a video and an image:

https://drive.google.com/drive/folders/1UGmVOB_mWkIOGgptiZAfStQYV7nwpAUQ?usp=sharing

I don't understand why the base servo shake as if has resonance caused by vibration. Ho can I solve this vibration?

In the link there are also the arm's instructions so you can see the structure.

In this video the arm seems to be very smoothly:

FabioZ96:
I tryed your suggest.

To supply my 4 Servos I used the "AC/DC Adamptor" furnish by Arduino kit: 9Volt, 1Ampere.

If "your" refers to me, I certainly didn't suggest that/ I suggested this:

elvon_blunden:
4.8 to 6V.

About say 800mA for each servo that can possibly draw stall current at once; over 3A worst case.

Why would you put 9V into a 6Vmax device? And if more than one servo needs full current at the same time, 1A is too little.

To supply my 4 Servos I used the "AC/DC Adamptor" furnish by Arduino kit: 9Volt, 1Ampere.

Bad idea.

Use a 5-6V, 3 Ampere or more power supply, as advised earlier.

I have not this Power supply :frowning: . With this supply seems to work but I don't know.

Have you seen the video at the link?

FabioZ96:
I tryed your suggest.

Apparently not.

FabioZ96:
To supply my 4 Servos I used the "AC/DC Adamptor" furnish by Arduino kit: 9Volt, 1Ampere.

You have already been told that's wrong, too many volts and too few amps. Few amps and the servos' motor might not have enough juice to perform properly.

FabioZ96:
I use a diodo to stabilize current.

How can you stabilize DC current with a diode?

FabioZ96:
I don't understand why the base servo shake as if has resonance caused by vibration. Ho can I solve this vibration?

First: use a proper power supply. Even with the proper power supply it could be way too much inertia for this servo, its internal control loop is calibrated on a smaller weight and now it overshoots the set point.

FabioZ96:
I have not this Power supply.

That's no one fault but additional amps are still required.

FabioZ96:
In this video the arm seems to be very smoothly:
https://youtu.be/bYcbU8aQ2Js

In that video they use MG90 servos not the cheaper, weaker SG90s. And they use a 5V 2A power supply not a 9V 1A supply.

So that's two good reasons why yours isn't working nearly as well.

Steve

So I think is necessary to change servos with other better. Can you suggest me some servos not expensive?

Before buying new servos have you tried your existing servos with a decent power supply yet? Either a 5V "adaptor" with at least 2A preferably more or maybe 4 x NiMH rechargeable batteries.

It won't matter how good the servos are, if you're still using your useless power supply it's never going to work.

Steve

I'm sorry to comunicate that 2 servos don't work. Please don't scold me.
So I have to buy new servos together with the power supply.
Which servos not expensive do you suggest to buy? Can I use old servos (the 2 remaining working) with the new servos?

You can try with these servos (amazon, bangood) and this power supply (amazon, bangood).
If you have something more powerful than the 9V-1A power supply, you can also evaluate a step-down converter like this one (amazon, bangood). 12V-1A would be still underpowered, 12V-2A will be fine.

Yes, you can use the remaining servos but i suggest to use them in the least stressed joint.

Hi,
In the long run you will be better off with metal geared servos, rather than the plastic gears that the SC90 is.

Tom... :slight_smile:

Thanks for suggests.

Differences between this:

and this

???