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

ARC Pro will give you immediate updates and new features needed to unleash your robot's potential!

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.