Goals: Interesting, Useful
A customizable OpenSCAD “Universal Rack-Clamp” by @uzmani90- let’s you make a variety of structures, cost-effectively.
This summer while designing a DIY Electronic Drum-kit, I noticed that there existed no open 3-D CAD model of a Universal Rack-Clamp. So what is a Universal Rack-Clamp? It’s the clamp used to put together pipe structures such as a working Rig (the ones used on construction sites) as well as Drum Rigs (the ones used to customize and hold Toms, Cow Bells etc.). I made one using Autodesk Inventor for my project, but I think now is the time I make one using OpenSCAD which can be customized to different pipe and wing-nut/screw specifications.
This clamp can be used to make anything that requires joining pipes (PVC, Metal, PPRC) with the constraint that the two pipes remain perpendicular to each other. It allows a variety of structures to be constructed, which are adjustable in dimensions due to the wing-nut/screws.
Image from http://www.musiciansfriend.com/drums-percussion
A Roland TD 30-K constructed using these Rack-Clamps.
Here’s a version I made on Inventor in Summer 2013- we customized it for 3-D printing with ABS, modifying it for strength. With replacements rack-clamps running at ~$25 each, printing it is actually cheaper! (you can get a whole ABS spool for that and print at least 3 of these for 1-1/2 inch Schedule 40 PVC pipe)- plus you can customize it to your exact specifications.
This clamp is practical enough to print and use. I kept one side flat as a 3-D printing base. All pipe and nut dimensions are accurate and were taken from the following documents:
Metric Hex-Nut Dimensions: http://www.fairburyfastener.com/xdims_metric_nuts.htm
PVC Pipe Dimensions: http://www.harvel.com/piping-systems/harvel-pvc-pipe/schedule-40-80/dimensions
AutoSCAD Version:
Customize it at: http://www.thingiverse.com/thing:232920
Variables you can customize:
- Pipe Size (in inches from drop down menu, 4 typically used sizes available)
- Screw & Nut Size (can choose from M4, M5 and M6)
- Clamp Fastening Space (Slider from 0 to 5)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | //M. Haris Usmani //http://harisusmani.com //All Units are in mm, Import as STL with Unit=mm /* [Main Settings] */ //Radius of Pipe in Inches (Schedule 40) R=1.9; //[2.375:2"PVC,1.9:1-1/2"PVC,1.660:1-1/4"PVC,1.315:1"PVC] //Space for Tightening T=3; //[0:5] //Nut Size M=5; //[4,5,6] ///////////////////////////////////////////////////////////////////////////// R_mm=R*25.4; //Converted to mm! //Strength of Clamp (Fixed) S=1.2; // [1.2] Determines Strength of Clamp in Percentage-FIXED! ///////////////////////////////////////////////////////////////////////////// //Hexagonal Module from shapes.scad, http://svn.clifford.at/openscad/trunk/libraries/shapes.scad by Catarina Mota module hexagon(size, height) { boxWidth = size/1.75; for (r = [-60, 0, 60]) rotate([0,0,r]) cube([boxWidth, size, height], true); } ///////////////////////////////////////////////////////////////////////////// //Pipe Model for Visualization //translate([R_mm*S/2,R_mm*S/2,-R_mm*6]) cylinder(R_mm*10,R_mm/2,R_mm/2); union()//Main Duplication { difference() //Pipe Hole { union() { minkowski() //Fillet { union() { cube([R_mm*S,R_mm/2*S, R_mm*S]); //Main Body translate([R_mm*S/2,R_mm*S/2,0]) cylinder(R_mm*S,R_mm*S/2,R_mm*S/2); //Curved Edge } sphere([R_mm/2,R_mm,R_mm*5/12]); //Fillet Object } minkowski() //Fillet { difference() //Hard Chamfer { translate([-R_mm/4,R_mm/5,(R_mm/2)-(R_mm*5/48)]) cube([R_mm/2,R_mm/1.4,R_mm*5/12]); translate([-R_mm,-R_mm*7/17,(R_mm/2)-(R_mm*5/24)]) rotate([0,0,-33]) cube([R_mm/2,R_mm,2*R_mm*5/12]); } sphere([R_mm/2,R_mm,R_mm*5/12]); //Fillet Object } } union() { translate([R_mm*S/2,R_mm*S/2,-R_mm*6]) cylinder(R_mm*10,R_mm/2,R_mm/2);//Pipe translate([-R_mm,R_mm*S*5/12,-R_mm]) cube([R_mm*2,R_mm/(15-T),R_mm*4]);//Tightning Space translate([-R_mm/7,R_mm*2,(R_mm*S/2)]) rotate([90,0,0]) cylinder((R_mm*4),M/2,M/2); //Screw Space if (M==4) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(7.66,50); //NUTS if (M==5) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(8.79,50); if (M==6) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(11.05,50); } } //Single Side ENDS } { translate([R_mm*S,1,R_mm*S]) rotate([180,90,0]) //Main Translation //COPY SIDE HERE difference() //Pipe Hole { union() { minkowski() //Fillet { union() { cube([R_mm*S,R_mm/2*S, R_mm*S]); //Main Body translate([R_mm*S/2,R_mm*S/2,0]) cylinder(R_mm*S,R_mm*S/2,R_mm*S/2); //Curved Edge } sphere([R_mm/2,R_mm,R_mm*5/12]); //Fillet Object } minkowski() //Fillet { difference() //Hard Chamfer { translate([-R_mm/4,R_mm/5,(R_mm/2)-(R_mm*5/48)]) cube([R_mm/2,R_mm/1.4,R_mm*5/12]); translate([-R_mm,-R_mm*7/17,(R_mm/2)-(R_mm*5/24)]) rotate([0,0,-33]) cube([R_mm/2,R_mm,2*R_mm*5/12]); } sphere([R_mm/2,R_mm,R_mm*5/12]); //Fillet Object } } union() { translate([R_mm*S/2,R_mm*S/2,-R_mm*6]) cylinder(R_mm*10,R_mm/2,R_mm/2);//Pipe translate([-R_mm,R_mm*S*5/12,-R_mm]) cube([R_mm*2,R_mm/(15-T),R_mm*4]);//Tightning Space translate([-R_mm/7,R_mm*2,(R_mm*S/2)]) rotate([90,0,0]) cylinder((R_mm*4),M/2,M/2); //Screw Space if (M==4) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(7.66,50); //NUTS if (M==5) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(8.79,50); if (M==6) translate([-R_mm/7,-R_mm*0.2,(R_mm*S/2)]) rotate([90,0,0]) hexagon(11.05,50); } } /////////////// } //preview[view: north, tilt: top]; |