Original-Prusa-i3/Printed-Parts/scad/x-end-motor.scad

152 lines
7.3 KiB
OpenSCAD

// PRUSA iteration4
// 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 = [-19, -21, -12]) cube(size = [10, 25, 22]);
// Motor mounting holes
translate(v = [0, -15.5, 15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 30, r = 1.55, $fn = 60);
translate(v = [0, -15.5, 15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 18, r2 = 1.55, r1 = 1.7, $fn = 60);
translate(v = [1, -15.5, 15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 10, r = 3.05, $fn = 60);
translate(v = [20, -15, -15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, -15, -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.6, $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, -16, -15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, -16, -15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 10, r = 3.1, $fn = 30);
translate(v = [20, -16.5, -15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, -16.5, -15.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 10, r = 3.1, $fn = 30);
translate(v = [20, 16, -15.0]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, 16, -15.0]) 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.6, $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, -16]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, 15, -16]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 10, r = 3.1, $fn = 30);
translate(v = [20, 14.5, -16.5]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 1.6, $fn = 30);
translate(v = [1, 14.5, -16.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, 12]) cube(size = [60, 42, 42], center = true);
translate(v = [-25, 10.5, -11]) rotate([45, 0, 0]) cube(size = [60, 10, 10]);
translate(v = [-25, 21, -11]) rotate([45, 0, 0]) cube(size = [60, 10, 10]);
// Material saving cutout
translate(v = [-10, 41, -30.5]) rotate(a = [45, 0, 0]) cube(size = [60, 42, 42], center = true);
translate([-15, -2, -33]) rotate([-45, 0, 0]) cylinder(h = 25, r = 1.7, $fn = 30);
translate([-15, -2, -33]) rotate([-45, 0, 0]) cylinder(h = 28 - 18, r = 3.2, $fn = 30);
translate([-35 + 2.8, 10, -25]) rotate([45, 0, 0]) cube(size = [20, 2, 5.6]);
}
}
// Motor shaft cutout
module x_end_motor_shaft_cutout()
{
union()
{
difference()
{
translate(v = [0, 32, 30]) rotate(a = [0, -90, 0]) rotate(a = [0, 0, 90]) cylinder(h = 70, r = 17, $fn = 6);
translate(v = [-10, -17 + 32, 30]) cube(size = [60, 2, 10], center = true);
translate(v = [-10, -8 + 32, -15.5 + 30]) rotate(a = [60, 0, 0]) cube(size = [60, 2, 10], center = true);
translate(v = [-10, 8 + 32, -15.5 + 30]) rotate(a = [-60, 0, 0]) cube(size = [60, 2, 10], center = true);
}
translate(v = [-30, 25.2, -11.8 + 30]) rotate(a = [0, 90, 0]) cylinder(h = 30, r = 3, $fn = 30);
translate(v = [-30, 19.05, 30]) rotate(a = [0, 90, 0]) cylinder(h = 30, r = 3.5, $fn = 100);
}
}
// Final part
module x_end_motor()
{
difference()
{
x_end_motor_base();
x_end_motor_shaft_cutout();
x_end_motor_holes();
// waste pocket
translate([-15, 7, 6]) rotate([90, 0, 0]) cylinder(h = 3.5, r = 5, $fn = 30);
translate([-15, 7, 51]) rotate([90, 0, 0]) cylinder(h = 3.5, r = 5, $fn = 30);
translate([-15, 3.5, 6]) rotate([90, 0, 0]) cylinder(h = 3, r1 = 5, r2 = 4, $fn = 30);
translate([-15, 3.5, 51]) rotate([90, 0, 0]) cylinder(h = 3, r1 = 5, r2 = 4, $fn = 30);
// rod contact window
translate([-17, 3, 55]) cube([4, 4, 10]);
translate([-17, 3, -8]) cube([4, 4, 10]);
translate([-30, -30, 58]) cube([30, 30, 10]);
// version
translate([-23.2, -20, 2]) rotate([90, 0, 270]) linear_extrude(height = 0.6)
{ text("R3", font = "helvetica:style = Bold", size = 4, center = true); }
}
translate([-15, 10, 6]) rotate([90, 0, 0]) cylinder(h = 3, r = 5, $fn = 30);
translate([-15, 10, 51]) rotate([90, 0, 0]) cylinder(h = 3, r = 5, $fn = 30);
// bearing stop
difference()
{
translate([0, 0, 57]) rotate([0, 0, 90]) cylinder(h = 1, r = 8, $fn = 30);
translate([0, 0, 56.9]) rotate([0, 0, 90]) cylinder(h = 0.5, r1 = 8, r2 = 7, $fn = 30);
translate([0, 0, 56.5]) rotate([0, 0, 90]) cylinder(h = 2, r = 7, $fn = 30);
translate([-0.18, -0.5, 50]) rotate([0, 0, -40]) cube([12, 1, 10]);
}
// bearings spacer
rotate([0, 0, 45]) difference()
{
translate([0, 0, 26]) rotate([0, 0, 90]) cylinder(h = 6, r = 8, $fn = 30);
translate([0, 0, 25]) rotate([0, 0, 90]) cylinder(h = 8, r = 7.55, $fn = 60);
translate([0, 0, 25.9]) rotate([0, 0, 90]) cylinder(h = 2, r2 = 7.5, r1 = 7.7, $fn = 30);
translate([0, 0, 31.4]) rotate([0, 0, 90]) cylinder(h = 2, r1 = 7.5, r2 = 8.3, $fn = 30);
rotate([0, 0, 310]) translate([-2.5, 0, 26]) cube([5, 15, 10]);
rotate([0, 0, 310 - 120]) translate([-2.5, 0, 26]) cube([5, 15, 10]);
rotate([0, 0, 310 - 240]) translate([-2.5, 0, 26]) cube([5, 15, 10]);
}
// nut trap print supoorts
translate(v = [-5.8, -13.149, 13.5]) rotate([0, 0, 45]) cube(size = [10, 2.1, 1], center = true);
translate(v = [-9.8, -11, 13.7]) rotate([0, 0, 135]) cube(size = [8, 2.1, 0.4], center = true);
translate(v = [-5.2, -8, 13.7]) rotate([0, 0, 135]) cube(size = [8, 2.1, 0.4], center = true);
translate(v = [-8.8, -8.55, 13.5]) rotate([0, 0, 45]) cube(size = [8, 2.1, 1], center = true);
}
difference()
{
union()
{
x_end_motor();
translate([-8, -17, 13.0]) rotate([0, 0, 44.7]) cube([10, 1.5, 1]);
}
//chamfers
translate([-47, -40, 60]) rotate([0, 45, 0]) cube([20, 80, 20]);
translate([-20, -30.5, 69]) rotate([0, 45, 0]) cube([20, 20, 20]);
translate([-25, -37, 49]) rotate([45, 0, 0]) cube([30, 20, 20]);
translate([-25, 23.5, 49]) rotate([45, 0, 0]) cube([30, 20, 20]);
}