x-end: position idler bearing in relation to motor pulley
[clinton/prusa3.git] / box_frame / x-carriage.scad
1 // PRUSA iteration3
2 // X carriage
3 // GNU GPL v3
4 // Josef Průša <josefprusa@me.com>
5 // Václav 'ax' Hůla <axtheb@gmail.com>
6 // http://www.reprap.org/wiki/Prusa_Mendel
7 // http://github.com/josefprusa/Prusa3
8
9 // ThingDoc entry
10 /**
11 * @id xCarriage
12 * @name X Axis Extruder Carriage
13 * @category Printed
14 */
15
16 include <configuration.scad>
17 use <bushing.scad>
18 // mounting plate
19 use <extras/groovemount.scad>
20
21
22 //Use 30 for single extruder, 50 for wades, 80 for dual extruders (moved to config file)
23 //carriage_l_base = 80;
24 //check if we need to extend carriage to fit bearings
25 carriage_l_adjusted = max(adjust_bushing_len(bushing_xy, carriage_l_base, layer_height * 9), adjust_bushing_len(bushing_carriage, carriage_l_base, layer_height * 9));
26 //For bearings 30mm long or shorter enforce double len
27 carriage_l_real = max((bushing_xy[2] > 30 ? carriage_l_adjusted : (2 * bushing_xy[2] + 6)), carriage_l_adjusted);
28 // if the carriage was extended, we want to increase carriage_hole_to_side
29 carriage_hole_to_side = max(3, ((carriage_l_real - carriage_l_base) / 2));
30 echo(carriage_hole_to_side);
31 carriage_l = carriage_l_base + 2 * carriage_hole_to_side;
32
33
34 bushing_carriage_len = adjust_bushing_len(bushing_carriage, 21, layer_height * 9);
35
36 module x_carriage(){
37 mirror([1,0,0]) {
38 difference() {
39 union() {
40 //upper bearing
41 rotate([0, 0, 90]) linear(bushing_carriage);
42 //lower bearing
43 translate([xaxis_rod_distance,0,0]) rotate([0, 0, 90]) linear(bushing_xy, carriage_l);
44
45 //This block moves with varying bearing thickness to ensure the front side is flat
46 translate([0, -bushing_foot_len(bushing_xy), 0]) {
47 // main plate
48 translate([4, -1, 0]) cube_fillet([xaxis_rod_distance + 4, 6, carriage_l], radius=2);
49 translate([-8, -1, 0]) cube_fillet([xaxis_rod_distance + 16, 6, bushing_carriage_len + 3], radius=2);
50 }
51
52 translate([45/2,0,0]){
53
54 //fill the space where the belt is, as it will be substracted at later point and we want it stiff here.
55 //belt smooth side
56 translate([-13.5 - belt_thickness, -8.5, 0]) cube_fillet([5, 15, carriage_l], vertical = [2, 2, 0, 0]);
57 //belt teethed side, with cutouts for belt ends.
58 difference(){
59 union() {
60 translate([-3, -1, carriage_l/2]) cube_fillet([11, 16, carriage_l], vertical = [2, 2, 0, 0], center = true);
61 translate([-13, -10, 0]) cube([8, 10, carriage_l]);
62 }
63 translate([-3.5, 0, 67 + carriage_hole_to_side]) cube([13, 10, 8], center = true);
64 translate([-3.5, 0, 40 + carriage_hole_to_side]) cube([13, 10, 8], center = true);
65 translate([-3.5, 0, 15 + carriage_hole_to_side]) cube([13, 10, 8], center = true);
66 if (carriage_l_base == 30) {
67 //more space for belt ends, as there is only one cutout
68 translate([-3.5, 0, 15 + carriage_hole_to_side]) cube([13, 10, 14], center = true);
69 }
70 }
71
72 }
73 }
74 //Ensure upper bearing can be inserted cleanly
75 rotate([0, 0, 90]) {
76 linear_negative(bushing_carriage, carriage_l);
77 }
78 //Same for lower bearing
79 translate([xaxis_rod_distance, 0, 0]) rotate([0, 0, 90]) {
80 linear_negative(bushing_xy, carriage_l);
81 }
82 // extruder mounts
83 translate([20, -2, carriage_hole_to_side]) {
84 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments);
85 translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true);
86 }
87 translate([20, -2, carriage_hole_to_side + 30]) {
88 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments);
89 translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true);
90 }
91 if (carriage_l >= 50 + 2 * carriage_hole_to_side) {
92 translate([20, -2, carriage_hole_to_side + 30 + 20]) {
93 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments);
94 translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true);
95 }
96 }
97 if (carriage_l >= 80 + 2 * carriage_hole_to_side) {
98 translate([20, -2, carriage_hole_to_side + 30 + 20 + 30]) {
99 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments);
100 translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true);
101 }
102 }
103 //belt insert
104 translate([-8.5 + 45 / 2, 0, 0]) mirror([1, 0, 0]) {
105 belt(carriage_l, 5);
106 %belt(carriage_l);
107 }
108 }
109 }
110 }
111
112 x_carriage();