Initial commit

This commit is contained in:
2025-02-25 12:13:03 +00:00
parent 3476f37b84
commit 659001351e
52 changed files with 1542 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
include <../../config.scad>;
use <../front_drive/front_leg_fixing.scad>;
use <../front_drive/tiller_assembly.scad>;
use <../rear_drive/rear_wheel_fastener.scad>;
use <../common/metric_bolt.scad>;
use <../common/washer.scad>;
use <../common/wheel.scad>;
module front_drive_assembly(angle_incline_tiller) {
echo("Front drive assembly:");
y_pos_axis = R_BED[1] / 2 - D_WHEEL / 2;
L_axle_long = R_BED[0] - T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 2;
L_axle_short = T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 2 + T_WHEEL + D_WASHER_BOLT_REAR_WHEEL_POSITIONING;
height_bolt_head = get_metric_bolt_head_height(SIZE_BOLT_REAR_WHEEL_POSITIONING);
L_bolt_axle_extension = D_AXLE_FRONT + 2 * (T_WASHER_BOLT_REAR_WHEEL_POSITIONING + height_bolt_head) + L_BOLT_EXTENSION;
offset_axle_extension_fastener_axial = 2 * SIZE_BOLT_REAR_WHEEL_POSITIONING;
L_bolt_wheel_positioning = D_AXLE_REAR + 2 * (T_WASHER_BOLT_REAR_WHEEL_POSITIONING + height_bolt_head) + L_BOLT_EXTENSION;
translate([0, y_pos_axis, -R_BED[2] / 2]) union() {
// leg fixing
front_leg_fixing();
// left-right symmetry
translate([0, 0, -Z_OFFSET_BED_TO_AXLE]) for (index_side = [0:1:1]) {
mirror([index_side, 0, 0]) {
// axle extensions
color(COLOUR_BEAM_ALUMINIUM) translate([L_axle_long / 2 + L_axle_short / 2, 0, 0]) rotate([0, 90, 0]) cylinder(L_axle_short, D_AXLE_REAR / 2, D_AXLE_REAR / 2, center = true);
// axle extension fixing bolt
translate([L_axle_long / 2 - offset_axle_extension_fastener_axial, 0, -L_BOLT_EXTENSION / 2]) metric_bolt(SIZE_BOLT_REAR_WHEEL_POSITIONING, L_bolt_axle_extension, true, L_BOLT_EXTENSION);
// axle extension fixing bolt washers
translate([L_axle_long / 2 - offset_axle_extension_fastener_axial, 0, 0]) for (index_side_z = [0 : 1 : 1]) {
mirror([0, 0, index_side_z]) {
translate([0, 0, D_AXLE_FRONT / 2 + T_WASHER_BOLT_REAR_WHEEL_POSITIONING / 2]) washer(T_WASHER_BOLT_REAR_WHEEL_POSITIONING, D_WASHER_BOLT_REAR_WHEEL_POSITIONING, SIZE_BOLT_REAR_WHEEL_POSITIONING);
}
}
// inner wheel axis washers
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING / 2, 0, 0]) rotate([0, 90, 0]) washer(T_WASHER_AXLE_REAR_WHEEL_POSITIONING, D_WASHER_AXLE_REAR_WHEEL_POSITIONING, D_AXLE_REAR);
// wheels
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING + T_WHEEL / 2, 0, 0]) wheel();
// outer wheel axis washers
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 3 / 2 + T_WHEEL, 0, 0]) rotate([0, 90, 0]) washer(T_WASHER_AXLE_REAR_WHEEL_POSITIONING, D_WASHER_AXLE_REAR_WHEEL_POSITIONING, D_AXLE_REAR);
/* replaced with rear_wheel_fastener below
// wheel positioning bolts
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 2 + T_WHEEL + D_WASHER_BOLT_REAR_WHEEL_POSITIONING / 2, 0, -L_BOLT_EXTENSION / 2]) metric_bolt(SIZE_BOLT_REAR_WHEEL_POSITIONING, L_bolt_wheel_positioning, true, L_BOLT_EXTENSION);
// wheel positioning bolt washers
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 2 + T_WHEEL + D_WASHER_BOLT_REAR_WHEEL_POSITIONING / 2, 0, 0]) for (index_side_z = [0 : 1 : 1]) {
mirror([0, 0, index_side_z]) {
translate([0, 0, D_AXLE_REAR / 2 + T_WASHER_BOLT_REAR_WHEEL_POSITIONING / 2]) washer(T_WASHER_BOLT_REAR_WHEEL_POSITIONING, D_WASHER_BOLT_REAR_WHEEL_POSITIONING, SIZE_BOLT_REAR_WHEEL_POSITIONING);
}
}
*/
translate([L_axle_long / 2 + T_WASHER_AXLE_REAR_WHEEL_POSITIONING * 2 + T_WHEEL + D_WASHER_BOLT_REAR_WHEEL_POSITIONING / 2, 0, 0]) rear_wheel_fastener();
}
}
// axle
color(COLOUR_BEAM_ALUMINIUM) translate([0, 0, -Z_OFFSET_BED_TO_AXLE]) rotate([0, 90, 0]) cylinder(L_axle_long, D_AXLE_FRONT / 2, D_AXLE_FRONT / 2, center = true);
// tiller
translate([0, D_AXLE_FRONT / 2, -Z_OFFSET_BED_TO_AXLE]) tiller_assembly(angle_incline_tiller);
// joint axle to tiller
translate([0, 0, -Z_OFFSET_BED_TO_AXLE + L_BOLT_FRONT_AXLE_BEARING / 2 - D_AXLE_FRONT / 2 - T_JOINT_FRONT_AXLE_TO_TILLER - DEPTH_BOLT_FRONT_AXLE_BEARING - COUNT_WASHERS_JOINT_FRONT_AXLE_TO_TILLER * T_WASHER_JOINT_FRONT_AXLE_TO_TILLER]) mirror([0, 0, 1]) metric_bolt(SIZE_BOLT_FRONT_AXLE_BEARING, L_BOLT_FRONT_AXLE_BEARING, false);
// joint axle to tiller washers
for (index_washer = [0 : 1 : COUNT_WASHERS_JOINT_FRONT_AXLE_TO_TILLER - 1]) {
translate([0, 0, -Z_OFFSET_BED_TO_AXLE - D_AXLE_FRONT / 2 - T_JOINT_FRONT_AXLE_TO_TILLER - T_WASHER_JOINT_FRONT_AXLE_TO_TILLER * (index_washer + 1 / 2)]) washer(T_WASHER_JOINT_FRONT_AXLE_TO_TILLER, D_WASHER_JOINT_FRONT_AXLE_TO_TILLER, SIZE_BOLT_FRONT_AXLE_BEARING);
}
}
// Shopping
// front leg fixing
echo(str("Axle extension: Round Aluminium bar Φ", D_AXLE_REAR, "mm x ", L_axle_short, "mm - x2"));
// Axle extension fixing bolt
// echo(str("Axle extension fixing bolt washer: Washer Φ", D_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm x ", T_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm - x4")); // Axle extension fixing bolt washers
// echo(str("Wheel positioning washer: Washer Φ", D_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm x ", T_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm - x4")); // Wheel positioning washers
// wheels
// wheel positioning fastener
// echo(str("Wheel positioning bolt washer: Washer Φ", D_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm x ", T_WASHER_BOLT_REAR_WHEEL_POSITIONING, "mm - x4")); // Wheel positioning bolt washers
echo(str("Axle: Round Aluminium bar Φ", D_AXLE_FRONT, "mm x ", L_axle_long, "mm - x1"));
// tiller assembly
// front axis bearing bolt
// echo(str("Front axis bearing washers: Washer Φ", D_WASHER_JOINT_FRONT_AXLE_TO_TILLER, "mm x ", T_WASHER_JOINT_FRONT_AXLE_TO_TILLER, "mm - x", COUNT_WASHERS_JOINT_FRONT_AXLE_TO_TILLER)); // Front axis bearing washers
}
front_drive_assembly(20);

