D.R.A.C. V3 by RJM Robotics (BETA)

Copyright Claim

D.R.A.C. V3 by RJM Robotics (BETA)

Boost
24
33
1
GIF

Print Profile(1)

All
P1S
P1P
X1
X1 Carbon
X1E
A1

DRAC V3 Master Print Job
DRAC V3 Master Print Job
Designer
17 h
6 plates

Boost
24
33
1
1
9
2
Released

Description

Hey there! First off, thanks for looking at the Beta version of the D.R.A.C. (Desktop Robotic Arm Companion)! As you know, beta testing is meant to help iron out the kinks of a product through consumer review and feedback. This means that I will heavily rely on the feedback I receive from you to help shape the next steps in developing a final product. With that said, here’s the mission of RJM Robotics and the D.R.A.C.:

 

Countless hobbyists, students, professionals, and enthusiasts have been discouraged from STEM activities and projects due to complex-sounding project names or a lack of readily available information. Most of you have heard the saying, “A team is only as good as its weakest link.” RJM Robotics takes this idea and applies it to the engineering community by combining a comprehensive, approachable method of learning with hands-on projects and labs. Doing this helps beginner STEM enthusiasts stay engaged, feel more comfortable making mistakes, and, more importantly, learn from them. The D.R.A.C. is the first step in raising the bar of what the general public knows about certain engineering processes and robotics.

What is the D.R.A.C.?

The Desktop Robotic Arm Companion is a small form factor, six-degree-of-freedom robot arm that can be printed through virtually any additive manufacturing method (such as 3D printing). It is completely programmable and upgradeable by the user. It utilizes closed-loop servo motors and a microcontroller to control motion, primarily with a Raspberry Pi (RPi) or an Arduino. The motors are powered by a 5V power supply, and the microcontroller is powered by your computer.




 

How do I use the D.R.A.C.?

The D.R.A.C. is meant to be used alongside instructional material, but since literally everyone who ordered the beta version is familiar with robotics and Arduino/RPi, the coursework-style material will be held for the later versions. You are free to program anything you want onto it; just be sure to take videos and either send them my way or post them to social media with me tagged! If you feel confident (or proud even) of the code you wrote, feel free to send it my way for discussion and praise!

 

 

 

Bill of Materials

ITEM NO.PART NUMBERDESCRIPTIONQTY

1

24.2.21 Frame 0 -03

1

2

MG996R Servo Motor

3

3

23.12.09 Servo Adapter Plate -03

3

4

94180A331Tapered Heat-Set Inserts for Plastic

16

5

24.2.25 Frame 0 Base -03

1

6

91290A111M3x6mm Alloy Steel SHCS

17

7

91290A117M3x12mm Alloy SHCS

15

8

6656K198Ultra-Thin Ball Bearing

3

9

24.3.6 Frame 0 Magnetic Mount -03

1

10

5mmx1.875mm magnets

10

11

24.3.8 Frame 1 -03

1

12

24.3.15 Frame 2 -03

1

13

24.3.20 Frame 3 -03

1

14

SG90 Micro Servo

3

15

91290A015Alloy Steel Socket Head Screw

2

16

24.3.22 Frame 3 Faceplate-03

1

17

SG90 Micro Servo Horn

3

18

95836A109Black-Oxide 18-8 SS Pan Head Phillips Screws

3

19

24.3.22 Frame 4 -03

1

20

24.3.22 Frame 5 -03

1

 

PRE-ASSEMBLY

Servo Motor Assembly

Each servo has a piece of support plastic between the two mounting holes on each side. Cut those out to flatten the mounting surface.

Using the heat set inserts

See this link for how to install heat set inserts for 3D prints: LINK.
NOTE: You will need a soldering iron for this! Also, the inserts on frame 1 might cause some warping in the plastic due to thin walls. This has been updated, but not in time for the release of the beta version.

 

Frame 0 Bottom Frame 0 Top

Frame 1 Frame 2

ASSEMBLY MANUAL

