-
Building a better rack and rail system
03/26/2022 at 17:55 • 0 commentsAfter the first integrated test we needed a better rack with accurate dimensions so we could start testing the accuracy of the system.
To reduce costs and printing time we decided to use aluminum profiles which we connect by using 3D-printed parts. The aluminum profiles are press-fit into the 3D-printed parts. It took some iterations to get the tolerances just right.
We printed a drawing / partslist to cut the wooden board and aluminum profiles to the right length.
To cut the aluminum we used a miter saw with a suitable blade but you can also use a hacksaw.
After putting everything together it resulted in a surprisingly sturdy structure.
The “shelves” are slotted into the aluminum u-profile. We designed a system comparable to wall plugs to make sure the shelves stay in place.
By tightening the grub screw the two sides of the structure are pushed outwards.
To mount the brackets parts at the right position we printed some jigs.
The structure seems to be sturdy and precise but before testing it it looks like we need to design a new vertical rail. The 3D-printed version seems to have bent and cannot be used.
-
First integrated test
03/15/2022 at 19:28 • 0 commentsWe 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.
---------- more ----------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.
-
Testing the extending platform
03/13/2022 at 10:11 • 0 commentsWe designed and assembled an extending platform that will be used to pick up the pallets. It took some iterations.
We first used a 28BYJ-48 stepper motor to drive the platform but found it too slow.
We then switched to a continuous servo. That worked better than the stepper motor but now we had no control over positioning of the platform. We first tried to solve this by using an ACS712 current sensor. This sensor would measure the current used by the servo. When the platform reached its end position the current draw would increase. This was fun to play with but could never work. Firstly, this way we would not be able to return to the ‘home position’. Secondly, when the platform would pick up a container the current draw would also increase making it difficult to callibrate.
Finally we settled on using a combination of the continuous servo and limit switches. The limit switches have a roller on the end. This roller rides on a track and the track has some recesses.
The video below shows the first test of the platform. We wrote some simple arduino code to control the platform using the serial monitor.