View File

@@ -0,0 +1,50 @@
include <../../config.scad>;
use <../fixings/tube_clamp_round_3_way_through_116.scad>;
use <../fixings/tube_clamp_round_base_plate_132.scad>;
use <../common/metric_bolt.scad>;
use <../common/washer.scad>;
module front_leg_fixing() {
echo("Front leg fixing assembly:");
R_base_plate = get_R_plate_round_base_plate_132(D_AXLE_FRONT);
h_leg = Z_OFFSET_BED_TO_AXLE - D_AXLE_FRONT / 2 - R_base_plate[2];
offset_y_hole_base_plate = get_offset_hole_y_round_base_plate_132(D_AXLE_FRONT);
size_hole_base_plate = get_diameter_hole_round_base_plate_132(D_AXLE_FRONT);
h_bolt_head = get_metric_bolt_head_height(size_hole_base_plate);
L_fastener = h_bolt_head * 2 + T_WASHER_BASE_PLATE * 2 + R_base_plate[2] + R_BED[2] + L_BOLT_EXTENSION;
difference() {
union() {
// bracket - top, under bed
// translate([0, 0, -R_fixing[2] / 2]) cylinder(R_fixing[2], R_fixing[0] / 2, R_fixing[0] / 2, center = true);
rotate([0, 180, 0]) tube_clamp_round_base_plate_132(D_AXLE_FRONT);
// bed bracket fastening bolt
for (index_side_y = [0 : 1 : 1]) {
mirror([0, index_side_y, 0]) {
// bracket at bed fastener
translate([0, offset_y_hole_base_plate, L_fastener / 2 - R_base_plate[2] - L_BOLT_EXTENSION - h_bolt_head - T_WASHER_BASE_PLATE]) metric_bolt(size_hole_base_plate, L_fastener, true, L_BOLT_EXTENSION);
translate([0, offset_y_hole_base_plate, h_bolt_head / 2 - T_WASHER_BASE_PLATE / 2]) for (index_side_z = [0 : 1 : 1]) {
mirror([0, 0, index_side_z]) {
// bracket fastener washers
translate([0, 0, L_fastener / 2 - L_BOLT_EXTENSION / 2 - h_bolt_head - T_WASHER_BASE_PLATE / 2]) washer(T_WASHER_BASE_PLATE, D_WASHER_BASE_PLATE, size_hole_base_plate);
}
}
}
}
// leg
color(COLOUR_BEAM_ALUMINIUM) translate([0, 0, -R_base_plate[2] - h_leg / 2]) cylinder(h_leg, D_AXLE_FRONT / 2, D_AXLE_FRONT / 2, center = true);
// bracket - bottom, against axle
translate([0, 0, -Z_OFFSET_BED_TO_AXLE]) rotate([0, 0, 0]) tube_clamp_round_3_way_through_116(D_AXLE_FRONT); // translate([0, 0, -R_fixing[2] * 3 / 2 - h_leg - T_PLATE * 2 - D_AXLE_FRONT + z_overlap_tee_clamp_round * 1]) cylinder(R_fixing[2], R_fixing[0] / 2, R_fixing[0] / 2, center = true);
}
// front axle bearing hole
translate([0, 0, -Z_OFFSET_BED_TO_AXLE + D_AXLE_FRONT / 2 + DEPTH_BOLT_FRONT_AXLE_BEARING - L_BOLT_FRONT_AXLE_BEARING]) cylinder(L_BOLT_FRONT_AXLE_BEARING, SIZE_BOLT_FRONT_AXLE_BEARING / 2, SIZE_BOLT_FRONT_AXLE_BEARING / 2, center = false);
}
// Shopping
// bed fixing
echo(str("Leg: Round Aluminium bar Φ", D_AXLE_FRONT, "mm x ", h_leg, "mm - x1"));
// Base plate fastening bolts and nuts
// echo(str("Base plate fastening washers: Washer Φ", D_WASHER_BASE_PLATE, "mm x ", T_WASHER_BASE_PLATE, "mm - x4")); // Base plate fastening washers
// axle fixing
echo(str("Tool: M", SIZE_BOLT_FRONT_AXLE_BEARING, " HSS tapping tool - x1"));
}
front_leg_fixing();

