Servo.attach min max defaults confusing

The Servo.attach min and max parameters default to 544 and 2400, respectively.

These are the default pulse widths in microseconds corresponding to 0 degrees and 180 degrees.They are explained here: http://arduino.cc/en/Reference/ServoAttach

But from other websites and the Arduino Servo.writeMicroseconds reference I see that the standard signal pulse width for 0 degrees and 180 degrees are 1000 microseconds and 2000 microseconds respectively.

See here: http://arduino.cc/en/Reference/ServoWriteMicroseconds

writeMicroseconds()

Description Writes a value in microseconds (uS) to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft. On standard servos a parameter value of 1000 is fully counter-clockwise, 2000 is fully clockwise, and 1500 is in the middle.

So why does it seem that for Servo.attach() the default min and max values are 544 and 2400, but the standard for most servos is 1000 and 2000?

So why does it seem that for Servo.attach() the default min and max values are 544 and 2400, but the standard for most servos is 1000 and 2000?

The default min/max us values are set in the servo library, which you can probably modify if needed. Standard types of hobby RC servos are generally specified for ~90 deg rotation, and that they may rotate ~180 deg is an extra bonus. You should also be able to use something like below to change the default us range.

myservo.attach(7, 500, 2500);

There is no such thing as a standard servo.

The defaults given are just a typical values that seem to work with some common servos.

For accurate operation you will need to specify the right timing parameters for your specific servo.

majenko: There is no such thing as a standard servo.

The defaults given are just a typical values that seem to work with some common servos.

For accurate operation you will need to specify the right timing parameters for your specific servo.

Possibly that is a new "standard" for generally worthless info. :)

zoomkat:

majenko: There is no such thing as a standard servo.

The defaults given are just a typical values that seem to work with some common servos.

For accurate operation you will need to specify the right timing parameters for your specific servo.

Possibly that is a new "standard" for generally worthless info. :)

Nope, sorry. It was, but you just topped it :P

We're still a long way from the worthlessness of the question though ;)

So why does it seem that for Servo.attach() the default min and max values are 544 and 2400, but the standard for most servos is 1000 and 2000?

1 to 2 millisec was and still is the minimum pulse range used in the R/C radio control industry, it's been a standard for many decades now. However the maximum pulse range is a servo specific value that you must determine by either manufacture's datasheet information or by testing of the specific servo you are using.

So bottom line is that if you set your servo library to use 1-2 millisec range then it will work with any R/C servo you use but perhaps at less travel range then you would like or that the servo is capable of. The Arduino servo library construct of 'degrees of travel' of a servo is a basic faulty abstraction built on invalid assumptions that does not help in really understanding how servos are designed to be operated.

Lefty