Arm Robot with Stepper Motors

i'm design 5 axis arm robot to

- Pick and place
- Sorting material
- Sorting Color

it's simulate the Sorting production line in factories and i need to make it do it repeatedly.
i'm using Stepper Motor For the Joints of the arm the questions is do i need only Limit switch to each joint cause when the arm starting going to The Home Position and start their movements automatically, or i need encoder or pots in each joint with the limit switches to do this?

Generally with stepper motors it is sufficient to have a limit switch to identify the HOME or ZERO position at startup. After that if the motors do not miss steps then the Arduino will always know where they are by keeping count of the step pulses.

...R
Stepper Motor Basics
Simple Stepper Code

Thanks Robin for your replay.

That mean if my stepper motor will didn't miss steps no need for position sensor on the joints. any i can do my tasks repeatedly without new calibration for every time the robot start.

ahmadelwaly:
any i can do my tasks repeatedly without new calibration for every time the robot start.

You will need to re-establish the ZERO position every time the Arduino restarts.

...R

A simple way to calibrate the stepper position is to over drive the arm into its at rest position, then use that as the 0 stepper starting positions.

zoomkat:
A simple way to calibrate the stepper position is to over drive the arm into its at rest position, then use that as the 0 stepper starting positions.

That's only suitable if over-driving the arm won't cause damage to the mechanical system.

...R

"That's only suitable if over-driving the arm won't cause damage to the mechanical system."

If it can't be stopped by a hard stop or can destroy itself against a hard stop, then the assembly has a likely chance of failing under load or when the steps get out of count. Just depends on how much $$$ the OP is comfortable putting into the project. Is this to be a commercial working robotic arm?. A basic limit switch can be two bare wires and a piece of aluminum foil if needed for minimalist needs.

I really like stepper motors -- especially with 4096 half-steps per revolution:
"4 drops of superglue result in high precision PT camera system"
https://forum.arduino.cc/index.php?topic=647703.0

On the other hand the precision of my 4DoF servo motor robot arm for repeated pick and drop is remarkable as well:

Thanks for Replay , So if i record steps for the robot arm to pick and place it the arduino power off when it start again will do the same task when going to the home position and after this will pick and place with out record the reads again.

ahmadelwaly:
Thanks for Replay , So if i record steps for the robot arm to pick and place it the arduino power off when it start again will do the same task when going to the home position and after this will pick and place with out record the reads again.

Home position will be the starting position with all motor steps at 0. From there count steps to know where the arm is currently positioned.

ahmadelwaly:
So if i record steps for the robot arm to pick and place it the arduino power off when it start again will do the same task when going to the home position and after this will pick and place with out record the reads again.

I think you are confusing two things.

The stepper motors will need to be zeroed every time the Arduino restarts.

If you move the stepper to a certain position and record the position to a regular variable that position will be lost when the Arduino is turned off (deliberately or accidentally). If you want the recorded position to be available when you restart the Arduino then you must save the value to the Arduino's EEPROM memory and then every time the Arduino restarts you need to read the value back from the EEPROM.

And just to be clear, you cannot store the zero position in the EEPROM memory - it has to be determined separately at every restart.

...R