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

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]);