Welcome! Log In Create A New Profile

Advanced

OpenServo

Posted by Jared Harvey 
OpenServo
December 01, 2007 06:16AM
I happened across this Open Servo project. It modifies a $10 RC servo with about $10 in parts to make it a digital servo. My understanding is that it can do RPM as well as linear motion control.

[openservo.org]

This would remove the need to handle switching power. It would become all digital level signals. No more need to spend time thinking about stuff like, is this trace big enough, or will it have significant voltage drops due to ohm's law, or analog resonance reasons.

I'd bet you can simply directly wire it to Arduino and you'd be done. No driver boards required. Play the USB game right and I'd bet it could also remove the need for a power cord.
Re: OpenServo
December 01, 2007 08:36PM
theres only one way to find out: build reprap machine and attach the servo to it. if it works, then you have proof and if people are smart, they'll switch!

i dont know if it has enough torque or resolution, but i know you're a proponent of servos. i'd love to see someone try it, at least then we'd have a real answer whether it be negative or positive.

i have a feeling that you wont be able to drive these off usb alone... usb can only supply up to 500mA. still, if servos work well, then thats a good step forward.

openservo sounds like a great start. i love it when we can find places where we can easily collaborate with other open source projects.
Jared Harvey
Re: OpenServo
December 02, 2007 06:37AM
From tower hobbies here are some specs on one of the servo commonly modified.

[www3.towerhobbies.com]

SPECS: Speed: .23 sec/60
Anonymous User
Re: OpenServo
December 03, 2007 04:11AM
Uhm, this is a modified servo used for RC. These servos have a turning limit, usually 180 degrees. So it's good to control an arm joint, but it won't drive a threaded rod. So to use it you'll need to design an arm based RepRap first.

But if you have an arm based RepRap, RC servos are brilliant. You can control them directly from a pwm channel, and you can usually control the pulse width with one assembly or c statement. That's one statement to control the angle of the servo!

A delta like parallel kinematic robot arm (http://www.parallemic.org/Reviews/Review002.html) can be built using RC servos, but it cannot have a very big build volume since a digital RC servo has only 10 bit resolution (or 1024 positions) and RepRap needs .1mm resolution.

--Blerik
Re: OpenServo
December 03, 2007 04:43AM
At least some of those servos can be easily modified to remove the limit, see [www.societyofrobots.com] for instructions...
Jared Harvey
Re: OpenServo
December 03, 2007 06:00AM
I hadn't thought to post about modifying the servos for RPM operation. The concerns with the POT's is that they typically have a dead spot in the range where the mechanical stop is located. So it becomes a bit harder to know your position in that location. If you modified a normal servo, you would have to find a way to get the POT's signal out of the device, now your dealing with analog noise issues, you have to find a mechanical connection, ect. Or you can simply use the OpenServo, and get a plethora of other handy features.

OpenServo doesn't use the PWM like input that normal servos use. It is controlled via I2C, which isn't a real problem for REPRAP because it already has the brains. OpenServo offers back EMF feed back, power consumption, speed feed back as well as speed control.
VDX
Re: OpenServo
December 03, 2007 06:17AM
Hi Jared,

... it's possible to apply a 'linear POT' - a selfmade with wire wound on a stick and a glider can be made too.

Or connect the shaft to a 10-turn-POT or sometihing else ...

But the resoultion and so the positioning accuracy of the axes is mostly poor or with highly precise parts very expensive.

Viktor
Anonymous User
Re: OpenServo
December 03, 2007 07:45AM
You could get the S3003 rc servo, apply these two hacks:

[www.seattlerobotics.org]
[www.seattlerobotics.org]

Then use the AS5030 rotary encoder (very similar to the AS5035 Forrest and Adrian used) and an Arduino to create a very cheap, very easy to control full servo for RepRap. Use the pwm channels on the Arduino for speed/dir input, and read the encoders with the Arduino i2c bus (I saw you can daisy-chain the AS5030s, so you only need 1 i2c connection). Use the same S3003 without encoder on the extruder and you're set.

*** edit ***

Except for the slow rotation speed. Extruding requires at least 2mm/sec -> 2*60*pitch rpm (about 120) when using threaded rod. So the gearing of the rc servo needs to be changed as well.


--Blerik

Edited 3 time(s). Last edit at 12/03/2007 10:53AM by blerik.
Jared Harvey
Re: OpenServo
December 03, 2007 05:55PM
2 mm/sec seems a bit slow. That's about 0.078 in/sec. A shot glass at that speed would take half a day. Perhaps that's 2cm or 2m?

About the encoder, I wish I could find a better reference, but I haven't yet, so here I go.

Shaft end encoders are often used because they are considered lower cost then having a long position encoders on the linear slide. But the cost of these precision tools have come down so much that I often feel the cost is low enough that most don't really care about the differences in cost anymore. 10 years ago, table measurements were $10,000 where the end encoder was under $1,000. Now a linear encoder is about $5 and an shaft encoder is about $5. Seems the shaft encoder is the traditional technique, and it's not cheaper, so it makes sense that it hasn't change. But if you were to use the position encoder on the table you are offered some new features. For example your machine has backlash which you need to calibrate out of your system. If you measured the head directly, you could automatically figure out the backlash, as well as worn in sections of the travel, ect.

So how do you make a table encoder for around $5 you ask? I still don't exactly know, I just know it should be doable. I know a hall sensor cost about $1.50 in qty 1 and credit card strips are dirt cheap, but I don't know where to get a strip of it. I do know that digital calipers use similar technology, but I haven't found a source of the magnetic strip. Check out this DRO

[en.wikipedia.org]

The DRO shown there can be bought for about $25, so the PCB strip should be quite cheap compared to the cost of a finished product.

It's a bit off topic for the OpenServo discussion, but it does involve servo control, So I guess I'll post it here.
Anonymous User
Re: OpenServo
December 04, 2007 07:18AM
There is a cheap way to get a linear encoder with enough resolution for RepRap, an optical mouse. Put it on top of a measuring tape laid out across the table, and you can easily get a resolution of 0.1 mm or more (angle the mouse a little bit for even more resolution). The software bit is more difficult though.

See [spritesmods.com] for more details, and see the Agilent site for specs on different optical mouse sensors if you want to connect the sensor directly to an Arduino.

--Blerik
Re: OpenServo
December 04, 2007 10:10AM
WOW!

blerik... that is a fantastic idea. Seriously. thats the kind of awesome, steampunk style hack that would be amazing. hook up a mouse to get precision encoding on each axis. you can get laser mice for <$10 nowadays, so that would be fantastic.

who has time/energy to try this?!?!
Anonymous User
Re: OpenServo
December 04, 2007 10:51AM
The optical mouse bit is just for experiments. On a RepRap you'd use the bare sensors, they only cost about a dollar (look for adns* on octopart).

You also need to get the camera data to the host computer (the Arduino isn't really fast enough to do image recognition, even if the camera feed is only 18 by 18 pixels). And you need software to count the lines on a tape measure. And for absolute positioning you'd also need to recognize the markings on the tape measure.

I'd love to work on this, but I still need to get my first axis running.

--Blerik


p.s. found two more sites:
Avago - makers of the sensors (spun off from Agilent) [www.avagotech.com]
A pdf with much more info by some robotics guy [www.kronosrobotics.com]
Re: OpenServo
December 04, 2007 10:54AM
thats really cool... even if we dont go this route now, its in all of our minds, so when it comes time to do it, then we'll have a good idea where to start.

so sweet!
VDX
Re: OpenServo
December 04, 2007 12:11PM
... i have a moving robot with an implementer barebone-mousesensor as dispositioning sensor - look at [www.ctbot.de] ...

A Mouse-camera-transfer to the PC is possible too: [www.ctbot.de]

The software is open-source too, runs on an Atmel and is programmed in Java and C++ in Eclipse-IDE.

Maybe someone is interested in digging into, then i can post all links and transfer more infos ...

Viktor
Jared Harvey
Re: OpenServo
December 05, 2007 06:05AM
That's an interesting one. Parts don't cost much but what are the software costs? I wonder if the Arduino has the horse power or if that would need routing to the PC to get a read out.

Some notes about the chip, a MCU needs to first write data to the chip requesting information. The MCU can request X position, Y position and a CCD dump with 324 pixels. If we decide on a tape measure with the right pattern I think we can keep the CCD image processing requirements to a minimum. Also if we use the X and Y positions most of the time and use the CCD dump for on the fly calibrations, we can further reduce the software cost.

I also wonder what the threaded rod or notches on the belt would look like to this device. I want to measure off the table, but I'm still curious.

I think I'll start this topic in another forum subject bacause I'd bet this one grows.

Hmm how big does the image to scan need to be? I'm guessing 1/8 inch square.
VDX
Re: OpenServo
December 05, 2007 06:25AM
Hi Jared,

... the c't-bot-driver-software is open-source in C++ and Java (the linked live-cam-testprogramm is written in Pascal).

You can modify the visible area and optical resolution through normal optical lenses.

The sensor has 19x19 pixels in grey-scale (6 bpp?), so it's not so much data-transfer - the test-program transfers the live image-data per serial COM, with a bit code-digging you can handle it elsewere ...

Viktor
Re: OpenServo
December 06, 2007 03:54PM
How about this...

I read that one of the DARPA Grand Challange contestants used a setup like an optical mouse to get position readings for their vehicle. Could we not do the same thing on the board itself for the xy and another on the z axis as has been suggested?

This is all that has been suggested so far but here is the new part.

We have problem with HDPE shrinkage after laydown. What if you mount a web-cam on the print head--any optical sensor with some resolution, really--and callibrate its input with the optical mouse sensors to get a real-time position on your plastic that has been extruded? You can then correct for shirnkage in real-time and thus control the funny warping that we have been seeing.

Admittedly this would require much more horse-power than the arduino could provide but we are already hooked to a computer. Just lay down a layer, take a picture and send it to the computer, process it, send back actual position data to the RepRap hardware in the form of offsets to apply to the next print level.

Demented
Sorry, only registered users may post in this forum.

Click here to login