Advertising

Can you trick a servo to ignore limited angles?

  • Hi friends,

    first time user here. I have a question regarding two similar servos. I have a 180* DSS-M15 and a 270* DSS-M15S servo. I’m searching for a way to make these go continuously without physical modifications. When I turn them manually they don’t have any physical restrictions and can be turned continuously. My question is, is there a way to make them ignore their limited angles? I know other motors might be more favorable. But I’m restricted to use these. I’m also using a arduino UNO as my controller.


    Thanks in advance. ^^

  • AD
  • GBarbarov , Yes I totally agree.

    Jobbe , In short the answer is no as the traditional RC Servo is a closed loop system.


    The servo uses an internal potentiometer to feed back an analog signal to the internal PWM controller board, you just send it a specific set of PWM signals to send it to a position, which is then processed by the internal PWM controller board of the Servo in order to drive it to the specific location.

    The motor position is then controlled between the low and high range of the potentiometer, usually the middle position of the potentiometer is 0 degrees, low position maybe max negative degrees and high position is max positive degrees.

    This makes it close loop.


    The only real way of doing it is to 'kid the internal PWM controller' it is always at a 0 position, allowing you to then send repeating max position degree PWM signals in order to achieve continuous rotation, this requires the Servo to be physically modified.


    In theory then you could:

    1. Disconnect the potentiometer wires from the PWM controller board and bring those out to the Arduino as an analog input.

    2. Add a potential divider in place of the potentiometer to kid the PWM controller it is at 0 degrees.

    3. Then monitor the analog input value from the potentiometer and scale it to a volts=degrees to determine the position of the motor within 0-360 degrees.

    4. You would then need to monitor for when the potentiometer goes from high to low or low to high and place them into a count (rotation count*actual position) to determine what angle the motor is at.


    Main problem is the inaccuracy of the potentiometer (deadband), as I am pretty sure, even after 1 full rotation, you would not have an accurate position, unless you're sampling code is very precise.


    Remember an RC Servo is used for positioning within a range (determined by manufactured specs).

    For a continuous positioning motor, you would be better to use a stepper motor.


    • Helpful

    Jobbe says "When I turn them manually they don’t have any physical restrictions and can be turned continuously" it servo may not have a potentiometer, and use a magnetic encoder, and in that case maybe if you can with some software trick or a jumper in the servo pcb modify its limits, if nobody has done it first you will have to open it and explore :-)


    For example these work with an multiturn encoder: https://www.adafruit.com/product/3614


    We can see that it is already 2020 !!! the RC servos have also evolved, I remember having to cut the plastic limits and remove the potentiometers :-)

  • Nice to see these are now available, I may treat myself..…………:top:

    Just by sniffing on the encoder feedback, determine pulse/deg resolution in order to track the position of the motor.

    Still, you will have to implement and manage a rotation count and employ some sort of finite positional value to introduce positive and negative degree limits.


    I think Jobbe what GBarbarov has linked to here would suit your purpose exactly, without the need of any modification.....

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now