Initial commit for new branch with reversed brake arm direction on y-axis so that mechanical shocks at the wheel cause brakes to ease off, rather than jolting onto application.

This commit is contained in:
2025-02-25 15:49:37 +00:00
parent 659001351e
commit cd60aff3e5
10 changed files with 18 additions and 9 deletions

View File

@@ -1,2 +1,11 @@
# dog_towing_cart # dog_towing_cart
Dog Towing Cart 3D design 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)

View File

@@ -47,14 +47,14 @@ X_POS_AXLE_LEG_REAR = min(X_POS_WHEEL_CENTRE - T_WHEEL / 2 - SPACING_WASHER_AXLE
D_BEAM_BRAKE = 40; D_BEAM_BRAKE = 40;
T_BEAM_BRAKE = 5; T_BEAM_BRAKE = 5;
D_BRAKE_BALLSCREW_AXLE = 16; // M16 pitch 1.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; D_BRAKE_BALLSCREW_POWER_WHEEL = 120;
T_BRAKE_BALLSCREW_POWER_WHEEL = get_metric_bolt_head_height(D_BRAKE_BALLSCREW_AXLE); 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); 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; T_WASHER_BRAKE_BALLSCREW_POWER_WHEEL = 3;
Z_OFFSET_BALLSCREW_AXLE_TO_BED_BASE = 125; // D_BRAKE_BALLSCREW_POWER_WHEEL / 2 + 25; 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_REAR_FIXING_FROM_END = 75;
Y_OFFSET_BALLSCREW_LEG_FRONT_FIXING_FROM_END = Y_OFFSET_BALLSCREW_LEG_REAR_FIXING_FROM_END + 100; 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 // 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); 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; 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;

BIN
image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -7,7 +7,7 @@ module brake_arm() {
// body // body
cube(R_BRAKE_ARM, center = true); cube(R_BRAKE_ARM, center = true);
// chamfer across end face for wheel overlap // 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 // 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")); echo(str("Brake arm: Aluminium sheet ", R_BRAKE_ARM[1], "mm x ", R_BRAKE_ARM[0], "mm x ", R_BRAKE_ARM[2], "mm - x1"));

View File

@@ -38,13 +38,13 @@ module brake_assembly(angle_brake_rod) {
for (index_side_x = [0:1:1]) { for (index_side_x = [0:1:1]) {
mirror([index_side_x, 0, 0]) { 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 // brake arm
translate([R_BRAKE_ARM[0] / 2, 0, 0]) brake_arm(); translate([R_BRAKE_ARM[0] / 2, 0, 0]) brake_arm();
// fixing brake arm to brake pad // 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 // 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 // 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(); 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();

View File

@@ -1,3 +1,3 @@
// include <../../config.scad>; // circular reference! // 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) 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)

View File

@@ -9,7 +9,7 @@ module fixing_brake_arm_to_rear_axle_leg() {
count_washers_each_end = 3; count_washers_each_end = 3;
h_nut = get_metric_bolt_head_height(SIZE_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG); 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; 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]) { mirror([0, 0, index_side_z]) translate([0, 0, R_BRAKE_ARM[2] / 2]) {
// axle washer // 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); 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);

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB