Maestro limit switch

Is it possible to have a physical limit switch trip the Maestro controller like you can with the simple motor controllers?

If not and position is entirely software driven, can the Maestro control software be used with the parallax servos? What does the position say for positive direction if it just keeps going continuously?

Hello.

You can configure Maestro channels as inputs and connect switches to them. There is a lot of information about this in the Maestro user’s guide, which is found in the resources tab for the Maestro:

pololu.com/catalog/product/1350/resources

It should be possible to make the switch behave like a limit switch, but it would require you to write some software, either as an internal script on the Maestro or on whatever device is controlling the Maestro.

The “position” variable reported by the Maestro is really just the current pulse width of the pulses being transmitted by the Maestro on that servo channel. For most servos, that number corrsponds to the position of the output shaft, but if you have a continuous rotation servo or your servo is stalled, it will not.

–David

Okay, I just read the details about the Maestro programming. A little about the setup I am trying to accomplish. I want to have a continuous servo turning a disk which will have 2 physical limit switches; 1 at 90 degrees vertical and 1 at zero degrees. Currently I am using the simply motor controller and a small geared DC motor. I am looking to convert this to a servo setup which will run more silently.

I will be using the Autohotkey CMD line interface for sending commands to the Maestro. I see where you can set the channel as input and program it to read that input as a position on the servo, however two things are confusing me. 1) If using a continuous servo, the position feedback is missing. Is there a way to tell it to just not move the servo? Such as speed = 0? and 2) This switch will be closed (NO) causing the rotation to stop and rest there for an indefinite amount of time until another piece of software tells it to move in the opposite direction. With the state of this switch tripped and servo = 0, is there a way to override this and allow it to ignore the previous state so it moves in the other direction and trips the other switch?

This is much easier with the simple motor controller because the limit switch trips the error state and the motor brakes. Then is ignored if additional commands are sent.

I do now know of any easy way to read Maestro input channels from Autohotkey. Unless you know how to call “UscCmd --status” and parse its output in Autohotkey, you will probably need to write an internal script for the Maestro in order to actually stop the servo when the limit is reached.

Yes. Your continuous rotation servo should have some pulse width (e.g. 1500 microseconds) that causes it to stop turning. You would simply command the Maestro send pulses with that width, and that would make the servo stop. Setting the Maestro’s target to 0 would turn off the pulses and that would probably be another way to make it stop.

Yes. I would recommend writing an internal script on the Maestro that implements the following pseudo code:

infinite loop:
  if limit switch 1 is tripped and the Maestro is sending pulses with width less than 1500 microseconds:
    stop moving the servo

  if limit switch 2 is tripped and the Maestro is sending pulses with width more than 1500 microseconds:
    stop moving the servo

This sounds like a lot of trouble to me. Are you sure you can’t just find a quiet standard servo? Then you wouldn’t need to worry about limit switches and Maestro scripting.

–David

Thanks for the input David. I can’t use a regular servo because the amount of rotation isn’t great enough. Even on a 360 degree servo, it won’t get me enough rotation without a lot of gearing. This is really an application best achieved with a small motor and SMC board. Thanks again for confirming my suspicions.