Files
dog_towing_cart/config.scad

157 lines
8.0 KiB
OpenSCAD

use <./models/common/metric_bolt_functions.scad>;
use <./models/brake/brake_assembly_functions.scad>;
use <./models/fixings/tube_clamp_round_tee_long_104_functions.scad>;
use <./models/fixings/tube_clamp_round_3_way_through_116_functions.scad>;
use <./models/fixings/tube_clamp_round_base_plate_132_functions.scad>;
use <./models/fixings/tube_clamp_square_base_plate_132_functions.scad>;
// Configuration
R_BED = [400, 1200, 18];
T_WHEEL = 100;
D_WHEEL = 400;
D_WHEEL_BORE = 25;
T_PLATE = 8;
T_CLAMP = 20;
// D_AXIS = 25;
D_AXLE_FRONT = 42;
D_AXLE_REAR = 27;
Y_POS_AXLE_FRONT = R_BED[1] / 2 - D_WHEEL / 2;
Y_POS_AXLE_REAR = -R_BED[1] / 2 + D_WHEEL / 2;
X_POS_WHEEL_CENTRE = R_BED[0] / 2 + T_WHEEL / 2;
SPACING_XY_BED_BORDER = 10;
Z_OVERLAP_TEE_CLAMP_ROUND = 80;
Z_OFFSET_WHEEL_TO_BED_BASE = 5;
Z_OFFSET_BED_TO_AXLE = D_WHEEL / 2 + Z_OFFSET_WHEEL_TO_BED_BASE;
M_TOTAL = 160;
L_BOLT_EXTENSION = 10;
SIZE_BOLT = 25; // M25
SIZE_BOLT_REAR_WHEEL_POSITIONING = 10;
T_WASHER_BOLT_REAR_WHEEL_POSITIONING = 1.5;
D_WASHER_BOLT_REAR_WHEEL_POSITIONING = 30; // get_metric_bolt_washer_diameter_safe_working_clearance(SIZE_BOLT_REAR_WHEEL_POSITIONING);
T_WASHER_AXLE_REAR_WHEEL_POSITIONING = 4;
D_WASHER_AXLE_REAR_WHEEL_POSITIONING = 50;
SPACING_WASHER_AXLE_REAR_WHEEL_POSITIONING = 1;
R_FIXING_AXLE_LEG_REAR_TO_BED = get_R_plate_round_base_plate_132(D_AXLE_REAR);
L_SHAFT_AXLE_FIXING_AXLE_REAR_TO_LEG = get_L_shaft_long_round_tee_long_104(D_AXLE_REAR);
X_POS_AXLE_LEG_REAR = min(X_POS_WHEEL_CENTRE - T_WHEEL / 2 - SPACING_WASHER_AXLE_REAR_WHEEL_POSITIONING - T_WASHER_AXLE_REAR_WHEEL_POSITIONING - D_WASHER_BOLT_REAR_WHEEL_POSITIONING - L_SHAFT_AXLE_FIXING_AXLE_REAR_TO_LEG / 2, R_BED[0] / 2 - SPACING_XY_BED_BORDER - R_FIXING_AXLE_LEG_REAR_TO_BED[0] / 2);
// BRAKE
// THICKNESS_SHELL_BRAKE_BEAM = 5;
// L_BEAM_BRAKE_BELT_TENSION_FIXING = 150;
D_BEAM_BRAKE = 40;
T_BEAM_BRAKE = 3;
D_BRAKE_BALLSCREW_AXLE = 16; // M16 pitch 1.5
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 = 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;
R_LEAD_FIXING_BRAKE_BALLSCREW_TO_BRAKE_ARMS = [100, 10, D_BEAM_BRAKE];
X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE = D_BEAM_BRAKE;
ANGLE_BRAKE_ROD_MIN = 50; // angle between ballscrew axle and brake rod radius about pivot
ANGLE_BRAKE_ROD_MAX = 60; // atan((X_POS_AXLE_LEG_REAR - X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE) / Y_OFFSET_LEAD_FIXING_TO_AXLE_REAR_MIN);
SIZE_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 6; // M6
L_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 20; // 20-25mm
D_WASHER_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 25; // get_metric_bolt_washer_diameter_safe_working_clearance(SIZE_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD);
T_WASHER_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 1.5;
R_BRAKE_PAD = [10, 75, 10];
T_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 4.8;
W_FIXING_BRAKE_ARM_TO_BRAKE_PAD = 25.4;
R_BRAKE_ARM = [240, 75, 5]; // (X_POS_WHEEL_CENTRE - T_WHEEL / 2 - R_BRAKE_PAD[0] - T_WASHER_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD - X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE + tan(90 - ANGLE_BRAKE_ROD_MAX) * 75 / 2) / sin(ANGLE_BRAKE_ROD_MAX) // TOO SHORT?
L_FIXING_BRAKE_ARM_TO_BRAKE_PAD = D_WASHER_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD * 3; // R_BRAKE_PAD[1];
L_BRAKE_ARM_TOTAL = R_BRAKE_ARM[0] + R_BRAKE_PAD[0] + L_BOLT_FIXING_BRAKE_ARM_TO_BRAKE_PAD;
// Y_OFFSET_LEAD_FIXING_TO_AXLE_REAR_MIN = 50;
X_OFFSET_FIXING_BRAKE_ARM_TO_BRAKE_PAD_FROM_END = R_BRAKE_ARM[1] / 2 * tan(ANGLE_BRAKE_ROD_MAX);
// X_OFFSET_HOLE_AXLE_FROM_BRAKE_ARM_END_INNER = (X_POS_AXLE_LEG_REAR - X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE) / tan(ANGLE_BRAKE_ROD_MAX);
DELTA_L_SPRING_BALLSCREW_MAX = get_y_pos_lead_fixing_ballscrew_to_brake_arms(ANGLE_BRAKE_ROD_MIN, Y_POS_AXLE_REAR, X_POS_AXLE_LEG_REAR, X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE) - get_y_pos_lead_fixing_ballscrew_to_brake_arms(ANGLE_BRAKE_ROD_MAX, Y_POS_AXLE_REAR, X_POS_AXLE_LEG_REAR, X_OFFSET_FIXING_BRAKE_ARM_TO_LEAD_PLATE);
SIZE_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG = 10;
D_WASHER_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG = 30; // get_metric_bolt_washer_diameter_safe_working_clearance(SIZE_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG);
T_WASHER_BOLT_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG = 1.5;
D_WASHER_AXLE_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG = 50;
T_WASHER_AXLE_FIXING_BRAKE_ARM_TO_REAR_AXLE_LEG = 4;
// ANGLE_INCLINE_TILLER = 20; // [-20:5:135]
ANGLE_INCLINE_TILLER_MAX = 101;
L_TILLER = R_BED[1] / 2 - Y_POS_AXLE_FRONT + D_AXLE_FRONT / 2 + Z_OFFSET_BED_TO_AXLE * tan(ANGLE_INCLINE_TILLER_MAX - 90);
// T_WASHER_UNIVERSAL_JOINT = 2; // Deprecated
L_TILLER_EXTENSION = 1000;
L_JOINT_TILLER_EXTENSION = 85;
SIZE_BOLT_JOINT_TILLER_EXTENSION = SIZE_BOLT_REAR_WHEEL_POSITIONING; // 6;
D_WASHER_TILLER_JOINT = D_WASHER_BOLT_REAR_WHEEL_POSITIONING; // 25;
T_WASHER_TILLER_JOINT = T_WASHER_BOLT_REAR_WHEEL_POSITIONING; // 3;
OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL = SIZE_BOLT_JOINT_TILLER_EXTENSION * 3 / 2;
D_HANDLE_BAR = 27;
W_HANDLE_BAR = 300;
SIZE_BOLT_FRONT_AXLE_BEARING = 20;
DEPTH_BOLT_FRONT_AXLE_BEARING = get_metric_bolt_head_height(SIZE_BOLT_FRONT_AXLE_BEARING);
T_JOINT_FRONT_AXLE_TO_TILLER = get_thickness_round_3_way_through_116(D_AXLE_FRONT);
T_WASHER_JOINT_FRONT_AXLE_TO_TILLER = 3;
D_WASHER_JOINT_FRONT_AXLE_TO_TILLER = 39; // get_metric_bolt_washer_diameter_safe_working_clearance(SIZE_BOLT_FRONT_AXLE_BEARING);
COUNT_WASHERS_JOINT_FRONT_AXLE_TO_TILLER = 3;
L_BOLT_FRONT_AXLE_BEARING = T_JOINT_FRONT_AXLE_TO_TILLER + 2 * DEPTH_BOLT_FRONT_AXLE_BEARING + D_AXLE_FRONT + COUNT_WASHERS_JOINT_FRONT_AXLE_TO_TILLER * T_WASHER_JOINT_FRONT_AXLE_TO_TILLER;
T_WASHER_BASE_PLATE = T_WASHER_BOLT_REAR_WHEEL_POSITIONING;
D_WASHER_BASE_PLATE = D_WASHER_BOLT_REAR_WHEEL_POSITIONING;
L_SHAFT_TOP_CRATE = 333;
D_SHAFT_TOP_CRATE = 16;
D_WASHER_SHAFT_TOP_CRATE = 50; // get_metric_bolt_washer_diameter_safe_working_clearance(D_SHAFT_TOP_CRATE);
T_WASHER_SHAFT_TOP_CRATE = 3;
COUNT_SHAFTS_TOP_CRATE_X = 2;
COUNT_SHAFTS_TOP_CRATE_Y = 3;
COUNT_WASHERS_SHAFT_TOP_CRATE_EACH_END = 3;
// Constants
SAFETY_FACTOR = 2;
PI = 3.1415926536;
G = 9.81;
COLOUR_ROD_THREADED = "Gray";
COLOUR_BEAM_ALUMINIUM = "DarkGray";
COLOUR_FILAMENT_3D_PRINTER = "HotPink";
// Engineering analysis
W_TOTAL_SAFE = M_TOTAL * G * SAFETY_FACTOR;
SHEAR_STRESS_YIELD_STAINLESS_STEEL = 200 * 10 ^ 6;
SHEAR_STRESS_YIELD_ALUMINIUM = 200 * 10 ^ 6;
/*
T_BOLT_MAX = PI * (D_AXLE_FRONT / 1000) ^ 3 / 16 * SHEAR_STRESS_YIELD_ALUMINIUM;
T_BOLT_ACTUAL = W_TOTAL_SAFE * (3 * T_BEAM / 1000);
*/
T_FRONT_WHEEL_AXIS_CENTRE_Y = W_TOTAL_SAFE * (R_BED[1] / 2 + T_WHEEL / 2) / 1000;
T_FRONT_WHEEL_AXIS_X = W_TOTAL_SAFE * (D_WHEEL / 2) / 1000;
F_FRONT_WHEEL_AXIS_INTERSECTION_Z_MAX = SHEAR_STRESS_YIELD_ALUMINIUM * PI * (SIZE_BOLT / 1000) ^ 3 / 32 / ((R_BED[0] + T_WHEEL) / 1000);
T_REAR_WHEEL_AXIS_Y_MAX = PI * (D_AXLE_REAR / 1000) ^ 3 / 16 * SHEAR_STRESS_YIELD_ALUMINIUM;
// T_REAR_WHEEL_AXIS_Y_ACTUAL = W_TOTAL_SAFE * (T_WHEEL / 2 + SPACING_XY_BED_BORDER + R_FIXING_ROUND[0] / 2) / 1000;
/* output
// echo("L_TILLER: ", L_TILLER, "mm");
echo("load safe max: ", W_TOTAL_SAFE, "N");
echo("T_front_wheel_axis_centre_y: ", T_FRONT_WHEEL_AXIS_CENTRE_Y, "Nm");
echo("T_front_wheel_axis_x: ", T_FRONT_WHEEL_AXIS_X, "Nm - fully dispersed by wheel");
echo("F_front_wheel_axis_intersection_z_max: ", F_FRONT_WHEEL_AXIS_INTERSECTION_Z_MAX, "N");
echo("T_rear_wheel_axis_y_max: ", T_REAR_WHEEL_AXIS_Y_MAX, "Nm");
echo("T_rear_wheel_axis_y_actual: ", T_REAR_WHEEL_AXIS_Y_ACTUAL, "Nm");
*/