157 lines
8.0 KiB
OpenSCAD
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");
|
|
*/ |