I am very new to Arduino & electronics in general. I have ordered an Uno R3.
I am building a bottle handling system, which has a robotic arm (see below). Before I dwellve into my question, take a look at my robotic arm:
Side View:
(1-6 are motors & A-D are sensors)
motor 1 controls rotation of base
motor 2 & 3 are for shoulder & elbow joint movement respectively
motor 4 is for gripper
motor 5 is for wrist twisting action
Top View:
The arm takes a bottle from one of the bays (each containing only 1 type of bottle) places it on conveyor & goes back into some initial position.
Now the important thing is - the routine of the robot never changes - in fact the only change is angle for which base motor-1 should rotate to grab bottle from said bay.
So I was thinking of ditching servo motors in favor of stepper or dc (or both) because of the following thoughts:
the arm is not really multi-purpose
stepper motors provide more torques & are cheaper
DC motors because they are cheapest & maybe timing control is enough to get what we need.
if not, then I plan to use 2 steppers, one in position-2 & second at position-3 & making the rest DC-time controlled
So, my questions are:
Which approach is correct, all servos, all steppers, all DC or 2 stepper + 4 DC? And why?
Please suggest a stepper driver which can handle those stepper motors.
There are 5 sensors & 6 motors. What should I do I2C-SPI-sort-of-thingy or use 2 Uno boards which somehow talk to each other.
I am just starting to learn about I2C & SPI I don't know much so kindly point me to good tutorials.
Will keep this post updated with my progress,
Thanks a lot
EDIT
My faculty insists that I showcase a robotic arm, more importantly it would inspire the juniors to embrace arduino & its philosophy
EDIT 2
There seems to be a confusion that bottles are heavy. The are not - the are empty glass/plastic (cola-like) bottles. I should have specified this earlier - sorry, my bad
I'm not (yet) familiar with stepper motors, but IMO they will need more power to stay positioned than servos. Unlike servo motors, stepper motors also require additional sensors for their initial position, and possibly recalibration to compensate for lost steps. OTOH servo motors typically are limited to 180°, not enough for your layout.
From bad experience with a similar experiment (distributing parts into multiple conveyors) I'd use an DC (or stepper) motor for the base, add an hall sensor to the arm, and place magnets on all relevant positions. Or any other (optical...) position markers, as you like. No idea about the other motors, chose what you like and what fits your needs.
Another idea: reduce the mechanics into a rotating platform (or arm), with means for dragging the bottles onto the platform and pushing them onto the conveyor. Then you need only a stable platform, no need for lifting the bottles (motor torque and power reduction).
Servos are much easier to work with than stepper motors and, when you count the cost of a stepper driver board for each stepper motor plus limit switches they are probably cheaper. All of the driver electronics is included within the servo. However I would have more confidence in the longevity of stepper motors
The only way to know the position of stepper motor is to move it to a limit switch and treat that as position zero. Then carefully count steps from there. You must choose motors that have enough torque so that they don't miss steps because the load is too high. You can get motors with encoders (or attach separate encoders) to detect the position. But that will make the coding significantly more complex.
I agree with @DrDiettrich's suggestion to simplify the mechanics as much as possible.
And by servo you mean 'hobby' servo? (that is how people are interpreting it)
Budget?
A (spherical style) robotic arm (with linear joint4?) might be easy to draw but the masses along each of it joints add up fast and then the whole thing can start getting a bit arse-about face when higher torque motors used to solve torque requirements get heavier and heavier themselves... You can counterweight them, but then it starts getting expensive holding all that weight 'up' with enough rigidity through the joints (bearing specs etc...)
What speeds are you expecting?
How will you grip the bottles?
Have you considered a gantry style cartesian set up?
SCARA ?
Do you need it to be an arm? As you've pointed out yourself, most of it's movement is basic - so why not ditch the redundant articulation and use something much simpler? Unless an arm is just something you're interested in ?? (which I can understand ...)
Simple would be rotating the bottle bays over the conveyor and simply dropping them from above into it. One continuous rotational axis with cams operating the bottle release.
But we don't know what you really are interested in so... :
DrDiettrich:
Another idea: reduce the mechanics into a rotating platform (or arm), with means for dragging the bottles onto the platform and pushing them onto the conveyor. Then you need only a stable platform, no need for lifting the bottles (motor torque and power reduction).
I agree, it could be as simple as an actuator coupled with a lever. But no fun in it I really want to build a robot arm. All tutorials on the internet take a pre-assembled fully-working robotic arm & then add arduino to it.
1:1:
A (spherical style) robotic arm (with linear joint4?) might be easy to draw but the masses along each of it joints add up fast and then the whole thing can start getting a bit arse-about face when higher torque motors used to solve torque requirements get heavier and heavier themselves... You can counterweight them, but then it starts getting expensive holding all that weight 'up' with enough rigidity through the joints (bearing specs etc...)
I have access to milling machine, so cost of mechanical parts is negligible - the only cost I am paying is for electronics. If torque really becomes an issue at elbow joint I can make worm-drive arrangement. The base turning & shoulder turning (motors 1 & 2) is achieved by high-ratio bevel gears.
1:1:
What speeds are you expecting?
How will you grip the bottles?
Speed makes me cry - but this is a project & not production setup so I am not too worried, if gears make me too slow I may buy costlier motors.
Bottle gripper is here(InklessPress.com is for sale | HugeDomains) (it is sort of string controlled by motor 4; motor 5 is for twisting the "wrist")
1:1:
Have you considered a gantry style cartesian set up?
SCARA ?
I do not undestand these lines, please explain.
1:1:
Do you need it to be an arm? As you've pointed out yourself, most of it's movement is basic - so why not ditch the redundant articulation and use something much simpler? Unless an arm is just something you're interested in ?? (which I can understand ...)
Simple would be rotating the bottle bays over the conveyor and simply dropping them from above into it. One continuous rotational axis with cams operating the bottle release.
Yeah exactly, but faculty is insisting "robot arm" looks good & I think it will inspire my juniors to embrace arduinos
Gantry = on a gantry
Carteisan = uses XYZ coord system like we're mostly used to (that is vs polar, like your spherical robot would)
...
SCARA = Selective Compliance Articulated Robot Arm
Designed for tasks like yours
But if it's for educational purposes then a spherical is great as the students will have to get their heads around rotational matrices, Denavit–Hartenberg parameters and the rest.
Why does access to a milling machine make the cost of mechanical parts negligible?
You mean your faculty has implied 'cost free' access to the workshops - that the student fees are actually covering in the background? (that's how it happens around here anyway).
A machinist is going to take a dim view of you producing everything in their shop - you're going to incur costs eventually.
Unless it's one of those 'arms' where the joints bearings and the actual (hobby) servo bearings are one and the same (cringe)...
the servo's referred here are using a time, are cheap and good if no force is needed.
for robot thy are no good.
solutions:
use steppermotors,but they are not efficient, and need a referencepoint
best is to use a normal motor (DC) and a simpel potmeter.
shooter:
the servo's referred here are using a time, are cheap and good if no force is needed.
for robot thy are no good.
While I agree, to be fair there are (expensive) hi-torque hobby servos available - and gear/worm-drive/rack&pinion extensions for them. And as Robin has pointed out, options with over 180deg turn out of the box (in addition, many can be modified for you in store as an option, or you can get out your jewellers drivers and DIY).
Robin is also bang on with the rod style solution, very good torque wise, but slow if you're using an acme screw (nice threaded rod) - there double run balls crews (industry standard), but hello>>$$. The image I linked above (with the camera), the style of 'robot' in that reduces lever arms by having the motors for each joint stationed at the previous joint, the actuation is done via rotating rods inside the arms.
wow, in reading this it seems that steppers are horrible things. the truth is that the vast majority of home metal cutting milling machine and lathes use steppers without problem and run for hours without missing steps.
picking up a half gallon milk jug would not be an issue.Nominal holding torques range from 0.52 to 30.8 N-m (74 to 4,360 oz-in).
I would HIGHLY recommend stop all the engineering in a bottle and actual do the math.
a simple robotic arm with a stepper and either worm gear or cog belt and a matching stepper controller with bend the arm before you miss steps.
look at gecko.com for a quality stepper driver. power it with a 65 volt power supply (48v transformer and bridge rectifier)
get a NEMA-23, double or triple stack motor and be careful. you can rip gears apart or if that arm hits you, you could get hurt. you might want to start with the toy versions, the A4988 that hobbyists use, but consider getting a full blown stepper driver for the final project.
I think that most people here are thinking the toys most people use for hobby use. a NEMA23 stepper with s Gecko driver can deliver about 1/3rd horse power about 250 watts (think 7 amps and 70 volts, not 1 amp and 24 volts)
skip to about 1 minute 30 and watch a metal cutting milling machine chewing through aluminum.
stepper drivers running all 3 axis.
the machine is not running on the rapids, but on power feed.
use a good stepper a matching driver and you will be more than satisfied on both power and speed of your robotic arm.
Nominal holding torques range from 0.52 to 30.8 N-m (74 to 4,360 oz-in).
now THAT is a LOT of power.
dave-in-nj:
wow, in reading this it seems that steppers are horrible things. the truth is that the vast majority of home metal cutting milling machine and lathes use steppers without problem and run for hours without missing steps.
picking up a half gallon milk jug would not be an issue.Nominal holding torques range from 0.52 to 30.8 N-m (74 to 4,360 oz-in).
Wow, thanks you are a saviour
dave-in-nj:
I would HIGHLY recommend stop all the engineering in a bottle and actual do the math.
Roger that sir, I am on it now.
dave-in-nj:
a simple robotic arm with a stepper and either worm gear or cog belt and a matching stepper controller with bend the arm before you miss steps.
"bend" as in the good bend that I am expecting or the "bend" that happens in arm & fractures it.
Robin2:
To reduce the moving mass maybe you could fix the servos to the base and use actuating rods to move the parts of the arm.
So, based on your suggestion I made this mock-up. Let me know if I am on right track . . .
Construction
The diagram is self-explaintory but few important points I would like to highlight
the free swing axel is (somehow) pivoted near the center of shoulder, its driving motor ie. motor motor 3 hangs on the axel & can swing as the axel swingss
the gripper is spring-loaded type actuated by string wound on motor-5 (string is not shown to reduce complexity of diagram)
Working
motor-1 rotates in y-z plane rotating the base in x-z plane
motor-2 rotates in x-y plane rotating the shoulder-joint in same x-y plane
un-affected by inclination of the lower part of the arm, motor-3 swings freely in x-y plane & when powered rotates free-wing-axel about y-axis (or x-z plane if you prefer) as a result of internal bevel gear the elbow joint rotates in x-y plane
an actuator string runs inside the fore-arm and lower part of arm to motor-5 for gripper operation
I couldn't get the wrist-twist motor to the base - makes the gearing assembly way too complex.
However - I am thinking of making it torosional-spring loaded & using another string-based actuator to control twisting
Also, please take a look at EDIT 2 of my original post.
Well, you only seem to appreciate hearing what you want to hear so I'll give it a crack:
Looks like some positive steps forward!
Just need to do it next!
Woohoo!
...any challenges that crop up along the way (cough cough) will be great learning experiences !
Steppers are great!
I know I might sound like a twat, but I really do think there are some significant challenges you will face to get this thing in a task ready state - as in, a robust state - not just, "it worked that time! quick upload it to youtube!".
But I do appreciate that even in that state you're going to be learning lots, which is nothing to be sniffed at - I wish you the best in that regard
I agree with everything in @dave-in-nj's Reply #13 execept for one thing.
Building a stepper motor that can behave like a servo (i.e. rotate an arm back and forth and know what angle the arm is at) requires a lot of mechanical engineering and electrical/electronics and programming.
All that comes ready made in a servo.
(And I do realize that you would not actually make a stepper into a servo package - but you would have to do pretty much all of the same stuff in a slightly different way)
As "this is a project & not production setup" (Reply #6) I would start with servos.