View File

@@ -0,0 +1,64 @@
include <../../config.scad>;
use <./tiller_joint.scad>;
use <../common/metric_bolt.scad>;
use <../fixings/tube_clamp_round_tee_long_104.scad>;
module tiller_assembly(angle_incline_tiller) {
echo("Tiller assembly:");
/*
t_universal_joint = get_universal_joint_thickness();
d_universal_joint = get_universal_joint_d();
d_hole_universal_joint = get_universal_joint_d_hole();
d_hole_bore_universal_joint = get_universal_joint_d_bore_hole();
L_universal_joint = get_universal_joint_length();
joint_axial_offset = get_universal_joint_joint_axial_offset();
pin_axial_offset = get_universal_joint_pin_axial_offset();
L_hole = t_universal_joint + d_hole_universal_joint / 2 + pin_axial_offset;
L_bolt_fastener = D_AXLE_FRONT + d_hole_universal_joint * 4 + T_WASHER_UNIVERSAL_JOINT;
echo("t_universal_joint", t_universal_joint, "mm");
echo("d_hole_universal_joint", d_hole_universal_joint, "mm");
echo("pin_axial_offset", pin_axial_offset, "mm");
echo("L_hole", t_universal_joint + d_hole_universal_joint / 2 + pin_axial_offset, "mm");
echo("L_universal_joint / 2 - joint_axial_offset - L_hole", L_universal_joint / 2 - joint_axial_offset - L_hole, "mm");
*/
union() {
// tiller
color(COLOUR_BEAM_ALUMINIUM) difference() {
// body
rotate([-90, 0, 0]) cylinder(L_TILLER, D_AXLE_FRONT / 2, D_AXLE_FRONT / 2, center = false);
// joint fastening hole normal
translate([L_TILLER - OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL, 0, 0]) cylinder(D_AXLE_FRONT, SIZE_BOLT_JOINT_TILLER_EXTENSION / 2, SIZE_BOLT_JOINT_TILLER_EXTENSION / 2, center = false);
}
/*
// universal joint
translate([L_TILLER - L_hole, 0, 0]) universal_joint();
// tiller universal joint fastening
translate([L_TILLER - L_hole / 2, 0, 0]) metric_bolt(d_hole_universal_joint, L_bolt_fastener);
*/
// tiller joint
translate([0, L_TILLER + L_JOINT_TILLER_EXTENSION / 2 - OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL * 2, 0]) tiller_joint();
// tiller extension
translate([0, L_TILLER + L_JOINT_TILLER_EXTENSION - OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL * 4, 0]) rotate([angle_incline_tiller, 0, 0]) {
color(COLOUR_BEAM_ALUMINIUM) difference() {
// body
rotate([-90, 0, 0]) cylinder(L_TILLER_EXTENSION, D_HANDLE_BAR / 2, D_HANDLE_BAR / 2, center = false);
// joint fastening hole normal
translate([0, OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL, 0]) cylinder(D_AXLE_FRONT, SIZE_BOLT_JOINT_TILLER_EXTENSION / 2, SIZE_BOLT_JOINT_TILLER_EXTENSION / 2, center = false);
}
// handle beam
color(COLOUR_BEAM_ALUMINIUM) translate([0, L_TILLER_EXTENSION + D_HANDLE_BAR / 2, 0]) rotate([0, 90, 0]) cylinder(W_HANDLE_BAR, D_HANDLE_BAR / 2, D_HANDLE_BAR / 2, center = true);
// handle fixing
translate([0, L_TILLER_EXTENSION + D_HANDLE_BAR / 2, 0]) rotate([90, 0, -90]) tube_clamp_round_tee_long_104(D_HANDLE_BAR);
}
}
// Shopping
echo(str("Tiller: Round Aluminium bar Φ", D_AXLE_FRONT, "mm x ", L_TILLER, "mm - x1"));
// Tiller extension joint
echo(str("Tiller extension: Round Aluminium bar Φ", D_HANDLE_BAR, "mm x ", L_TILLER_EXTENSION, "mm - x1"));
echo(str("Handle bar: Round Aluminium bar Φ", D_HANDLE_BAR, "mm x ", W_HANDLE_BAR, "mm - x1"));
// Handle fixing
}
// $fn = 100;
tiller_assembly(20);

