Initial commit
This commit is contained in:
80
models/front_drive/front_drive_assembly.scad
Normal file
80
models/front_drive/front_drive_assembly.scad
Normal 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);
|
||||
50
models/front_drive/front_leg_fixing.scad
Normal file
50
models/front_drive/front_leg_fixing.scad
Normal 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();
|
||||
64
models/front_drive/tiller_assembly.scad
Normal file
64
models/front_drive/tiller_assembly.scad
Normal 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);
|
||||
50
models/front_drive/tiller_joint.scad
Normal file
50
models/front_drive/tiller_joint.scad
Normal 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();
|
||||
Reference in New Issue
Block a user