For one reason or another, a lot of Hackaday readers are doing stuff with servos as of late. Here’s a few servo hacks that made their way into our tip line over the past day or so:
USB servo controller and a Stewart Platform
[Patricio] needed a way to control a bunch of servos for his thesis project. He came up with a USB servo controller (Spanish, here’s the translation) powered by a 40-pin PIC 18F microcontroller. The board connects to the USB port of a computer and supports up to 8 servos with 8 additional digital I/Os. Why all this horsepower? It’s for a Stewart Platform [Patricio] and his partner [Natalia] built.
Continuous rotation servos
Standard servos are usually limited to a rotation angle of somewhere between 140 and 160 degrees. Sometimes you need a continuous rotation servo, and those are a little more expensive. Every servo is a continuous rotation servo if you disable a the variable resistor as [Valentin] shows us. It’s a simple, if old, hack. It’s new to someone, though.
Eight servos on a Raspi
[Mikael] made a little board to attach to the GPIO header of his Raspberry Pi and control up to 8 servos. The board is running a serial interface with a small microcontroller on board. There’s nothing in the way of schematics or code, a testament for why you should always use a good email address when sending something into the HaD tip line. It seems [Mikael] is making a proper board, and we’ll more than happily give it a full post when it’s complete.
Using servo’s as low cost Series Elastic Actuators.
http://random-workshop.blogspot.com/2012/06/10-series-elastic-actuator-series.html
-Hash
Patricio has the audacity to copyright plagiarized academic work, and did not even bother to change university owned free circuit topology.
Note, you can simply “tap” the feedback directly from the variable resister.
Next year expect this Patricio to claim credit for your work too. What a tool…
The continuous rotation servo modification is only part of the story. Many servos also have a mechanical stop that would need to be removed. Often it is a simple plastic or metal pin that can be clipped off. In addition it would probably be best to replace the potentiometer with a matched pair of fixed value resistors. The resistors would need to be fairly close in value so a quick check with an ohmmeter to get a decently matched pair would save you later headaches. Keep the pot on hand in case you want to re-install it to restore the original function.
actually i have used a trimpot for fine tuning of the servo. Even resistors can change their values over time enough to throw things off.
Also, this is very useful for the servo.
http://www.seattlerobotics.org/encoder/200009/S3003C.html
I have used a trim pot as well (I usually use a right angle trim pot and drill a hole in the side of the case for future adjustments) but for a “quick” mod fixed resistors are usually suitable. While resistors can change value over time, you can adjust the servo center in software and the changes over time should be infrequent enough to be acceptable.
How close should the resistors be matched?
What is the consequence of a poor match?
I just did my first one with something like a 2.20K and 2.190K.
Thanks!
There are no mechanical or electrical reasons why servos are not operated outside their 120 degree (or so) range. That’s simply their range when driven with 1.0-2.0ms pulses. Most servos will respond to 0.5-2.5ms pulses with a range of about 270 degrees. Linearity at the limits of that range suffers, so check the resulting performance.
Servos can also be “powered down” by simply not sending them pulses. Current consumption is greatly reduced, but the servo can be physically pushed to new positions.
Here is a 32 channel controller i use, i just add the ftdi uab cable
http://www.mculabs.com/projects/ssx32.html
The price is mutch better then the 16 channel Pololu servo controller @81$. THX for sharing, when I need 32 Servo’s I’ll remember…
I recall seeing complex mechanical piano or other instruments playing setups that used a shitload of servos, so it’s not completely impossible you need such numbers.
Five servos, one PICAXE18M2 uC.
http://ijprojects.blogspot.com/2011/08/picaxe-18m2-robotic-hand-complete.html
is there any practical reason for the servo limitation? (as i see it, the pot can do almost 360deg and the feedback should still be functional)
its much easier to break the pot than it is to break a metal pin.
On a standard servo setup, controlling something like a rudder, when the servo moves past 90 from center, there is no more linear travel, starts going backwards, it actualy dies off as it reaches 90
Servos allow you to set the *position* of the motor (as opposed to the rotation speed). If you disconnect the feedback to the POT, doesn’t that just turn it into an expensive DC motor (forward/back without “position” setting ability)?
Yes, but with gearbox.
And speed control. And a funky method of controlling it. The gearbox thing though, that’s the best part. Even the cheap little 9g servos have some oomph to them.
haven’t tried it yet, but i think you might be able to desolder the pot then connect a few extra wires to its legs.giving you a geared dc motor + analog position feedback in one package.
i think it will also be cheaper compered to buying a geard dc motor+encoder.
Commercial servos are too weak, too expensive, and too limited in general – wake me up when there is a viable DIY version
lately*
contrary to what is stated in the article, not all servos can be modified for continuous rotation – the output shaft gear on a few servos (usually cheaper ones) do not have teeth all the way around and therefore cannot operate beyond where the teeth end.
also a good source for servos, including continuous rotating servos and specs, see ServoCity (servocity.com)
the way i used to modify them was either to remove the stop and pot drive (and cement the pot into a neutral position), or remove the stop and the pot and replace it with either an internal or external, multi-turn, 5k pot – multi-turn just makes it allot easier to adjust the pot to stop servo drift
when modifying the servo in that way, the holding power of the servo is lost since it is not getting any feedback from a static pot. this is fine for driving a wheel or whatever, but not so good in an application where you need the servo to remain in position when a force is applied to it