
Perry_S

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!
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.
are you getting an error or a message?
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.
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?
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.
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.
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.
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
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.
Who knows, maybe the EZRobot hidef servos look like this on the inside? I don't have one but I bet you might
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.
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
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.