main_winch: update design

This commit is contained in:
Laila van Reenen 2024-10-29 13:47:44 +01:00
parent bf50a848b3
commit 6f558e23a7
Signed by: LailaTheElf
GPG Key ID: 1F4E6EE3E6DDF769
11 changed files with 130325 additions and 54546 deletions

View File

@ -8,6 +8,7 @@ matt_thingness = 4;
roller_small_d = 30;
roller_flansh_d = 50;
roller_flansh_t = 3;
roller_side_tollerance = 0.5;
roller_above_base = 30;
@ -23,6 +24,10 @@ side_arch_center_h = 20;
side_mount_hole_sep = 35;
side_mount_hole_d = 4;
mid_arch_roler_cut_r = 25;
mid_winch_flansh_space = roller_flansh_t + 1;
mid_winch_tollerance = 0.1;
// distance between left bottom of side and the center of the top arch
side_corner_to_archCenter = sqrt((side_width/2)^2 + side_arch_center_h^2);
// angle from center of arch between left bottom and trangent point
@ -33,8 +38,17 @@ side_arch_trangent_a = side_flat_a - acos((side_width/2) / side_corner_to_archCe
side_flat_trangentPoint_x = (side_width/2) - (side_arch_r*cos(side_arch_trangent_a));
side_flat_trangentPoint_y = side_arch_center_h + (side_arch_r*sin(side_arch_trangent_a));
// mid top rounding
mid_topRounding_center_y = side_flat_trangentPoint_y/2;
mid_topRounding_side_x = side_flat_trangentPoint_x/2;
o = roller_above_base - mid_topRounding_center_y;
s = mid_arch_roler_cut_r;
mid_topRounding_inner_x = (side_width/2) - sqrt(pow(s, 2) - pow(o, 2));
mid_topRounding_d = mid_topRounding_inner_x - mid_topRounding_side_x;
mid_topRounding_center_x = mid_topRounding_side_x + mid_topRounding_d/2;
$fa=5;
$fs=1;
$fs=0.1;
module motor_mount_2d(){
union() {
@ -83,17 +97,80 @@ module mid_winch_2d() {
union() {
polygon(points = [
[0, 0],
[side_flat_trangentPoint_x, side_flat_trangentPoint_y],
[side_width-side_flat_trangentPoint_x, side_flat_trangentPoint_y],
[side_flat_trangentPoint_x/2, side_flat_trangentPoint_y/2],
[side_width-side_flat_trangentPoint_x/2, side_flat_trangentPoint_y/2],
[side_width, 0]
]);
translate([mid_topRounding_center_x, mid_topRounding_center_y])
circle(d = mid_topRounding_d);
translate([side_width-mid_topRounding_center_x, mid_topRounding_center_y])
circle(d = mid_topRounding_d);
}
translate([side_width/2, roller_above_base])
circle(r = mid_arch_roler_cut_r);
}
}
module mid_3d() {
mid_winch_width = base_width - mid_winch_flansh_space*2;
difference() {
union() {
// base
translate([0, 0, base_hight])
cube([base_len+matt_thingness*2, base_width, matt_thingness]);
// translate([0, 0, 0])
// cube([matt_thingness, base_width, base_hight+matt_thingness]);
// translate([matt_thingness+base_len, 0, 0])
// cube([matt_thingness, base_width, base_hight+matt_thingness]);
// winches
translate([matt_thingness, mid_winch_width+mid_winch_flansh_space, base_hight])
rotate([90, 0, 0])
linear_extrude(mid_winch_width) {
mid_winch_2d();
translate([base_len/2, 0])
mid_winch_2d();
}
// nibs over side
winch_side_a_ratio = side_flat_trangentPoint_x / side_flat_trangentPoint_y;
windh_side_mattThinkness_x = winch_side_a_ratio * matt_thingness;
translate([0, base_width+matt_thingness, base_hight])
rotate([90, 0, 0])
linear_extrude(base_width+matt_thingness*2) {
polygon(points = [
[0, 0],
[matt_thingness-mid_winch_tollerance, 0],
[matt_thingness-mid_winch_tollerance+windh_side_mattThinkness_x, matt_thingness],
[0, matt_thingness]
]);
translate([matt_thingness+side_width+mid_winch_tollerance, 0])
polygon(points = [
[0, 0],
[base_len/2-side_width-mid_winch_tollerance*2, 0],
[base_len/2-side_width-mid_winch_tollerance*2+windh_side_mattThinkness_x, matt_thingness],
[-windh_side_mattThinkness_x, matt_thingness],
]);
translate([matt_thingness+base_len/2+side_width+mid_winch_tollerance, 0])
polygon(points = [
[0, 0],
[base_len/2-side_width-mid_winch_tollerance+matt_thingness, 0],
[base_len/2-side_width-mid_winch_tollerance+matt_thingness, matt_thingness],
[-windh_side_mattThinkness_x, matt_thingness],
]);
}
}
translate([0, base_width*1.5, base_hight])
rotate([90, 0, 0]) {
translate([matt_thingness+(side_width/2)-(side_mount_hole_sep/2), side_mount_hole_d/2])
cylinder(h = base_width*2, d = side_mount_hole_d+0.0001);
translate([matt_thingness+(side_width/2)+(side_mount_hole_sep/2), side_mount_hole_d/2])
cylinder(h = base_width*2, d = side_mount_hole_d+0.0001);
translate([matt_thingness+base_len/2+(side_width/2)-(side_mount_hole_sep/2), side_mount_hole_d/2])
cylinder(h = base_width*2, d = side_mount_hole_d+0.0001);
translate([matt_thingness+base_len/2+(side_width/2)+(side_mount_hole_sep/2), side_mount_hole_d/2])
cylinder(h = base_width*2, d = side_mount_hole_d+0.0001);
}
translate([side_width/2, side_arch_center_h])
circle(r = side_arch_r);
translate([(side_width/2)-(side_mount_hole_sep/2), side_mount_hole_d/2])
circle(d = side_mount_hole_d);
translate([(side_width/2)+(side_mount_hole_sep/2), side_mount_hole_d/2])
circle(d = side_mount_hole_d);
}
}
@ -103,17 +180,56 @@ module side_3d() {
}
module side_right() {
translate([0, -0.0001, -0.0001])
rotate([90, 0, 0])
side_3d();
}
module side_left() {
translate([0, base_width+matt_thingness])
translate([0, base_width+matt_thingness+0.0001, -0.0001])
rotate([90, 0, 0])
side_3d();
}
// side_right();
// side_left();
linear_extrude(matt_thingness)
mid_winch_2d();
module roller_3d() {
union() {
rotate([-90, 0, 0])
cylinder(d = roller_small_d, h = base_width - roller_side_tollerance*2);
rotate([-90, 0, 0])
cylinder(d = roller_flansh_d, h = roller_flansh_t);
translate([0, base_width - roller_side_tollerance*2-roller_flansh_t])
rotate([-90, 0, 0])
cylinder(d = roller_flansh_d, h = roller_flansh_t);
}
}
module roller_front() {
translate([matt_thingness + side_width/2, 0, base_hight+roller_above_base])
translate([0, roller_side_tollerance])
roller_3d();
}
module roller_back() {
translate([matt_thingness + base_len/2 + side_width/2, 0, base_hight+roller_above_base])
translate([0, roller_side_tollerance])
roller_3d();
}
module full() {
side_right();
side_left();
mid_3d();
roller_front();
roller_back();
}
full();
// side_3d();
// translate([0, 0, -base_hight])
// mid_3d();
// rotate([90, 0, 0])
// roller_3d();

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff