Close

First integrated test

A project log for Automated storage and retrieval system

A system that automatically stores and retrieves small plastic bins. Made with 3D-printed parts, aluminum, stepper motors and Arduino

Awesome MakesAwesome Makes 03/15/2022 at 19:280 Comments

We did a lot of CAD design and before we continued tuning the design we wanted to do a basic test of the system.

We build a rig with some 3D printed parts, empty filament boxes and metal pipes. A temporary rack was made with some wood and 3D printed ridges.

To try the rig we made a very basic Arduino sketch using the SpeedyStepper library (you can also find the code in our Gitlab repository: https://gitlab.com/awesome-makes-public/automated-storage-and-retrieval-system).

#include <SpeedyStepper.h>
const int MOTOR_STEP_PIN = 2;
const int MOTOR_DIRECTION_PIN = 5;
const int MOTORY_STEP_PIN = 4;
const int MOTORY_DIRECTION_PIN = 7;

SpeedyStepper stepperX;
SpeedyStepper stepperY;

void setup()
  Serial.begin(9600);
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);

  stepperX.connectToPins(MOTOR_STEP_PIN, MOTOR_DIRECTION_PIN);
  stepperY.connectToPins(MOTORY_STEP_PIN, MOTORY_DIRECTION_PIN);
}

void loop() 
  stepperX.setStepsPerRevolution(200 * 16);
  stepperY.setStepsPerRevolution(200 * 16);

  stepperX.setSpeedInRevolutionsPerSecond(1.5);
  stepperX.setAccelerationInRevolutionsPerSecondPerSecond(1.0);

  stepperY.setSpeedInRevolutionsPerSecond(1.5);
  stepperY.setAccelerationInRevolutionsPerSecondPerSecond(1.0);

  stepperX.setupRelativeMoveInRevolutions(-6);
  stepperY.setupRelativeMoveInRevolutions(-8);
  
  while (!stepperX.motionComplete() || !stepperY.motionComplete()) {
    stepperX.processMovement();
    stepperY.processMovement();
  }
  delay(1000);

  stepperX.setupRelativeMoveInRevolutions(6);
  stepperY.setupRelativeMoveInRevolutions(8);
  while (!stepperX.motionComplete() || !stepperY.motionComplete()) {
    stepperX.processMovement();
    stepperY.processMovement();
  }
  delay(1000);
}

This is not the code used in the movie, we didn't save that properly so it got lost. This code just demonstrates some basic x/y movement. Once we have a better rig set up we will write some better code.

Discussions