Asked
Resolved Resolved by DJ Sures!

Can I Use A Continuous Rotation Servo And An External Pot As A Standard Servo?

I tried posting this as a question but could not get that to work so plz move this over if needed.

I have searched the site and help files and not found an answer, perhaps someone here can help if there is an existing script or plugin that does what I need. Is there a way that I can use a continuous rotation servo with an external potentiometer to act as a standard servo? For instance, on my inmoov I had to strip the pot and limiting pin from a standard servo and install the pot on the shoulder such that the servo would make multiple revolutions through a gearbox while the arm rotated 90 degrees. That's a lot of work.

To be specific, I do not want to use a motor to do this but rather a CR servo. Not sure how the speed would be handled and imagine the pot would have to be read as an analog signal requiring 2 pins to run it but I can accept that. It would allow me to use different gearbox/belt drive/ planetary concepts for multiple revolutions using basic servo commands.

Thanks!


ARC Pro

Upgrade to ARC Pro

Unleash your robot's full potential with the cutting-edge features and intuitive programming offered by Synthiam ARC Pro.

PRO
Canada
#1  

Did you consider looking at the FOC and BLDC motors instead of Servo's based on your use case.  With BLDC you can move in one direction for multiple revolutions and reverse for multiple revolutions.   I know various people here are working with FOC / BLDC / Planetary gearboxes and  I believe  this a logical direction for ARC to head

#2  

Oh yeah sure Nink and I am following the other thread with interest. I'm really interested in Mickey's cyclodial drive as I have been making those for a while.  But I don't believe that system will be cost effective for some joints that don't require quick or ultra precise movement. A standard servo still ha a lot to offer us, especially with really good ones available for 15-$20. I can imagine a robot being a collection of actuator types based on what you want to spend vs, what you need for each joint.

#3  

One limitation I see using a pot is that the most amount of turns on a multi turn pot I've been able to find is 10 revelations. You may be better off using an encoder and a motor controller like a Kangaroo attached to a Sabertooth.

Scripting for pots attached to an ADC port is a pain in the a**. You can figure out where the pot is by reading the voltage reading returned from it to the ADC port. You can even ramp up speed fairly nicely. However ramping down the speed is much harder and usually has a less then a satisfactory result. A lot of us have tried this and there are examples in the project examples in the EZ Cloud found in the ARC menu. You can also set the speed with PWM control but no way to get any kind of return information on how fast your rig is going. A motor controller like a Kangaroo attached to a Sabertooth will accomplish all this automatically once a auto tune is successful. Perhaps it would be easier in the long run to let a sub controller do all this work and lift the load from your main control unit.

I've not yet used any other control boards except the EZB or IoTiny but there may be other hardware that can read an encoder after flashing it to work with ARC. EZB or IoTiny can't do it without the help of units like the Kangaroo/Sabertooth.

Perhaps others have some better educated advice.

PRO
Synthiam
#4  

Hey perry - what’s happening when you try to post a question? Someone else said the same thing. Not sure what’s going on but I don’t see any errors from this side.

are you getting an error or a message?

#5  

@Dave - Maybe I did not explain my point well enough. I am not looking for a multiturn pot. I am thinking about a 90 or 180 deg pot that is placed directly on the joint or at the gearbox output, not on the servo itself. That way a CR servo can be allowed to make several revolutions into a gearbox with the output only moving 90 or 180 deg. For the inmoov gearboxes you basically start with a standard servo and pull the limiting pin and pot out to create a CR servo, then mount the pot externally.   I know the A-D conversion can be problematical thus my question. I play around with myrobotlab a bit and they have a control for a homemade servo that works like this. It is like a plugin that takes the input from a pot and applies the PID loop to make a homemade servo.  I'm not ready to leave the good old servo behind and move to BLDC systems with encoders and what have you. It's not needed for this project yet and I need to keep each joint under $20