For better feedback, time yourself through this process so I can better understand how long assembly takes on average.

Step 1 | Frame 0 Top

Step 2

Step 3 M3x12mm SHCS

Step 4 | Frame 0 Bottom

 

Step 5 M3x6mm

Step 6 | Frame 1

Step 7 (M3x6mm and M3x12mm)

Step 8

 

Step 9

Step 10 M3x12mm

Step 11 | Frame 2

Step 12 (M3x6mm and M3x12mm)

Step 13

 

 

Step 14

Step 15 (M3x12mm)

 

Step 16 | Frame 3

Step 17 (M3x6mm and M3x12mm)

 

 

Step 18 | Frame 4

NOTE: This is a tight fit, so be sure to feed the wire through the hole in the bottom of the space where the servo is inserted. The two holes on the outside are optional cable management.

Step 19

NOTE: This is also optional and purely cosmetic!

 

Step 20 | Frame 5

Step 21

NOTE: The center hole with the grooves on the servo horn is the part that should attach to the shaft of the servo motors.

Step 22

 

 

Step 23

Step 24 | Frame 5

Step 25

 

Step 26

Step 27

 

WIRING

Wiring is pretty simple, just put the signal pin of each motor into the desired pin on the Arduino, connect all the motor voltages to the 5V power supply, and all the motor GNDs to the GND of the 5V power supply. Don’t forget to wire the Arduino’s GND pin to the power supply’s GND as well. A diagram hasn’t been made yet, as upgrades to the microcontroller are underway.

 

The motors do not use the same power supply as the Arduino! They require a separate source, so any power supply that can reach up to 5V and 2A should work. DO NOT USE MORE THAN 6V, AS THIS WILL BURN THE MOTORS. The blue and black servos both use 5V, so feel free to wire them up in parallel!

 

In the following set of pics:

 

Red 5V
GreenGND
WhitePWM/Signal
Frame 0 Motor Pin 2
Frame 1 Motor Pin 3
Frame 2 Motor Pin 4
Frame 3 Motor Pin 5
Frame 4 Motor Pin 6
Frame 5 Motor Pin 7

 

CODE

I highly recommend taking a look at a few youtube videos on how an Arduino works before going through this section, either as a refresher or introduction.

CALIBRATION

Before you run any tests on your robot, PLEASE calibrate your servo motors. Failure to do so can result in stripped servo gears, which will prevent you from using the robot arm. The goal of calibrating the servo motors is to allow them to move within their operating ranges without being blocked by any mechanical features. First, we need to start by homing all of the motors at one extreme of the robot’s work envelope (the vertical position in this case). Refer to the image below for a reference of what your angles might look like. The angles applied to Frame 0 and Frame 5 do not affect anything right now.

 

Frame 0: 135

Frame 1: 90

Frame 2: 180

Frame 3: 90

Frame 4: 0

Frame 5: 135

 

Now, follow these steps to calibrate each motor.

  1. Open the Arduino IDE and select the Servo example sketch
    1. File>Examples>Servo>Sweep
  2. Delete the second “for” loop on lines 27-30, making it so that the motor only sweeps to the position stated in the first “for” loop.
  3. Change the second pos value in the first for loop to the position you want the motor to be in. Since we want the robot to be vertical, our numbers should be similar to the following:
    1. Frame 0: 135
    2. Frame 1: 90
    3. Frame 2: 180
      Frame 3: 90
    4. Frame 4: 0
    5. Frame 5: 135

 

 

  1. Loosen the center M3 screw on each frame that tightens the frames to their respective motors. This should result in a limp robot with the ability to take each frame off individually.
  2. Separate the motor into its individual frames, with the servo horns still attached to the “input” end of each frame.

 

 

  1. Upload the code to the Arduino and run the program. REMEMBER THAT THIS SHOULD ONLY BE ONE MOTOR AT A TIME. It should move your motor to the angle you specify. Once the code has been uploaded, unplug the motor from the Arduino.
  2. With the servo in calibrated, put the targeted frame back onto the motor in the vertically erect positions as closely as possible. Then, try to collapse the robot into the home position (as seen below). If there is some resistance towards the end of the motion, DO NOT FORCE IT. This just means that your servo is slightly out of alignment with the angles specified in the arduino library, and that you will have to adjust the values in your code accordingly. Not every servo is made the same, so it might take a few tries before you get all of them right. It helps to look up a few youtube videos about how servos work if you get super stuck on this step.

