Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Maestro-Arduino library


#1

I am using Minimaestro 18ch servo controller with Arduino Uno. I think i have got all my connections right.

I am facing a problem in implementing the settarget function.
According to the literature, i need to use the code in the following manner:
setTarget (ch. no., 4 x microsecond value)
and standard servos have range of 0 to 180 deg corresponding to 1000 to 2000 microsecond.
so to go to zero position I write :
setTarget (0, 4000)
and to go to 180 deg position i write :
setTarget (0, 8000)

When I send these commands, the servo doesn’t go to 0 deg but somewhere between 0 and 90 deg position. Similarly , when I send 8000, the servo goes between 180 to 90 deg.

When I use the same servo with only Arduino by using servo.write(pin no., angle in deg), the servo goes to the required position and uses the complete range of 0 to 180 deg.

Although the neutral position matched in both the cases.
The servo motion gets scaled down because of this issue and I don’t get the expected output.

What would possibly be wrong?
I am using TowerPro SG90 and MG996 servos.


#2

Hello.

I moved your post to a new topic since it is about a different issue.

Typically, the range of pulses a servo accepts is around 1000us to 2000us, which corresponds to about 90 degrees of movement on most servos. The Maestro is configured to output a pulse width in that range (1000us to 2000us) by default, which is probably why you are only getting 90 degrees of movement. It sounds like when you use the Arduino Servo library it was probably sending pulse widths outside of that standard range.

To get a wider range of movement, you can change the minimum and maximum limits for each channel in the “Channel Settings” tab of the Maestro Control Center. However, be careful when adjusting your servos beyond the default 1000us to 2000us range since commanding servos to go past their mechanical limits could damage them.

- Amanda


#3

Ok great!
Thanks a lot Amanda.
I have been struggling for past few days to get that fixed!
Arduino’s PWM default range is 544 to 2400. So I can try entering this value. I think it shouldn’t exceed the mechanical limit.


#4

Hi Amanda,

I have experienced a similar problem, I have adjusted the min and max limits of the servo within the ‘Channel Settings’ of the control centre and applied the settings, however when I connect the micro to the arduino I still cant achieve the full range of motion. Is there any other else that i need to do to get the Micro Meastro working correctly with the arduino library.

Kind regards

John


#5

Hello, John.

I am sorry you are having trouble getting your servo’s full range of motion using our Arduino Library for the Maestro. After applying the changes to the minimum and maximum limit, did you verify that your servo moves the full range by moving the corresponding channel slider under the “Status” tab of the Control Center? If not, can you do that and let me know the outcome?

Also, can you provide a link to the servo you are using and post your entire code here so that I can see how you are setting the servo’s target position?

- Amanda


#6

Hi Amanda

So I had a play this evening and I’m pleased to say everything is working just fine now. I’m not totally sure why I wasn’t getting the motion range the first time round but I started from scratch and it all worked ok.

Thanks for you reply though.

Kind regards

John