@DJ - I tried posting as a question and when I hit submit the page just reloads as if I had not entered a vital piece of info. I am selecting the hardware and continuous servo topic correctly and hitting the checkboxes stating I checked help and it is not a hardware question. Tried both Firefox and Chrome. As can be seen, I can post a feature request easy enough. I believe that is what the last guy had to do as well, or tack onto an existing thread.

PRO
Synthiam
#6  

Perry - I see the reason you want to use a continuous rotation is because a regular servo has stoppers on the horn output gear

maybe a continuous rotation would work, but it’s a big maybe. Here’s why it’s only a maybe...

  • there may not be even a resistor in place of the potentiometer. Most continuous rotation servos that I know of have programming. That’s programming which is specific to the function of being continuous rotation. So it’s impossible to know if there’s compatible programming -or- even a place connect a pot on the pcb

my suggestion is to open up a regular servo and cut, pull, or file-down the stoppers on the gear. Then, connect your higher degree pot in replacement of the built in one.

isn’t that how the inmoov shoulder servos work?

#7  

Yep, that's exactly right DJ and it may not be a good idea so consider this more of a discussion than a feature request. Mostly I was trying to avoid taking apart a lot of servos and cutting pins as well as extracting their pots. I thought a CR servo might be a good option because it has an onboard PWM decoder and ESC built in. The speed and direction of the servo is easily controlled. A separate pot at the joint axis would be used to provide positional feedback to ARC which would calculate the PID for the PWM signal to be sent back to the servo.

The basis for the thought is that there is a bit of a misnomer in my opinion to calling them continuous rotation servos as the word servo denotes a closed loop positional system. In reality they are just actuator motors with a built in reversible speed controllers that can be controlled by PWM. If you think of them from that standpoint then perhaps the idea has some merit. Or perhaps not...

For me it goes beyond inmoov because I like working on gearboxes and I always need an easily controlled reversible variable speed driver for them. I use a CR servo for that. They are fast enough, powerful, and really inexpensive. For more complex stuff I use a BLDC and Odrive with an encoder. But man the cost is crazy when you have a lot of joints.

PRO
Synthiam
#8  

*questions are fixed now. There was a corrupted db issue that we had to tackle all night..

As for the topic - there are no decoders in a continuous rotation servo. And yes, they are still a closed loop.

Some continuous rotation servos will have resistors soldered onto the PCB in replacement of the potentiometer. Others will have code in the micro that doesn't use the resistors.

The ones with resistors you "might" be able to use. Because they're most likely regular servos with the potentiometer replaced with resistors. I can tell you that the ezrobot continuous rotation servos will not have resistors and therefore would not be useful for this test.

But some other no-name Chinese ones might have resistors because that's a more cost-effective solution for them.

#9  

Great news about the questions function being fixed. Website maintenance is a lifelong task.

I have found a servo that is easier for me to pull the pot from so I will work with those for now. For the sake of this discussion, CR servos do have a decoder in them. I am just probably using the wrong term. I meant that they take a standard 1520 uS PWM servo signal and convert that to a signal that instructs the onboard ESC to create an analog  +/- voltage for the motor inside. That is the decoding function I was talking about.

Regardless, thanks for the discussion.

PRO
Synthiam
#11  

Oh yes you’re correct - that’s an interpreter between a pwm signal and output motor. Sometimes they are digital (microcontroller) or analog circuitry.

which servo did you find that works? It’ll be good to know for some of my projects. I know Jeremie is starting to build some interesting stuff at home too

#12   — Edited

I just received a batch of these servos. Nothing special about them from a performance standpoint as they are only about $15. Just a clone servo.

User-inserted image

The reason I like them is because the pot and controller board are connected and both come out without desoldering. Just kinda tug it out gently. This way I can mount the pot and servo electronics right at the joint, the servo is just a motorized gearbox with no internal electronics. If you use a gear or two at the pot located in the final axis you can now tune your servo to operate over any range. For instance if you start with a 90 deg servo and put a 1:2 reduction on the pot you now have a 45 deg servo. If you use a 2:1 reduction it is now a 180 deg servo. A 4:1 reduction would give you a 360 deg servo and so on.  There is still a metal limiting pin that needs to be pulled though and that is a bit tough at times.