DEMO CODE

(CODE IS ON THE NEXT PAGE) In lines 9-12, you should be able to add more positions by copy and pasting the formatting of line 9 and entering the desired output angles, just change the number in line 13 to match the number of positions you make! (can copy/paste this code)

 

 

#include <Servo.h>

 

// Define the pins to which your servo motors are connected

const int servoPins[] = {2, 3, 4, 5, 6, 7}; // Example pins, adjust as needed

const int numServos = 6;

 

// Define three sets of desired positions for each servo1

const int servoPositions[][numServos] = {

{0, 45, 175, 0, 115, 0}, // First set of positions

{90, 45, 90, 0, 90, 0}, // Second set of positions

{90, 180, 60, 0, 135, 0} // Third set of positions

};

const int numPositionSets = 3;

 

Servo servos[numServos];

 

void setup() {

// Attach each servo to its corresponding pin

for (int i = 0; i < numServos; i++) {

servos[i].attach(servoPins[i]);

}

}

 

void loop() {

// Loop through each set of positions

for (int setIndex = 0; setIndex < numPositionSets; setIndex++) {

// Sweep each servo slowly to its desired position in the current set

for (int i = 0; i < numServos; i++) {

int currentPosition = servos[i].read();

int targetPosition = servoPositions[setIndex][i];

 

// Sweep slowly to the target position

if (currentPosition < targetPosition) {

for (int pos = currentPosition; pos <= targetPosition; pos += 1) {

servos[i].write(pos);

delay(15); // Adjust delay for desired speed

}

} else {

for (int pos = currentPosition; pos >= targetPosition; pos -= 1) {

servos[i].write(pos);

delay(15); // Adjust delay for desired speed

}

}

 

// Wait at the target position briefly

delay(500); // Adjust delay for desired pause at each position

}

}

}

FINAL NOTES:

Remember to have fun during this process! It’s a learning experience for all of us, and your combined feedback will only help progress this project even further. If you don’t feel like posting photos/videos to social media, please send them my way so that I can either post them myself (with your permission) or review them as feedback.

Happy Engineering!

Copyright © [2024] Rawsen Mitchell and RJM Robotics. All rights reserved. The Desktop Robotic Arm Companion (D.R.A.C.) and all associated designs, software, and intellectual property are the exclusive property of Rawsen Mitchell and RJM Robotics. Unauthorized reproduction, distribution, or use of any part of the D.R.A.C. system without express written permission is strictly prohibited and may result in legal action.


Documentation (1)

Bill of Materials (1)
Bill of Materials_3e36d2ef-6426-4ccd-8744-1bb88e052aac.xls

Bill of Materials

List other parts
Please see the attached Bill of Materials (BOM). All hardware can be found on McMaster Carr and all electronics can be found on Amazon. I listed everything that I could find in the Bambu Maker Supply that I could, but you're better off ordering from Amazon or McMaster Carr exclusively.

Purchase from Bambu Store

Comment & Rating (1)

Please fill in your opinion
(0/5000)

hello, thanks to sharing this project. Very detailed step by step procedure.
0
Reply
No more

License

This user content is licensed under a Standard Digital File License.

You shall not share, sub-license, sell, rent, host, transfer, or distribute in any way the digital or 3D printed versions of this object, nor any other derivative work of this object in its digital or physical format (including - but not limited to - remixes of this object, and hosting on other digital platforms). The objects may not be used without permission in any way whatsoever in which you charge money, or collect fees.