Enlarge bracket screw
[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/prusajr/PrusaMendel
8
9 include <configuration.scad>
10 use <bushing.scad>
11 // mounting plate
12 use <extras/groovemount.scad>
13
14
15 //Use 30 for single extruder, 50 for wades, 80 for dual extruders (moved to config file)
16 //carriage_l_base = 80;
17 //check if we need to extend carriage to fit bearings
18 carriage_l_real = max(adjust_bushing_len(bushing_xy, carriage_l_base, layer_height * 9), adjust_bushing_len(bushing_carriage, carriage_l_base, layer_height * 9));
19 // if the carriage was extended, we want to increase carriage_hole_to_side
20 carriage_hole_to_side = max(3, ((carriage_l_real - carriage_l_base) / 2));
21 carriage_l = carriage_l_base + 2 * carriage_hole_to_side;
22
23 bushing_carriage_len = adjust_bushing_len(bushing_carriage, 21, layer_height * 9);
24
25 module x_carriage(){
26 mirror([1,0,0]) {
27 difference() {
28 union() {
29 //upper bearing
30 rotate([0, 0, 90]) linear(bushing_carriage);
31 //lower bearing
32 translate([xaxis_rod_distance,0,0]) rotate([0, 0, 90]) linear(bushing_xy, carriage_l);
33
34 //This block moves with varying bearing thickness to ensure the front side is flat
35 translate([0, -bushing_foot_len(bushing_xy), 0]) {
36 // main plate
37 translate([0, -1, 0]) cube_fillet([xaxis_rod_distance + 8, 6, carriage_l], radius=2);
38 translate([-8, -1, 0]) cube_fillet([xaxis_rod_distance + 16, 6, bushing_carriage_len + 3], radius=2);
39 }
40
41 translate([45/2,0,0]){
42
43 //fill the space where the belt is, as it will be substracted at later point and we want it stiff here.
44 translate([-13, -10, 0]) cube([8, 10, carriage_l]);
45 //belt smooth side
46 translate([-13.5 - belt_thickness, -8.5, 0]) cube_fillet([5, 15, carriage_l], vertical = [2, 2, 0, 0]);
47 //belt teethed side, with cutouts for belt ends.
48 difference(){
49 translate([-3, -1, carriage_l/2]) cube_fillet([11, 16, carriage_l], vertical = [2, 2, 0, 0], center = true);
50 translate([-3.5, 0, 70]) cube([13, 10, 8], center = true);
51 translate([-3.5, 0, 43]) cube([13, 10, 8], center = true);
52 translate([-3.5, 0, 18]) cube([13, 10, 8], center = true);
53 }
54
55 }
56 }
57 //Ensure upper bearing can be inserted cleanly
58 rotate([0,0,90]) {
59 linear_negative(bushing_carriage);
60 }
61 //Same for lower bearing
62 translate([xaxis_rod_distance,0,0]) rotate([0, 0, 90]) {
63 linear_negative(bushing_xy, carriage_l);
64 }
65 // extruder mounts
66 translate([20, -2, carriage_hole_to_side]) {
67 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true);
68 translate([0, 9, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true);
69 }
70 translate([20, -2, carriage_hole_to_side + 30]) {
71 rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true);
72 translate([0,9,0]) rotate([90,60,0]) cylinder(r=3.4, h=5, $fn=6, center=true);
73 }
74 if (carriage_l >= 50 + 2 * carriage_hole_to_side) {
75 translate([20, -2, carriage_hole_to_side + 30 + 20]) {
76 rotate([90,0,0]) cylinder(r=1.8, h=32, center=true);
77 translate([0,9,0]) rotate([90,60,0]) cylinder(r=3.4, h=5, $fn=6, center=true);
78 }
79 }
80 if (carriage_l >= 80 + 2 * carriage_hole_to_side) {
81 translate([20,-2,carriage_hole_to_side+30+20+30]) {
82 rotate([90,0,0]) cylinder(r=1.8, h=22, center=true);
83 translate([0,9,0]) rotate([90,60,0]) cylinder(r=3.4, h=5, $fn=6, center=true);
84 }
85 }
86 //belt insert
87 translate([-8.5 + 45 / 2, 0, 0]) mirror([1, 0, 0]) {
88 belt(carriage_l, 5);
89 %belt(carriage_l);
90 }
91 }
92 }
93 }
94
95 x_carriage();