User-inserted image

Who knows, maybe the EZRobot hidef servos look like this on the inside? I don't have one but I bet you might:D

PRO
Synthiam
#13  

I actually don't - but jeremie should. I think he mentioned taking the weekend off to do something so he might not see this right away. He'll chime in

#14  

Here is my 'deconstructed' servo. It will serve the purpose of what I was initially trying to do. On a standard modified inmoov servo the electronics stay in the servo so there are wires coming out for the serv and for the newly relocated pot. THis method only has one set of wires leaving the servo so it is much easier for cable routing. An added benefit is that the electronics now have better cooling so maybe it won't burn out as easily.

User-inserted image

PRO
Canada
#15  

Interesting that the pot is directly mounted to the PCB on that servo. I've rarely seen that.

The EZ-Robot HDD servos have some wires connected from the PCB to the pot. The pot can simply be removed by popping of the output gear and then removing the retaining screw. If there's any silicon or hot glue around the pot you'd just have to use a bit of isopropyl alcohol to loosen it up and remove it.

PRO
Synthiam
#16  

Jer, the question is do ezrobot continuous rotation servos have a pot

#17  

I'm pretty sure no CR servos have a pot internal to them.

#18   — Edited

I highly doubt that the EZ Robot continuous turn servo has a pot in it. After a lot of searching the highest count multi turn  pot I can find has 200 turns and they sell for around $200 USD. Most common are 10 turn pots for much less but they alone would cost more then one of EZ-Robots continuous turn servos. If you want to monitor a continuous turn servo use an encoder with a motor controller that can count it.

PRO
Synthiam
#19   — Edited

Nearly all continuous rotation have a pot. The pot isn’t connected to the output shaft. The pot is accessible on the side to fine tune the stop/center pwm position.

the only type of servo that doesn’t always need a pot is continuous rotation. And there’s two reasons why...

  1. there’s resistors hard wired to emulate the pot and therefore the pwm center is not adjustable

  2. there’s a hard coded value in a digital servos microcontroller. Again, pwm center not adjustable

Remember, a continuous rotation servo is still a servo using the same internals as a standard servo. A pot/decoder is required for servos. It’s what defines the close loop pid behavior of a servo.

I don’t know if ezrobot continuous rotation servos have a pot because I can’t recall if we hardcoded the pwm center for the ezb in the servos digital microcontroller

PRO
Canada
#20  

Yeah there isn’t a pot in the 360 HDD servos. I would have to have a look if they have resistors or if they are hard coded.

PRO
Canada
#21   — Edited

I looked into it today, I can confirm that the EZ-Robot 360 HDD servos are hardcoded. While there are 3 pads to solder a potentiometer to, I tried it, the servo does not respond to an added potentiometer.

I was a bit confused about this conversation but I think I see what you guys are saying now.

To confirm and attempt to simplify things here's a summary:

Continuous Rotation (360) servos cannot be positionally controlled in their continuous rotation configuration - where the potentiometer isn't connected to the output shaft. If they have a potentiometer (+ electronics) that is only used for adjusting the center "stop" value, it does not give the servo positional data because it is not connected to the output shaft. If the potentiometer was connected to the output shaft, it would work as a regular servo.

Common 180-degree rotation servos or winch servos can be positionally controlled. These servos have an output gear coupled to a potentiometer inside that is used along its resistive range to determine the position of the servo.  A 180 servo can turn into a multi-turn servo if the potentiometer is uncoupled from the output gear and mounted externally.  The servo motor will continue to spin forever until the potentiometer reaches the position value that has been specified.

An example of this is the inMoov shoulder assembly. The shoulder assembly uses a 180-degree servo that is coupled to a worm gear that meshes to a slower moving output gear. The 180 servo potentiometer is extended from the servo PCB and mounted to the output gear. The servo will spin the worm gear multiple times until the output gear reaches the intended position.