Pages: [1]   Go Down
Author Topic: Continuous rotation with positional control using Arduino  (Read 694 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, I will be using the Futaba S9352HV due to it's high speed and good torque. I could not find more details regarding this servo but according to the sales guy, he states that this servo is capable of continuous rotation, however, positional control is no longer possible via the built-in servo driver - hence it may have to be via from my own servo controller, which in this case will be the Arduino.

I would like to have 2 revolutions with positional control (eg stops at 0, 90, 180, 270, 360, 450, 540, 630 and 720 degrees). I would like to ask if this possible to configure using the Arduino?
Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 331
Posts: 16523
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 If a servo is modified for continuous rotation operation it ceases to be a servo and becomes a bi-direction variable speed geared motor drive, you can command it's speed and direction but not it's position and no external 'servo controller' will solve that. If the servo has not been modified then it should have position control over 180 degrees or less. So unless you indeed can find more detailed information on this 'digital' servo I suspect it won't do what you want it to do.

Lefty
 
Logged

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 36
Posts: 5519
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, I will be using the Futaba S9352HV due to it's high speed and good torque. I could not find more details regarding this servo but according to the sales guy, he states that this servo is capable of continuous rotation, however, positional control is no longer possible via the built-in servo driver

Given that this "sales guy" stated "this servo is capable of continuous rotation" - it would seem that the servo being sold isn't sold pre-modified. You would have to do that yourself; there are plenty of tutorials out there that explain how to modify a servo to make it a continuous rotation servo. Once you do so, though, you will lose any means of controlling it's position (since it essentially involves disconnecting the internal potentiometer from the gearing, so the motor controller inside the servo no longer has a positional reference signal).

- hence it may have to be via from my own servo controller, which in this case will be the Arduino.

Yes - you would have to come up with a way to monitor the position of the servo, and when it was positioned properly, stop it (or set up a PID controller to gradually bring it to a halt).

I would like to have 2 revolutions with positional control (eg stops at 0, 90, 180, 270, 360, 450, 540, 630 and 720 degrees). I would like to ask if this possible to configure using the Arduino?

Yes, you could do this - there are a number of ways:

1. You could gear down the output shaft and connect that reduction drive to a potentiometer (maybe even the one from the servo, if you are able to carefully remove it).

2. You could attach a multi-turn potentiometer to the output shaft - there are many inexpensive ones, but most are limited to 10 turns or so.

3. You could attach what is called a "servo potentiometer" to the output shaft. These are potentiometers that are continuous rotation devices, which have a small "dead band" gap at one point in the rotation; they tend to be precision devices, and rather expensive new. If you can find one used or surplus, you'll pay less (but again, depending on where you buy them and the brand, "less" might still be seen as expensive).

4. You could attach an optical absolute encoder to the output shaft - note that this will likely be the most expensive option, depending on how many bits the encoder is (the higher the number of bits, the smaller the minimum rotation angle you can resolve will be - ie, an 8 bit encoder will give you 360/256 degree resolution, a 9 bit encoder will give you 360/512 degree resolution, etc).

All this said - that is a lot of money to spend on a servo that you are going to void the warranty on by opening and modifiying - to essentially turn it into a gear motor that you have to add your own position control back to. You might want to explore getting a standard DC gearmotor with similar torque specs, and a suitable h-bridge to drive it. At least, take a look into it - you may find it to be a better deal (or you may not - but at least you'll know).
Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Offline Offline
God Member
*****
Karma: 27
Posts: 829
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It's possible. Certainly not simple. What will you use in place of the potentiometer to support the 2 turns? A multi-turn pot, an optical encoder?
Logged

Offline Offline
Faraday Member
**
Karma: 60
Posts: 3242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There are frequent questions on this... I wonder why the manufacturers don't make a "continuous rotation servo with position control" or I suppose more correctly a "bi-directional dc motor with position control".... oh wait, they do... that's a stepper motor isn't it?
Logged

Retired from Arduino.
PMs are set to ignore all.

0
Offline Offline
Tesla Member
***
Karma: 116
Posts: 8944
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I would like to have 2 revolutions with positional control (eg stops at 0, 90, 180, 270, 360, 450, 540, 630 and 720 degrees). I would like to ask if this possible to configure using the Arduino?

You might consider a sail winch servo that is capable of several positional turns.
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks guys for all the helpful input! I will try to research more on stepper motors and sail winch servo.

I'm actually making a remote controlled braking mechanism for my light vehicle project, below is a rough sketch of the setup that I will be constructing:
https://www.dropbox.com/s/zdza1u3e48kdfvl/Photo%202013-04-04%2002.52.20%20PM.jpg

Basically I will need to deal with a total of 24kg of load on the brake levers (for emergency braking), thus in order to use the servo (Futaba S9352 HV torque 22kgcm) that I wanted, I will construct a lever system to reduce the load. The lever system is also good as I will place it beside the seat to act as a manual "handbrake" so that the user can activate it by hand when the electronics go wrong. The brake lever structure will be hidden in the vehicle and connecting this brake lever to the "handbrake" will be a brake cable. I wanted to use this servo as it is fast (0.06 sec/60°) and this is crucial during emergency braking. The positional control is good as it allows the user to have controlled braking. However, I did not realise that a normal unmodified servo is unable to rotate more than 1 revolution with positional control. I though that it was possible when controlled using the Arduino.

I also though of using a linear actuator with potentiometer but I could not find one that is as fast or faster than the Futaba servo S9352 HV.

Logged

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 36
Posts: 5519
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

There are frequent questions on this... I wonder why the manufacturers don't make a "continuous rotation servo with position control" or I suppose more correctly a "bi-directional dc motor with position control".... oh wait, they do... that's a stepper motor isn't it?

No - a stepper motor does not have position control; in order to have true positional control of a motor, you need a feedback mechanism from the motor to know it's position. Open-loop control of a stepper motor is not the same as a closed-loop servo feedback system.

Think about it this way: You hook up a stepper motor to a controller, and the controller commands the stepper to step 100 steps clockwise, then stop. You then spin the shaft (with your hand) counter-clockwise. Does the controller still know what the position of the motor shaft is? No - it does not, because it doesn't have a reference from any kind of encoder as to what position the shaft is it. That is the difference between open-loop vs. closed-loop control of a motor; you can get away with open-loop control to a certain extent with a servo, provided that it's running and holding torque is much greater than what it is moving (or what is bearing against it) - or if the gear system it is running through isn't inherently back-drivable. But ultimately, that is still just a guessing game; it is still possible to miss steps, skip steps, or have the system be out of step with the actual position. For most low-cost CNC machines, this may be OK - but if you want any kind of real precision (and for high-speed, high-precision CNC, you use DC motors anyway - not steppers) - you need closed-loop control.
Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Offline Offline
Faraday Member
**
Karma: 60
Posts: 3242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Point taken cr0sh, thanks.
Logged

Retired from Arduino.
PMs are set to ignore all.

Pages: [1]   Go Up
Jump to: