It's going to be a lot of hard work I suspect but it does seem quite easy in my head and I wanted to ask am I missing something?
Here is what I have at the moment:
Servos are controlled by the PWM pins - I'm thinking of using 6 to control 6 servos in the arm. Rotation at the bottom, 3 angling servos along the arm (giving 3 bones to the arm with an angling 'hand') and a rotator on the hand along with the clamping action.
I'm a complete novice at any of this but I come from a programming background - it seems very simple to connect up to the PC via a serial port and set angles and whatnot to send to the arduino. The servo library and serial stuff makes this quite simple from an initial look which is amazing.
Onto servos. I've been looking at a few. Would a relatively powerful servo (or 6 of them??) draw more current than the arduino can provide? If so, is it as simple as powering the servo alternatively but sending the angle to the servo via the PWN pin and having a common ground? Or is there more to it than that?
I can do the programming side on the PC. I was thinking of having direct control over the angles in the arm obviously, but also some kind of inverse kinematics setup so I can set an end point for the arm in 3D space and the rest figures itself out.
The arm itself I was thinking of making out of clear plastic (low weight but relatively strong. I'm also thinking it will require some bearings at the joints to allow for easy motion with the servos in place. Are there any pitfalls with these ideas?
By day I am a teacher (science), so I also have access to the schools technology workshops for things like working the plastic etc.
I'm also thinking it will require some bearings at the joints
Yes, you'll need a relatively stiff arm structure with low-friction joints. Take a look (if you can) in your local model shop, the kind of place that sells radio-controlled models such as cars, boats and planes. They usually stock tiny ball-bearings, and will also have servos with ball-bearings. But they might be a bit expensive compared to non-ball-bearing types!
Thanks for the reply. I'm just suprising myself at how simple it seems to get this up and running. I did think that running the servos direct wouldn't be practical in terms of current - for an arm I was thinking of quite powerful ones as well - nothing exceptional but they would need a bit of oomph, not just small RC car ones. I wonder how much current they will draw? I should read up a bit more on servos - do they draw a constant current when working, or much more when moving and then it drops off?
If it's too much for all servos I can maybe run each in turn to get a final position, but I would like to try to get them running together - can't be too hard to get a power supply on the cheap to power them all.
Yes you really should use an external power supply to effectively use multiple servos. You can't just move one and then deselect (unpower it) it because it will lose all holding torque and be subject to moving from the mechanical load.
Most R/C applications that are using lots of servos (or extra large landing gear type servos) often use a 6 volt power for just the servos as they are rated for that and it gives them extra force and speed.
I second the need for an external power supply for the servos. Under zero load conditions, the servos will draw verry little current. However, as the load increases, the current draw will quickly increase past the max allowed by the arduino.
The way a servo works is by combining a dc motor and gear set with a potentiometer. It uses the potentiometer in a closed loop feedback so when you set the servo to a specific angle, the servo will hold at that angle. If you try to turn the output shaft, the servo will attempt to maintain its position by applying a voltage to the dc motor.
A more powerful supply current for the servos seems simple enough to achieve. As the arduino would be connected to the PC while the arm is being used, that can get power via USB easily enough as well. I guess I could try to have it all run off one power supply, to allow for adding wireless control of the arm in the future, but that's probably overdoing it and not needed either.
A good CHEAP source of bearings is old floppy drives. The bearings that the disk spindles run on are of high quality and should be almost as good as new.
Using servos that draw more current than an arduino pin can supply: I didn't see where anyone mentioned that as well as a heftier power supply you need to use a suitably rated transistor to drive each servo.
I think rodmac is confused about the need for a transistor to drive a servo. The servo itself contains the power driver circuit. The pulses that control the servo are just low-power logic signals, easily within the capability of an Arduino output pin.
If a DC motor must be driven directly (i.e. not as part of a servo), then yes, you'd need a transistor to act as a current amplifier.
I've just finished one using a thick plywood cut. Its light weight. I've used 1 stepper, 1 dc and 1 servo. The gripper is the tough part and i'm yet to complete it. for the moment using a shovel kinda setup its a simple 2 -axis one. but i think i can add many axis with the comfort of wood. The wood was inspired by the popsickle stick arm. check it out. its cool
Thanks John, I may get a gripper to put to the end of my arm (although I may not use a gripper, still thinking about fun things to terminate the arm with - laserpointer, pen, hook etc), but the major fun will be in building the thing myself I think, although it's tempting to get parts and just assemble to get something working.
I like the look of the hexapod robots though. I wonder how hard it is to control 18 servos from an arduino?
Well that's good - it's still as I see it in my head. As to off the shelf parts, I think I may be changing my mind. It will be more expensive but I doub't I'll keep the arm forever, and if I use pre-made parts I can dismantle them and re-task them for the next project - that may be more useful than custom building everything.
I recently decided to start a very similar project that your working on. I want to build a 4-axis of motion arm with the arduino. Im very new at this and have been trying to learn the basics of programming servos. I'm trying the tutorials off the arduino website yet there not quite doing it for me. Does any one know a good site to reference, or do they know a simple code where i can plug in any arbitrary angle and get a response from the servo. thanks.
I think the sweep tutorial should do to start you off:
That one uses pin 9 but I guess you can change it to whatever PWM pin you like. I might add in a couple of LED indicators to indicate when the servo is sweeping one way or the other, to see if the code is working in situ.
Please forgive the diagram, it's my first schematic. I'm just trying to figure out how to control my 6 servos from the Arduino. Am I on the right track with this?