In this tutorial, I will explain to you how to transform a simple model building servo motor into a "continuous rotation servo motor". The goal: to obtain an all-in-one DC motor, with motor, gears and control electronics in one box.
Hello everyone !
In my previous tutorial, we were interested in servomotors and using servomotors with an Arduino board. Today we are going to transform a classic model building servo motor into a continuously rotating servo motor.
N.B. There are several ways to achieve the transformation described in this article. The method detailed below is just one way of doing it.
What is a continuously rotating servo motor?
A continuously rotating servo motor is a modified servo motor, which instead of keeping a precise angle, rotates in one direction or the other, like a conventional motor.
What is the point of such a modification? Obtain a classic DC motor, but "all-in-one", with motor, gears and electronics, in the same box, for the price of a simple servomotor.
Once the modification has been made, the angle of rotation of the servomotor is no longer controlled, but its speed. You will no longer be able to control the angle of the servomotor, but in exchange, you will be able to control its speed and direction of rotation, relatively precisely.
In addition, model building servomotors being designed to be easily attached to a support, this modification is extremely interesting for robotics enthusiasts 😉
PS Changing a servo motor to a continuously rotating servo motor is a very simple exercise to perform and is often used to make rolling robots, quickly and slowly.
The necessary
Materials required
To make the modification, you will need:
- a screwdriver,
- a cutting pliers,
- a small flat pliers (to take the gears and other parts),
- a little strong glue (cyanoacrylate glue, hot glue or epoxy glue),
- a servomotor.
For this article, I am using a Futuba S3003 servo motor, a large servo motor model (and a great model making classic), which has the advantage of having plastic parts that are easy to disassemble and modify.
shelling
Before you can make the change, you have to open the beast, gently and delicately, not like a big bully 😉
Opening the bottom of the actuator
Separating the actuator arm
Interior of a servomotor
A servo motor opens by removing the four screws on the back of the cover and the screw on the front that holds the servo arm.
Once the screws are removed, all parts of the servomotor should come off without forcing.
Do not lose the parts, especially the gears and pay close attention to their assembly order! If you reassemble the gears in the wrong order, it won't work anymore.
The smaller the servomotor, the more complicated the disassembly (and reassembly). Not all servo motors are a good candidate for modification. The "9 gram" servomotors for example are very complicated to modify, due to their very small size.
How it works ?
Overview of the electronics and mechanics of a servomotor
Now that the servo is in pieces, it is possible to see in a little more detail how it works in normal times.
Normally, when the servo motor is running, the gears decrease the rotational speed of the motor and increase the torque (force) of the motor tenfold. The gears then drive the servomotor arm which is connected to a potentiometer which allows the servomotor electronics to keep a precise position.
This feedback (electronic -> motor -> gears -> arm -> potentiometer -> electronic) is used to control the position of the servomotor arm according to a setpoint. This is how a servomotor always maintains the angle it is asked to hold, even when something is forcing on the arm of the servomotor.
Unfortunately, a potentiometer cannot turn 360 °. This is why servo manufacturers add stops to the servo arm to prevent the servo from over-turning and damaging the potentiometer.
To transform a classic servo motor into a continuously rotating servo motor, you just have to do two things: remove the stops from the arm and separate the arm from the potentiometer.
By removing the servo-motor, the servomotor becomes a classic DC motor again, but "all-in-one". The engine, the control electronics, the mechanics, the fixings, everything is ready for use.
Remove the stops preventing free rotation of the servomotor
Servomotor arm limit switch before cutting
Servomotor arm limit switch after cutting
The first step in the modification is to remove with cutting pliers (and ideally a cutter) the stops that prevent the servomotor from rotating 360 °.
Two strokes of the wire cutters, a little finishing with a cutter (be careful with your fingers) and it's over 😊
Guillotine the potentiometer
I would have made a joke by shouting "Revolution!", But I am not sure that everyone would have understood the double meaning (of rotation) of the said joke 😉
Servo motor potentiometer after cutting
The second step of the modification is to cut off the head of the potentiometer, just above the base of the flat.
Do not cut the entire axis of the potentiometer, you just have to keep the round part, without flat
Adjustment and gluing
Once the potentiometer has been shortened, it should be adjusted so that the servomotor does not turn when asked to stay at 90 ° (the halfway point of a normal servomotor).
Servomotor zero point adjustment assembly
There are several methods to find the midpoint of the potentiometer.
- The simplest is to mark with a pencil a line on the axis of the potentiometer then to turn it to see the limits and to determine the half-stroke of the potentiometer.
- Another technique is to use a code to empirically determine the durations of the control signals corresponding to the rotational limits of the potentiometer, and then calculate the median value.
- My technique is much simpler, not at all scientific and a little silly, but it works (most of the time). Personally, I prefer the ease of use to the perfect fit.
My technique is simply an Arduino code that asks the servo motor to stay at 90 ° all the time:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /**
* Example code for a servo motor, put the servo motor arm at 90 °.
*/
/* Includes lib Servo to manipulate the servo motor */
#include <Servo.h>
/* Create a Servo object to control the servo motor */
Servo monServomoteur;
void setup() {
// Attach the servo motor to pin D9
monServomoteur.attach(9);
// Rotation 90°
monServomoteur.write(90);
}
void loop() {
} |
Once the code is sent to an Arduino board and the servo motor wired to pin D9, just adjust the potentiometer until the motor stops spinning. Simply.
With this technique, 90 ° corresponds to stopping the motor, 0 ~ 90 ° to clockwise rotation (more or less fast) and 90 ° ~ 180 ° to counterclockwise rotation (more or less fast).
N.B. With my technique, the speed range of the servomotor is not necessarily very symmetrical, but at least it's simple and it works.
Sticking of the servomotor potentiometer
Once the potentiometer is properly adjusted, just pour a dab of glue on the corner of the potentiometer shaft to keep it from going out of adjustment over time.
Here's what it looks like with this little test code, taken from the previous article:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /**
* Example code for a servomotor, have the servomotor head back and forth.
*/
/* Includes lib Servo to manipulate the servo motor */
#include <Servo.h>
/* Create a Servo object to control the servo motor */
Servo monServomoteur;
void setup() {
// Attach the servo motor to pin D9
monServomoteur.attach(9);
}
void loop() {
// Moves the arm from 0 ° to 180 °
for (int position = 0; position <= 180; position++) {
monServomoteur.write(position);
delay(25);
}
// Moves the arm 180 ° to 10 °
for (int position = 180; position >= 0; position--) {
monServomoteur.write(position);
delay(25);
}
} |
An all-in-one motor for not even 10 € in just 15 minutes, it's worth it 😊
PS The speed of rotation remains that of a servomotor, so do not expect to make 110 km / h on your floor with a robot using this kind of modified servomotor 😉
Conclusion
This tutorial is now complete.
If you enjoyed this tutorial, feel free to comment on it on the forum, post it on social media, and support the site if you like it.