summaryrefslogtreecommitdiff
path: root/another.scad
authorMichael Krelin <hacker@klever.net>2018-08-12 21:36:03 (UTC)
committer Michael Krelin <hacker@klever.net>2018-08-12 21:36:03 (UTC)
commite33d88e915e10aa7c127a75482e1210313c29add (patch) (unidiff)
treec51b6a3fc3ff57b21b1bdfdaae0b472cd430190b /another.scad
parentf123d3acb5e918b6a21af0a65bba4dc0395c73f3 (diff)
downloadextrudery-e33d88e915e10aa7c127a75482e1210313c29add.zip
extrudery-e33d88e915e10aa7c127a75482e1210313c29add.tar.gz
extrudery-e33d88e915e10aa7c127a75482e1210313c29add.tar.bz2
make offset on idler and pulley side difference
idler is moving and as long as I'm using plain bearing for idler that should be better
Diffstat (limited to 'another.scad') (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad21
1 files changed, 13 insertions, 8 deletions
diff --git a/another.scad b/another.scad
index a93d21a..50b3a84 100644
--- a/another.scad
+++ b/another.scad
@@ -26,184 +26,189 @@ module the_extruder(
26 // filament path properties 26 // filament path properties
27 filament_d = 1.75, 27 filament_d = 1.75,
28 filament_path_d = 2, 28 filament_path_d = 2,
29 filament_guide_d = 4, // PTFE filament guide diameter 29 filament_guide_d = 4, // PTFE filament guide diameter
30 // knob properties 30 // knob properties
31 knob_h = 10, 31 knob_h = 10,
32 knob_bore_l = 4, 32 knob_bore_l = 4,
33 knob_indent_d = 4, 33 knob_indent_d = 4,
34 knob_indents = 12, 34 knob_indents = 12,
35 // spring tensioner 35 // spring tensioner
36 st_nut_d = 9, st_nut_h = 4, 36 st_nut_d = 9, st_nut_h = 4,
37 st_screw_d = 5, 37 st_screw_d = 5,
38 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, 38 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width,
39 39
40 // screw it 40 // screw it
41 mount_screw_d = 3.1, mount_screw_l = 20, 41 mount_screw_d = 3.1, mount_screw_l = 20,
42 mount_screwhead_d=6, mount_screwhead_h=3, 42 mount_screwhead_d=6, mount_screwhead_h=3,
43 idler_screw_d = 3, 43 idler_screw_d = 3,
44 idler_screwhead_d=6, idler_screwhead_h=3, 44 idler_screwhead_d=6, idler_screwhead_h=3,
45 45
46 pf = pushfit_embeddest, 46 pf = pushfit_embeddest,
47 pf_shell = max(3*layer_height,3*extrusion_width), 47 pf_shell = max(3*layer_height,3*extrusion_width),
48 pf_smooth = true, 48 pf_smooth = true,
49 49
50 // empty spaces 50 // empty spaces
51 idler_travel = 3, // how far should idler travel when pressed 51 idler_travel = 3, // how far should idler travel when pressed
52 idler_clearance=1, 52 idler_clearance=1,
53 pulley_clearance=2, 53 pulley_clearance=2,
54 lever_v_clearance=.7, // vertical clearance for the lever 54 lever_v_clearance=.7, // vertical clearance for the lever
55 spring_d_clearance=1, 55 spring_d_clearance=1,
56 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion 56 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
57 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion 57 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
58 mount_screw_d_tolerance=.4, 58 mount_screw_d_tolerance=.4,
59 idler_v_tolerance=.5, 59 idler_v_tolerance=.5,
60 knob_bore_d_tolerance=.6, 60 knob_bore_d_tolerance=.6,
61 st_nut_h_tolerance=.2, 61 st_nut_h_tolerance=.2,
62 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ 62 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */
63 st_screw_d_tolerance=.5, 63 st_screw_d_tolerance=.5,
64 64
65 what="lever", // lever|body|knob|springpad|* 65 what="lever", // lever|body|knob|springpad|*
66 left=false, 66 left=false,
67 vitamins = true, 67 vitamins = true,
68 supports = false, bridges = true, 68 supports = false, bridges = true,
69 tensioner = true, 69 tensioner = true,
70 debug = false 70 debug = false
71) { 71) {
72 fnd = 2*PI; fnr = 2*fnd; 72 fnd = 2*PI; fnr = 2*fnd;
73 73
74 idler_filament_offset = filament_path_d/2; // -filament_offset;
74 lever_shell = mount_screwhead_h+0.5; 75 lever_shell = mount_screwhead_h+0.5;
75 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); 76 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell);
76 lsd = idler_d-idler_clearance*2; 77 lsd = idler_d-idler_clearance*2;
77 longwing=gearbox_d/2+spring_d/2+lsd/2; 78 longwing=gearbox_d/2+spring_d/2+lsd/2;
78 h_ = (pulley_d+idler_d)/(2*sqrt(2)); 79 h_ = (pulley_d+idler_d)/(2*sqrt(2));
79 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); 80 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) );
80 spring_dl = idler_travel*longwing/ri; 81 spring_dl = idler_travel*longwing/ri;
81 82
82 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; 83 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation;
83 ls_z = filament_elevation; // leverspace mid-z 84 ls_z = filament_elevation; // leverspace mid-z
84 body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2); 85 body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2);
85 ls_h = lever_thickness+lever_v_clearance; // leverspace height 86 ls_h = lever_thickness+lever_v_clearance; // leverspace height
86 87
87 module mirrorleft() { 88 module mirrorleft() {
88 mirror([left?0:1,0,0]) children(); 89 mirror([left?0:1,0,0]) children();
89 } 90 }
90 module place_idler() { 91 module place_idler() {
91 rotate([0,0,45]) 92 rotate([0,0,45])
92 translate([(pulley_d+idler_d)/2,0,0]) 93 translate([(pulley_d+idler_d)/2,0,0])
93 children(); 94 children();
94 } 95 }
95 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) { 96 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) {
96 if(depth) { 97 if(depth) {
97 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth); 98 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth);
98 rr = depth+hh; 99 rr = depth+hh;
99 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr); 100 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr);
100 }else if(r) { 101 }else if(r) {
101 hh=sqrt(pow(r,2)-pow(d,2)/4); 102 hh=sqrt(pow(r,2)-pow(d,2)/4);
102 translate([0,0,hh]) sphere(r=r,$fn=fnr*r); 103 translate([0,0,hh]) sphere(r=r,$fn=fnr*r);
103 } 104 }
104 } 105 }
105 106
106 % if(vitamins) mirrorleft() { 107 % if(vitamins) mirrorleft() {
107 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60); 108 translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60);
108 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) 109 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0])
109 cylinder(d=mount_screw_d,h=20,$fn=30); 110 cylinder(d=mount_screw_d,h=20,$fn=30);
110 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30); 111 translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30);
111 translate([0,0,protrusion_h]) { 112 translate([0,0,protrusion_h]) {
112 difference() { 113 difference() {
113 cylinder(d=bore_d,h=bore_l,$fn=30); 114 cylinder(d=bore_d,h=bore_l,$fn=30);
114 translate([-bore_d/2-1,bore_dd-bore_d/2,-1]) 115 translate([-bore_d/2-1,bore_dd-bore_d/2,-1])
115 cube([bore_d+2,bore_d/2,bore_l+2]); 116 cube([bore_d+2,bore_d/2,bore_l+2]);
116 } 117 }
117 translate([0,0,pulley_elevation]) { 118 translate([0,0,pulley_elevation]) {
118 cylinder(d=pulley_d,h=pulley_h,$fn=30); 119 cylinder(d=pulley_d,h=pulley_h,$fn=30);
119 translate([0,0,teeth_elevation]) { 120 translate([0,0,teeth_elevation]) {
120 place_idler() { 121 place_idler() {
121 cylinder(d=idler_d,h=idler_h,center=true,$fn=30); 122 cylinder(d=idler_d,h=idler_h,center=true,$fn=30);
122 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); 123 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
123 }//place idler 124 }//place idler
124 // filament path 125 // filament path
125 rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) { 126 rotate([0,0,45]) {
126 rotate([90,0,0]) cylinder(d=filament_d,h=gearbox_d*2,center=true,$fn=15); 127 translate([pulley_d/2-idler_filament_offset,0,0]) rotate([90,0,0]) {
127 rotate([-90,0,0]) 128 cylinder(d=filament_d,h=gearbox_d,center=false,$fn=15);
128 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d]) 129 }//rotate translate
129 pushfit(pf); 130 translate([pulley_d/2+filament_offset,0,0]) rotate([-90,0,0]) {
130 } 131 cylinder(d=filament_d,h=gearbox_d,center=false,$fn=15);
132 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d])
133 pushfit(pf);
134 }//rotate translate
135 }//rotate
131 }//translate teeth 136 }//translate teeth
132 }//translate pulley 137 }//translate pulley
133 }//translate protrusion 138 }//translate protrusion
134 }//vitamins 139 }//vitamins
135 140
136 module lever() { 141 module lever() {
137 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) { 142 translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) {
138 difference() { 143 difference() {
139 union() { 144 union() {
140 hull() { 145 hull() {
141 place_idler() 146 place_idler()
142 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 147 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
143 translate([mount_d/2,0,0]) 148 translate([mount_d/2,0,0])
144 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 149 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
145 }//hull 150 }//hull
146 hull() { 151 hull() {
147 translate([mount_d/2,0,0]) 152 translate([mount_d/2,0,0])
148 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 153 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
149 translate([mount_d/2,-longwing,0]) rotate([0,90,0]) 154 translate([mount_d/2,-longwing,0]) rotate([0,90,0])
150 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); 155 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60);
151 }//hull 156 }//hull
152 }//union 157 }//union
153 158
154 // filament path 159 // filament path
155 place_idler() { 160 place_idler() {
156 translate([-idler_d/2+filament_offset,0,0]) rotate([90,0,0]) { 161 translate([-idler_d/2-idler_filament_offset,0,0]) rotate([90,0,0]) {
157 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30); 162 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30);
158 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45]) 163 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45])
159 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true); 164 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true);
160 }//rotate translate 165 }//rotate translate
161 translate([-idler_d/2+filament_offset,0,0]) 166 translate([-idler_d/2-idler_filament_offset,0,0])
162 rotate([90,0,0]) 167 rotate([90,0,0])
163 translate([0,0, 168 translate([0,0,
164 sqrt(2)*(mount_d-pulley_d+lsd)/2 169 sqrt(2)*(mount_d-pulley_d+lsd)/2
165 ]) { 170 ]) {
166 cylinder(d1=filament_path_d,d2=2*filament_path_d, 171 cylinder(d1=filament_path_d,d2=2*filament_path_d,
167 h=filament_path_d,$fn=2*filament_path_d*fnd); 172 h=filament_path_d,$fn=2*filament_path_d*fnd);
168 translate([0,0,filament_path_d-epsilon]) 173 translate([0,0,filament_path_d-epsilon])
169 cylinder(d=2*filament_path_d,h=lsd,$fn=2*filament_path_d*fnd); 174 cylinder(d=2*filament_path_d,h=lsd,$fn=2*filament_path_d*fnd);
170 } 175 }
171 }//place_idler 176 }//place_idler
172 177
173 // idler space and mounting hole 178 // idler space and mounting hole
174 place_idler() { 179 place_idler() {
175 difference() { 180 difference() {
176 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); 181 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60);
177 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) 182 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
178 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) 183 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1])
179 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); 184 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]);
180 } 185 }
181 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); 186 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
182 translate([0,0,lever_thickness/2-idler_screwhead_h]) 187 translate([0,0,lever_thickness/2-idler_screwhead_h])
183 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d); 188 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d);
184 } 189 }
185 // mounting screw hole 190 // mounting screw hole
186 translate([mount_d/2,0,0]) 191 translate([mount_d/2,0,0])
187 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); 192 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d);
188 193
189 // lever end 194 // lever end
190 translate([mount_d/2,0,0]) rotate([0,90,0]) { 195 translate([mount_d/2,0,0]) rotate([0,90,0]) {
191 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); 196 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15);
192 translate([0,-longwing,0]) 197 translate([0,-longwing,0])
193 mirror([0,0,1]) 198 mirror([0,0,1])
194 difference() { 199 difference() {
195 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance)); 200 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance));
196 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); 201 sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4);
197 } 202 }
198 }//rotate-translate 203 }//rotate-translate
199 }//difference 204 }//difference
200 // bridging patch 205 // bridging patch
201 if(bridges) place_idler() 206 if(bridges) place_idler()
202 translate([0,0,lever_thickness/2-mount_screwhead_h]) 207 translate([0,0,lever_thickness/2-mount_screwhead_h])
203 mirror([0,0,1]) 208 mirror([0,0,1])
204 cylinder(d=mount_screwhead_d,h=layer_height); 209 cylinder(d=mount_screwhead_d,h=layer_height);
205 }//translate 210 }//translate
206 }//lever module 211 }//lever module
207 212
208 module body() { 213 module body() {
209 difference() { 214 difference() {