AhmedAzouz
Published © CC BY-NC-ND

Automated Soldering Robotic Arm

Solder your PCBs using a DIY robotic arm.

AdvancedFull instructions provided8,244
Automated Soldering Robotic Arm

Things used in this project

Hardware components

Stepper Motor 28BYJ-48 With Driver Module ULN2003
×1
Arduino UNO & Genuino UNO
Arduino UNO & Genuino UNO
×1
Servo motor TowerPro MG955
×1
I2C SERIAL LCD 1602 MODULE
×1
Stepdown Module
×1
NEMA 17 Stepper Motor
OpenBuilds NEMA 17 Stepper Motor
×1

Software apps and online services

Arduino IDE
Arduino IDE
Visual Studio 2015
Microsoft Visual Studio 2015

Hand tools and fabrication machines

Laser cutter (generic)
Laser cutter (generic)
Rotary Tool Cutting Bit Kit Set for Dremel

Story

Read more

Schematics

schema_xM6MGI6tVq.jpg

Code

Steppers X Y Z code

Arduino
#include "AccelStepper.h" 

// AccelStepper Setup
AccelStepper stepperX(1, 2, 3);   // 1 = Easy Driver interface
                                  // UNO Pin 2 connected to STEP pin of Easy Driver
                                  // UNO Pin 3 connected to DIR pin of Easy Driver
                                  
AccelStepper stepperZ(1, 5, 6);   // 1 = Easy Driver interface
                                  // UNO Pin 5 connected to STEP pin of Easy Driver
                                  // UNO Pin 6 connected to DIR pin of Easy Driver


AccelStepper stepperY(7, 8, 9);   // 1 = Easy Driver interface
                                  // UNO Pin 5 connected to STEP pin of Easy Driver
                                  // UNO Pin 6 connected to DIR pin of Easy Driver                                  

// Stepper Travel Variables
long TravelX;  // Used to store the X value entered in the Serial Monitor
long TravelZ;  // Used to store the Z value entered in the Serial Monitor
long TravelY;  // Used to store the Y value entered in the Serial Monitor

int move_finished=1;  // Used to check if move is completed


void setup() {
  
  Serial.begin(9600);  // Start the Serial monitor with speed of 9600 Bauds
  
// Print out Instructions on the Serial Monitor at Start
  Serial.println("Enter Travel distance seperated by a comma: X,Z ");
  Serial.print("Enter Move Values Now: ");

//  Set Max Speed and Acceleration of each Steppers
  stepperX.setMaxSpeed(500.0);      // Set Max Speed of X axis
  stepperX.setAcceleration(500.0);  // Acceleration of X axis

  stepperZ.setMaxSpeed(250.0);      // Set Max Speed of Z axis slower for rotation
  stepperZ.setAcceleration(250.0);  // Acceleration of Z axis

  stepperY.setMaxSpeed(250.0);      // Set Max Speed of Y axis slower for rotation
  stepperY.setAcceleration(250.0);  // Acceleration of Y axis
}


void loop() {

while (Serial.available()>0)  { // Check if values are available in the Serial Buffer

  move_finished=0;  // Set variable for checking move of the Steppers
  
  TravelX= Serial.parseInt();  // Put First numeric value from buffer in TravelX variable
  Serial.print(TravelX);
  Serial.print(" X Travel , ");
  
  TravelZ= Serial.parseInt();  // Put Second numeric value from buffer in TravelZ variable
  Serial.print(TravelZ);  
  Serial.print(" Z Travel , ");

  TravelY= Serial.parseInt();  // Put Second numeric value from buffer in TravelY variable
  Serial.print(TravelY);  
  Serial.println(" Y Travel ");
  
  stepperX.moveTo(TravelX);  // Set new move position for X Stepper
  stepperZ.moveTo(TravelZ);  // Set new move position for Z Stepper
  stepperY.moveTo(TravelY);  // Set new move position for Z Stepper
  
  delay(1000);  // Wait 1 seconds before moving the Steppers
  Serial.print("Moving Steppers into position...");
  }

// Check if the Steppers have reached desired position
  if ((stepperX.distanceToGo() != 0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() != 0)) {
    
    stepperX.run();  // Move Stepper X into position
    stepperZ.run();  // Move Stepper Z into position
    stepperY.run();  // Move Stepper y into position
    
  }

// If move is completed display message on Serial Monitor
  if ((move_finished == 0) && (stepperX.distanceToGo() == 0) && (stepperZ.distanceToGo() == 0) && (stepperY.distanceToGo() == 0)) {
    Serial.println("COMPLETED!");
    Serial.println("");
    Serial.println("Enter Next Move Values (0,0,0 for reset): ");  // Get ready for new Serial monitor values
    move_finished=1;  // Reset move variable
  }
}

Credits

AhmedAzouz

AhmedAzouz

10 projects • 94 followers
High qualified software engineer, Creativity and Technology have always been a big part of my life.

Comments