diff --git a/README.md b/README.md index e126b9c..5e87993 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # dog_towing_cart Dog Towing Cart 3D design + +Dog Cart Above Shot +![Dog Cart Above Shot](./output/Dog Cart Above Shot.png) + +Dog Cart Worm's Eye View +![Dog Cart Worm's Eye View](./output/Dog Cart Worm's Eye View.png) + +Brake Assembly Worm's Eye View +![Brake Assembly Worm's Eye View](./output/Brake Assembly Worm's Eye View.png) diff --git a/config.scad b/config.scad index 151e4d5..142eb4b 100644 --- a/config.scad +++ b/config.scad @@ -47,14 +47,14 @@ X_POS_AXLE_LEG_REAR = min(X_POS_WHEEL_CENTRE - T_WHEEL / 2 - SPACING_WASHER_AXLE D_BEAM_BRAKE = 40; T_BEAM_BRAKE = 5; D_BRAKE_BALLSCREW_AXLE = 16; // M16 pitch 1.5 -L_BRAKE_BALLSCREW_AXLE = 700; +L_BRAKE_BALLSCREW_AXLE = 450; D_BRAKE_BALLSCREW_POWER_WHEEL = 120; T_BRAKE_BALLSCREW_POWER_WHEEL = get_metric_bolt_head_height(D_BRAKE_BALLSCREW_AXLE); D_WASHER_BRAKE_BALLSCREW_POWER_WHEEL = 50; // get_metric_bolt_washer_diameter_safe_working_clearance(D_BRAKE_BALLSCREW_AXLE); T_WASHER_BRAKE_BALLSCREW_POWER_WHEEL = 3; Z_OFFSET_BALLSCREW_AXLE_TO_BED_BASE = 125; // D_BRAKE_BALLSCREW_POWER_WHEEL / 2 + 25; -Y_OFFSET_BALLSCREW_LEG_REAR_FIXING_FROM_END = 100; -Y_OFFSET_BALLSCREW_LEG_FRONT_FIXING_FROM_END = Y_OFFSET_BALLSCREW_LEG_REAR_FIXING_FROM_END + 100; +Y_OFFSET_BALLSCREW_LEG_REAR_FIXING_FROM_END = 75; +Y_OFFSET_BALLSCREW_LEG_FRONT_FIXING_FROM_END = 200; // L_BEAM_FIXING_BALLSCREW_TO_BED = D_BRAKE_BALLSCREW_AXLE + D_WASHER_FIXING_BALLSCREW_TO_BED * 2; // beam lying along bed, not perpendicular to bed R_BASE_PLATE_FIXING_LEG_BRAKE_BALLSCREW_TO_BED = get_R_plate_square_base_plate_132(D_BEAM_BRAKE); L_LEG_FIXING_BRAKE_BALLSCREW_TO_BED = Z_OFFSET_BALLSCREW_AXLE_TO_BED_BASE - R_BASE_PLATE_FIXING_LEG_BRAKE_BALLSCREW_TO_BED[2] + D_BEAM_BRAKE / 2; diff --git a/image.png b/image.png new file mode 100644 index 0000000..fdfe959 Binary files /dev/null and b/image.png differ diff --git a/models/brake/brake_arm.scad b/models/brake/brake_arm.scad index 1868d25..f235a20 100644 --- a/models/brake/brake_arm.scad +++ b/models/brake/brake_arm.scad @@ -7,7 +7,7 @@ module brake_arm() { // body cube(R_BRAKE_ARM, center = true); // chamfer across end face for wheel overlap - translate([R_BRAKE_ARM[0] / 2 - R_BRAKE_ARM[1] / 2 * tan(ANGLE_BRAKE_ROD_MAX), 0, 0]) rotate([0, 0, 90 - ANGLE_BRAKE_ROD_MAX]) translate([0, -L_big / 2, -L_big / 2]) cube(L_big, center = false); + translate([R_BRAKE_ARM[0] / 2 - R_BRAKE_ARM[1] / 2 * tan(ANGLE_BRAKE_ROD_MAX), 0, 0]) rotate([0, 0, -(90 - ANGLE_BRAKE_ROD_MAX)]) translate([0, -L_big / 2, -L_big / 2]) cube(L_big, center = false); } // Shopping echo(str("Brake arm: Aluminium sheet ", R_BRAKE_ARM[1], "mm x ", R_BRAKE_ARM[0], "mm x ", R_BRAKE_ARM[2], "mm - x1")); diff --git a/models/brake/brake_assembly.scad b/models/brake/brake_assembly.scad index 7d1d16a..d0cad61 100644 --- a/models/brake/brake_assembly.scad +++ b/models/brake/brake_assembly.scad @@ -38,13 +38,13 @@ module brake_assembly(angle_brake_rod) { for (index_side_x = [0:1:1]) { mirror([index_side_x, 0, 0]) { - translate([X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE, 0, 0]) rotate([0, 0, -(90 - angle_brake_rod)]) { + translate([X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE, 0, 0]) rotate([0, 0, (90 - angle_brake_rod)]) { // brake arm translate([R_BRAKE_ARM[0] / 2, 0, 0]) brake_arm(); // fixing brake arm to brake pad - translate([R_BRAKE_ARM[0] - X_OFFSET_FIXING_BRAKE_ARM_TO_BRAKE_PAD_FROM_END, 0, R_BRAKE_ARM[2] / 2]) rotate([0, 0, 90 - ANGLE_BRAKE_ROD_MAX]) fixing_brake_arm_to_brake_pad(); + translate([R_BRAKE_ARM[0] - X_OFFSET_FIXING_BRAKE_ARM_TO_BRAKE_PAD_FROM_END, 0, R_BRAKE_ARM[2] / 2]) rotate([0, 0, -(90 - angle_brake_rod)]) fixing_brake_arm_to_brake_pad(); // brake pad - translate([R_BRAKE_ARM[0] - X_OFFSET_FIXING_BRAKE_ARM_TO_BRAKE_PAD_FROM_END, 0, R_BRAKE_ARM[2] / 2 + T_FIXING_BRAKE_ARM_TO_BRAKE_PAD + (W_FIXING_BRAKE_ARM_TO_BRAKE_PAD - T_FIXING_BRAKE_ARM_TO_BRAKE_PAD) / 2]) rotate([0, 0, 90 - ANGLE_BRAKE_ROD_MAX]) translate([T_FIXING_BRAKE_ARM_TO_BRAKE_PAD, 0, 0]) brake_pad(); + translate([R_BRAKE_ARM[0] - X_OFFSET_FIXING_BRAKE_ARM_TO_BRAKE_PAD_FROM_END, 0, R_BRAKE_ARM[2] / 2 + T_FIXING_BRAKE_ARM_TO_BRAKE_PAD + (W_FIXING_BRAKE_ARM_TO_BRAKE_PAD - T_FIXING_BRAKE_ARM_TO_BRAKE_PAD) / 2]) rotate([0, 0, -(90 - angle_brake_rod)]) translate([T_FIXING_BRAKE_ARM_TO_BRAKE_PAD, 0, 0]) brake_pad(); } // fixing brake arm to rear axle leg translate([X_POS_AXLE_LEG_REAR, -y_pos_lead_fixing_ballscrew_to_brake_arms + Y_POS_AXLE_REAR, 0]) fixing_brake_arm_to_rear_axle_leg(); diff --git a/models/brake/brake_assembly_functions.scad b/models/brake/brake_assembly_functions.scad index d319680..c0eca96 100644 --- a/models/brake/brake_assembly_functions.scad +++ b/models/brake/brake_assembly_functions.scad @@ -1,3 +1,3 @@ // include <../../config.scad>; // circular reference! -function get_y_pos_lead_fixing_ballscrew_to_brake_arms(angle_brake_rod, y_pos_axle_rear, x_pos_axle_leg_rear, x_offset_fixing_brake_arm_to_lead_plate) = y_pos_axle_rear + (x_pos_axle_leg_rear - x_offset_fixing_brake_arm_to_lead_plate) / tan(angle_brake_rod); // (X_POS_AXLE_LEG_REAR - X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE) \ No newline at end of file +function get_y_pos_lead_fixing_ballscrew_to_brake_arms(angle_brake_rod, y_pos_axle_rear, x_pos_axle_leg_rear, x_offset_fixing_brake_arm_to_lead_plate) = y_pos_axle_rear - (x_pos_axle_leg_rear - x_offset_fixing_brake_arm_to_lead_plate) / tan(angle_brake_rod); // (X_POS_AXLE_LEG_REAR - X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE) \ No newline at end of file diff --git a/models/brake/fixing_brake_arm_to_rear_axle_leg.scad b/models/brake/fixing_brake_arm_to_rear_axle_leg.scad index 365541a..e78757b 100644 --- a/models/brake/fixing_brake_arm_to_rear_axle_leg.scad +++ b/models/brake/fixing_brake_arm_to_rear_axle_leg.scad @@ -9,7 +9,7 @@ module fixing_brake_arm_to_rear_axle_leg() { count_washers_each_end = 3; h_nut = get_metric_bolt_head_height(SIZE_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG); L_bolt = D_AXLE_REAR + 2 * (T_WASHER_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG * count_washers_each_end + h_nut) + L_BOLT_EXTENSION; - rotate([0, 0, ANGLE_BRAKE_ROD_MAX]) for (index_side_z = [0 : 1 : 1]) { + rotate([0, 0, -ANGLE_BRAKE_ROD_MAX]) for (index_side_z = [0 : 1 : 1]) { mirror([0, 0, index_side_z]) translate([0, 0, R_BRAKE_ARM[2] / 2]) { // axle washer translate([0, 0, 0]) washer(T_WASHER_AXLE_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG, D_WASHER_AXLE_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG, D_AXLE_REAR, centre = false); diff --git a/output/Brake Assembly Worm's Eye View.png b/output/Brake Assembly Worm's Eye View.png new file mode 100644 index 0000000..fdfe959 Binary files /dev/null and b/output/Brake Assembly Worm's Eye View.png differ diff --git a/output/Dog Cart Above Shot.png b/output/Dog Cart Above Shot.png new file mode 100644 index 0000000..715cf21 Binary files /dev/null and b/output/Dog Cart Above Shot.png differ diff --git a/output/Dog Cart Worm's Eye View.png b/output/Dog Cart Worm's Eye View.png new file mode 100644 index 0000000..100077a Binary files /dev/null and b/output/Dog Cart Worm's Eye View.png differ