You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.0 KiB
154 lines
5.0 KiB
box_x = 70;
|
|
box_y = 55;
|
|
box_z = 16+10+3;
|
|
wall_thickness=0.8;
|
|
inner_screw=1; // TODO!
|
|
gear_distance = 25.2;
|
|
gear_thickness = 5;
|
|
|
|
module outer_old() {
|
|
$fn=50;
|
|
minkowski() {
|
|
cube([box_x,box_y,box_z]);
|
|
cylinder(r=wall_thickness,h=1);
|
|
}
|
|
}
|
|
|
|
module inner_old() {
|
|
$fn=50;
|
|
translate([wall_thickness,wall_thickness,wall_thickness])
|
|
minkowski() {
|
|
cube([box_x-2*wall_thickness,box_y-2*wall_thickness,box_z]);
|
|
cylinder(r=wall_thickness,h=1);
|
|
}
|
|
}
|
|
|
|
module outer() {
|
|
$fn=50;
|
|
cylinder(r=40/2+wall_thickness,h=box_z);
|
|
translate([gear_distance,0,0]) cylinder(r=40/2+wall_thickness,h=box_z);
|
|
translate([0,-(40/2+wall_thickness),0]) cube([gear_distance,40+wall_thickness*2,box_z]);
|
|
fastening();
|
|
translate([gear_distance,0,0])mirror([1,0,0])fastening();
|
|
}
|
|
|
|
module inner() {
|
|
$fn=50;
|
|
translate([0,0,wall_thickness]) cylinder(r=40/2,h=box_z);
|
|
translate([gear_distance,0,wall_thickness]) cylinder(r=40/2,h=box_z);
|
|
translate([0,-(40/2),box_z-wall_thickness]) cube([gear_distance,40,5]);
|
|
fastening_cut();
|
|
}
|
|
|
|
module servo() {
|
|
$fn=50;
|
|
translate([6,0,0])
|
|
{
|
|
cube([22.5+0.5,12+0.5,33.5-5.5],center=true); // body
|
|
translate([0,0,28/2-3]) cube([32.5,12.5,2.5],center=true); // bracket
|
|
translate([-6,0,-14]) cylinder(r=2.8,h=35.5); // bearing
|
|
translate([27.5/2,0,5]) cylinder(r=inner_screw,h=10); // screw
|
|
translate([-27.5/2,0,5]) cylinder(r=inner_screw,h=10); // screw
|
|
translate([-22.5/2-0.6,0,0]) cube([1.2,4,28],center=true); // cable
|
|
}
|
|
}
|
|
|
|
module space() {
|
|
$fn=50;
|
|
translate([6,0,0])
|
|
//translate([27.5/2,0,28/2-3]) cylinder(r=inner_screw*2.2,h=9); // place to screw
|
|
translate([0,0,28/2-3+4.5+2.5]) cube([32.5-0.3,12.5,2.5+9],center=true); // place to screw
|
|
}
|
|
|
|
module servo_bracket() {
|
|
$fn=50;
|
|
minkowski() {
|
|
translate([6,0,3]) cube([22.5+0.5+9-wall_thickness*2,12+0.5-wall_thickness*2,6],center=true); // body
|
|
cylinder(r=wall_thickness,h=1);
|
|
}
|
|
}
|
|
|
|
module gear_bearing() {
|
|
$fn = 50;
|
|
cylinder(r=10/2,h=6+2.5+1.5+gear_thickness+1.6);
|
|
cylinder(r=5/2,h=box_z-wall_thickness);
|
|
}
|
|
|
|
module lid_screws() {
|
|
$fn = 50;
|
|
translate([gear_distance/2,40/2-2,box_z-8]) cylinder(r=inner_screw,h=8);
|
|
translate([gear_distance/2,-(40/2-2),box_z-8]) cylinder(r=inner_screw,h=8);
|
|
//translate([gear_distance/2,40/2-2,box_z-8]) cylinder(r=inner_screw*1.9,h=8); // shaft
|
|
//translate([gear_distance/2,-(40/2-2),box_z-8]) cylinder(r=inner_screw*2,h=8); // shaft
|
|
}
|
|
|
|
module box() {
|
|
difference() {
|
|
outer();
|
|
inner();
|
|
}
|
|
}
|
|
|
|
module rod() {
|
|
translate([20-7.5-16,-100,6+2.5+1.5+gear_thickness*2+1.7]) cube([12+0.8,173.2+0.4,5+0.4+3]);
|
|
}
|
|
|
|
module lid() {
|
|
$fn = 50;
|
|
difference() {
|
|
union() {
|
|
translate([0,0,box_z-wall_thickness]) cylinder(r=40/2-0.2,h=wall_thickness);
|
|
translate([gear_distance,0,box_z-wall_thickness]) cylinder(r=40/2-0.2,h=wall_thickness);
|
|
translate([0,-(40/2)+0.2,box_z-wall_thickness]) cube([gear_distance,40-0.4,wall_thickness]); // mid
|
|
translate([gear_distance,0,box_z-wall_thickness*2]) difference() {
|
|
cylinder(r=7,h=wall_thickness); // bearing outer
|
|
cylinder(r=5/2+0.3,h=wall_thickness*2); // bearing inner
|
|
}
|
|
}
|
|
translate([gear_distance/2,40/2-2,box_z-1]) cylinder(r=inner_screw,h=3);
|
|
translate([gear_distance/2,-(40/2-2),box_z-1]) cylinder(r=inner_screw,h=3);
|
|
// translate([-gear_distance/2-3,0,box_z-1]) cylinder(r=inner_screw,h=3);
|
|
// translate([gear_distance*1.5+3,0,box_z-1]) cylinder(r=inner_screw,h=3);
|
|
}
|
|
translate([(20-7.5-16)-2+0.4,-(40/2)+2,box_z-wall_thickness-5]) cube([2,40-4,5+wall_thickness]); // rod guide
|
|
difference() {
|
|
translate([gear_distance/2,0,box_z-wall_thickness])cube([79,7,wall_thickness],center=true); // fastening
|
|
translate([gear_distance+40/2+4,0,box_z-2*wall_thickness]) cylinder(r=1.4,h=8);
|
|
translate([-40/2-4,0,box_z-2*wall_thickness]) cylinder(r=1.4,h=8);
|
|
}
|
|
}
|
|
|
|
module fastening() {
|
|
$fn=50;
|
|
translate([gear_distance+40/2,0,box_z-2*wall_thickness]) {
|
|
difference() {
|
|
minkowski() {
|
|
translate([0,-7/2+0.5,0])rotate([-90,0,0])linear_extrude(7-1)polygon(points=[[0,0],[6,0],[0,6]]);
|
|
cylinder(r=1,h=wall_thickness);
|
|
}
|
|
translate([4,0,-5])cylinder(r=1.2,h=8);
|
|
translate([4,0,-5.6])cylinder(r=2,h=4);
|
|
}
|
|
}
|
|
}
|
|
|
|
module fastening_cut() {
|
|
$fn = 50;
|
|
translate([-30,-4,box_z-wall_thickness])cube([90,8,5]);
|
|
}
|
|
|
|
difference() {
|
|
union() {
|
|
box();
|
|
translate([0,0,0]) servo_bracket();
|
|
translate([gear_distance,0,0]) gear_bearing();
|
|
}
|
|
translate([0,0,-4]) servo();
|
|
translate([0,0,-4]) space();
|
|
lid_screws();
|
|
rod();
|
|
}
|
|
%translate([0,0,-4]) servo();
|
|
%rod();
|
|
%lid();
|
|
//translate([20,0,box_z-10-wall_thickness]) cube([10,10,10]);
|