Servo don't rotate more than ~120 degrees

Hi,

I bought a Futaba servomotor and it don't rotate more than 120⁰ .

I used this code:

#include <Servo.h>

#define SERVO 5 // Digital port 5

Servo s;
int pos;

void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0);
}

void loop()
{
for(pos = 0; pos < 180; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 180; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
}

I suppose the servo I bought isn't original.

Is there any alternative, using via software, to make it spin 180⁰?

Thanks,
Markos

What you describe is not unusual. Many servos cannot move through a full 180°.

You should do some more tests using Servo.writeMicroseconds() because that allows you a wider range of movement. 1000 microsecs is about 0° and 2000 is about 180°. But you can try smaller and larger values.

...R

In the Servo library in default mode write(0) is actually 544 microseconds and write(180) is 2400 microseconds. It's rare for a servo to respond to any greater range than that but it is very common for standard RC servos to have a maximum travel of around 120 degrees.

Which Futaba servo do you have? They make many different ones.

Steve

slipstick:
In the Servo library in default mode write(0) is actually 544 microseconds and write(180) is 2400 microseconds.

Thanks for that - I had not checked.

...R

Hobby servos are not to be confused with servomotors: Servomotor - Wikipedia

MarkT:
Hobby servos are not to be confused with servomotors: Servomotor - Wikipedia

Unfortunately almost all Arduino documentation and many comments on these forums do confuse them, referring to things like the little SG90 as a servo motor. See Servo - Arduino Reference

Steve

As opposed to actuator or mechanism.... Ho hum...