added openscad source folder
authorMartin Rice <mrice411@gmail.com>
Sun, 9 Feb 2014 16:00:22 +0000 (11:00 -0500)
committerMartin Rice <mrice411@gmail.com>
Sun, 9 Feb 2014 16:00:22 +0000 (11:00 -0500)
scad/bearing.scad [new file with mode: 0644]
scad/tensioner.scad [new file with mode: 0644]
scad/x-end-idler.scad [new file with mode: 0644]
scad/x-end-motor.scad [new file with mode: 0644]
scad/x-end.scad [new file with mode: 0644]

diff --git a/scad/bearing.scad b/scad/bearing.scad
new file mode 100644 (file)
index 0000000..f6dfe50
--- /dev/null
@@ -0,0 +1,75 @@
+// PRUSA iteration3
+// Bearing holders
+// GNU GPL v3
+// Josef Průša <iam@josefprusa.cz> and contributors
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://prusamendel.org
+
+bearing_diameter = 15;
+
+module horizontal_bearing_base(bearings=1){
+ translate(v=[0,0,6]) cube(size = [24,8+bearings*25,12], center = true);       
+}
+module horizontal_bearing_holes(bearings=1){
+ cutter_lenght = 10+bearings*25;
+ one_holder_lenght = 8+25;
+ holder_lenght = 8+bearings*25;
+ // Main bearing cut
+ difference(){
+  translate(v=[0,0,12]) rotate(a=[90,0,0]) translate(v=[0,0,-cutter_lenght/2]) cylinder(h = cutter_lenght, r=bearing_diameter/2, $fn=50);
+  // Bearing retainers
+  translate(v=[0,1-holder_lenght/2,3]) cube(size = [24,6,8], center = true);
+  translate(v=[0,-1+holder_lenght/2,3]) cube(size = [24,6,8], center = true);
+ }
+ // Ziptie cutouts
+ ziptie_cut_ofset = 0;
+ for ( i = [0 : bearings-1] ){
+  // For easier positioning I move them by half of one 
+  // bearing holder then add each bearign lenght and then center again
+  translate(v=[0,-holder_lenght/2,0]) translate(v=[0,one_holder_lenght/2+i*25,0]) difference(){
+   union(){
+    translate(v=[0,2-6,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=12.5, $fn=50);
+    translate(v=[0,2+6,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 4, r=12.5, $fn=50);
+   }
+   translate(v=[0,10,12]) rotate(a=[90,0,0]) translate(v=[0,0,0]) cylinder(h = 24, r=10, $fn=50);
+  }
+ }
+}
+
+module horizontal_bearing_test(){
+ difference(){
+  horizontal_bearing_base(1);
+  horizontal_bearing_holes(1);
+ }
+ translate(v=[30,0,0]) difference(){
+  horizontal_bearing_base(2);
+  horizontal_bearing_holes(2);
+ }
+ translate(v=[60,0,0]) difference(){
+  horizontal_bearing_base(3);
+  horizontal_bearing_holes(3);
+ }
+}
+
+
+
+thinwall = 3;
+bearing_size = bearing_diameter + 2 * thinwall;
+
+module vertical_bearing_base(){
+ translate(v=[-2-bearing_size/4,0,29]) cube(size = [4+bearing_size/2,bearing_size,58], center = true);
+ cylinder(h = 58, r=bearing_size/2, $fn = 90);
+}
+
+module vertical_bearing_holes(){
+  translate(v=[0,0,-1]) cylinder(h = 62, r=bearing_diameter/2, $fn = 60);
+  #rotate(a=[0,0,-70]) translate(v=[8,0,30/*was 31.5 mjr*/]) cube(size = [5,2 /*was 1 mjr*/ ,62], center = true);
+}
+
+difference(){
+vertical_bearing_base();
+vertical_bearing_holes();
+}
\ No newline at end of file
diff --git a/scad/tensioner.scad b/scad/tensioner.scad
new file mode 100644 (file)
index 0000000..bfa313b
--- /dev/null
@@ -0,0 +1,38 @@
+
+bearing_624_double = [13, 10, 4, 0];
+// this one has roughly same diameter as pulley, makes belt parallel so its prettier
+bearing_623_double = [10, 8, 3, 0];
+
+idler_bearing              = bearing_624_double;
+m4_diameter                = 4.7;
+m4_nut_diameter            = 7.6;
+m4_nut_diameter_horizontal = 8.15;
+
+width_over_thickness = 2.2;
+layer_height = 0.25;
+single_wall_width = width_over_thickness * layer_height;
+idler_width = (idler_bearing[1] > 7 ? idler_bearing[1] : 7) + 2.5 * idler_bearing[3] ;
+use_fillets = 1;
+
+tensioner();
+
+module tensioner()
+{
+   difference() {
+     union() {
+            translate([0,-5,0]) cube([30,10,16]);
+            translate([30,-10,0]) cube([20,20,16]);
+            translate([30,5,0]) cylinder(r=5,h=16,$fn=16);
+            translate([30,-5,0]) cylinder(r=5,h=16,$fn=16);
+     }
+
+     #translate([43,11/2,8]) rotate([90,0,0]) {
+        cylinder(r=13,h=11);
+        translate([0,0,-6]) cylinder(r=2.1,h=25);
+      }
+
+     #translate([9,-7,-5/2+8]) cube([15,16,5]);
+     #translate([3,-4,-7.3/2+8]) cube([4,16,7.3]);
+     #translate([-1,0,16/2]) rotate([0,90,0]) cylinder(r=2,h=20,$fn=16);
+   }
+}
diff --git a/scad/x-end-idler.scad b/scad/x-end-idler.scad
new file mode 100644 (file)
index 0000000..debfa7d
--- /dev/null
@@ -0,0 +1,31 @@
+// PRUSA iteration3
+// X end idler
+// GNU GPL v3
+// Josef Průša <iam@josefprusa.cz> and contributors
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://prusamendel.org
+
+use <x-end.scad>
+
+module x_end_idler_base(){
+ x_end_base();
+}
+
+module x_end_idler_holes(){
+ x_end_holes();
+ translate(v=[0,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 80, r=1.8, $fn=30);
+ translate(v=[1.5,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 10, r=3.1, $fn=30);
+ translate(v=[-21.5,-22,30.25]) rotate(a=[0,-90,0]) rotate(a=[0,0,30]) cylinder(h = 80, r=3.6, $fn=6);
+}
+// Final part
+module x_end_idler(){
+ mirror([0,1,0]) difference(){
+  x_end_idler_base();
+  x_end_idler_holes();
+ }
+}
+
+x_end_idler();
+
+
diff --git a/scad/x-end-motor.scad b/scad/x-end-motor.scad
new file mode 100644 (file)
index 0000000..f3989be
--- /dev/null
@@ -0,0 +1,55 @@
+// PRUSA iteration3
+// X end motor
+// GNU GPL v3
+// Josef Průša <iam@josefprusa.cz> and contributors
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://prusamendel.org
+
+use <x-end.scad>
+
+module x_end_motor_base(){
+ x_end_base();
+ translate(v=[-15,31,26.5]) cube(size = [17,44,53], center = true);
+}
+
+module x_end_motor_holes(){
+ x_end_holes();
+ // Position to place
+ translate(v=[-1,32,30.25]){
+  // Belt hole
+  translate(v=[-14,1,0]) cube(size = [10,46,22], center = true);
+  // Motor mounting holes
+  translate(v=[20,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
+  translate(v=[1,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
+
+  translate(v=[20,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
+  translate(v=[1,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
+
+
+  translate(v=[20,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
+  translate(v=[1,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
+
+
+  translate(v=[20,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
+  translate(v=[1,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 10, r=3.1, $fn=30);
+
+  // Material saving cutout 
+  translate(v=[-10,12,10]) cube(size = [60,42,42], center = true);
+
+  // Material saving cutout
+  translate(v=[-10,40,-30]) rotate(a=[45,0,0])  cube(size = [60,42,42], center = true);
+  // Motor shaft cutout
+  translate(v=[0,0,0]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=17, $fn=6);
+ }
+}
+
+// Final part
+module x_end_motor(){
+ difference(){
+  x_end_motor_base();
+  x_end_motor_holes();
+ }
+}
+
+x_end_motor();
\ No newline at end of file
diff --git a/scad/x-end.scad b/scad/x-end.scad
new file mode 100644 (file)
index 0000000..3db081c
--- /dev/null
@@ -0,0 +1,77 @@
+// PRUSA iteration3
+// X end prototype
+// GNU GPL v3
+// Josef Průša <iam@josefprusa.cz> and contributors
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://prusamendel.org
+
+use <bearing.scad>
+
+rod_distance = 45;
+pushfit_d = 8.2;
+
+module x_end_base(){
+// Main block
+height = 58;
+translate(v=[-15,-9,height/2]) cube(size = [17,39,height], center = true);
+// Bearing holder
+ vertical_bearing_base();      
+//Nut trap
+ // Cube
+ translate(v=[-2-2,-17,4]) cube(size = [8,16,8], center = true);
+ // Hexagon
+ translate(v=[0,-17,0]) rotate([0,0,30]) cylinder(h = 8, r=8, $fn = 6);
+}
+
+module x_end_holes(){
+ vertical_bearing_holes();
+// Belt hole
+translate(v=[-1,0,0]){
+// Stress relief
+translate(v=[-5.5-10+1.5,-10-1,30]) cube(size = [20,1,28], center = true);
+difference(){
+       translate(v=[-5.5-10+1.5,-10,30]) cube(size = [10,46,28], center = true);
+
+       
+
+       // Nice edges
+       translate(v=[-5.5-10+1.5,-10,30+23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
+       translate(v=[-5.5-10+1.5,-10,30+23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
+       translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
+       translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
+
+}
+}
+
+
+
+// Bottom pushfit rod
+translate(v=[-15,-41.5,6]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
+// Top pushfit rod
+translate(v=[-15,-41.5,rod_distance+6]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
+// Nut trap
+ translate(v=[0,-17,-0.5]) cylinder(h = 4, r1=3.3, r2=2.8, $fn=25);
+ translate(v=[0,-17,3]) rotate([0,0,30]) cylinder(h = 10, r=4.5, $fn = 6);
+}
+
+
+// Final prototype
+module x_end_plain(){
+ difference(){
+  x_end_base();
+  x_end_holes();
+ }
+}
+
+x_end_plain();
+
+
+module pushfit_rod(diameter,length){
+ cylinder(h = length, r=diameter/2, $fn=30);
+ difference(){
+       translate(v=[0,-diameter/2.85,length/2]) rotate([0,0,45]) cube(size = [diameter/2,diameter/2,length], center = true);
+       translate(v=[0,-diameter/4-diameter/2-0.4,length/2]) rotate([0,0,0]) cube(size = [diameter,diameter/2,length], center = true);
+ }
+ //translate(v=[0,-diameter/2-2,length/2]) cube(size = [diameter,1,length], center = true);
+}
+