View File

@@ -0,0 +1,50 @@
include <../../config.scad>;
use <../common/metric_bolt.scad>;
use <../common/washer.scad>;
module tiller_joint() {
echo("Tiller joint assembly:");
R_plate_tiller = [T_PLATE, L_JOINT_TILLER_EXTENSION, 3 * SIZE_BOLT_JOINT_TILLER_EXTENSION];
x_pos_plate = (D_AXLE_FRONT + R_plate_tiller[0]) / 2 + T_WASHER_TILLER_JOINT;
h_bolt_head = get_metric_bolt_head_height(SIZE_BOLT_JOINT_TILLER_EXTENSION);
L_bolt = D_AXLE_FRONT + 2 * (h_bolt_head + T_WASHER_TILLER_JOINT * 2 + R_plate_tiller[0]) + L_BOLT_EXTENSION;
y_pos_bolt = R_plate_tiller[1] / 2 - OFFSET_BOLT_JOINT_TILLER_EXTENSION_AXIAL;
x_pos_washer_internal = D_AXLE_FRONT / 2 + T_WASHER_TILLER_JOINT / 2;
x_pos_washer_external = L_bolt / 2 - L_BOLT_EXTENSION / 2 - h_bolt_head - T_WASHER_TILLER_JOINT / 2;
count_washers_each_side_front = 5;
union() {
for (index_side_x = [0 : 1 : 1]) {
mirror([index_side_x, 0, 0]) {
// plates
color(COLOUR_BEAM_ALUMINIUM) translate([x_pos_plate, 0, 0]) cube(R_plate_tiller, center = true);
for (index_side_y = [0 : 1 : 1]) {
mirror([0, index_side_y, 0]) {
// washers
// external
translate([x_pos_washer_external, y_pos_bolt, 0]) rotate([0, 90, 0]) washer(T_WASHER_TILLER_JOINT, D_WASHER_TILLER_JOINT, SIZE_BOLT_JOINT_TILLER_EXTENSION);
}
}
// rear internal washers
translate([x_pos_washer_internal, -y_pos_bolt, 0]) rotate([0, 90, 0]) washer(T_WASHER_TILLER_JOINT, D_WASHER_TILLER_JOINT, SIZE_BOLT_JOINT_TILLER_EXTENSION);
// front internal washers
for (index_washer_front = [0 : 1 : count_washers_each_side_front]) {
translate([x_pos_washer_internal - T_WASHER_TILLER_JOINT * index_washer_front, y_pos_bolt, 0]) rotate([0, 90, 0]) washer(T_WASHER_TILLER_JOINT, D_WASHER_TILLER_JOINT, SIZE_BOLT_JOINT_TILLER_EXTENSION);
}
}
}
for (index_side_y_only = [0 : 1 : 1]) {
mirror([0, index_side_y_only, 0]) {
// bolts
translate([-L_BOLT_EXTENSION / 2, y_pos_bolt, 0]) rotate([0, 90, 0]) metric_bolt(SIZE_BOLT_JOINT_TILLER_EXTENSION, L_bolt, true, L_BOLT_EXTENSION);
}
}
}
// Shopping
echo(str("Plate: Aluminium sheet ", R_plate_tiller[0], "mm x ", R_plate_tiller[1], "mm x ", R_plate_tiller[2], "mm - x2"));
// echo(str("Washer: Washer Φ", D_WASHER_TILLER_JOINT, "mm x ", T_WASHER_TILLER_JOINT, "mm - x8")); // Tiller joint washers
// Bolts
}
// output
tiller_joint();