From 6bebd08c185bed927cf6d92a2aa67174bed53ba9 Mon Sep 17 00:00:00 2001 From: Jan Huwald Date: Fri, 3 Jul 2015 12:15:26 +0200 Subject: add suspension for powered wheel diff --git a/lasttretrad.scad b/lasttretrad.scad index 58e802e..55ef4a8 100644 --- a/lasttretrad.scad +++ b/lasttretrad.scad @@ -8,9 +8,11 @@ ltr_height = 160; bed_height = 18; +// the universal standard board used during prototype construction +board_width=25; +board_height=120; + module frame() { - board_width=25; - board_height=120; bessel=sqrt(3/2) -1; // translate([-l/2, -w/2, 0]) @@ -41,7 +43,9 @@ module cargo_bed() { // specify (f)ront/(c)enter/(b)ack as -1/0/1 and (l)eft/(r)ight as -1/1 module wheel_position(fcb, lr) { - translate([1250 * fcb, 370 * lr, 0]) + translate([1250 * fcb, + (fcb == 0) ? (340 * lr) : (370 * lr), + 0]) children(); } @@ -55,9 +59,29 @@ module steered_wheel(fb=-1, lr=-1, rot=0, suspension_depth=0) { // specify (l)eft/(r)ight as -1/1 module powered_wheel(lr=-1, suspension_depth=0) { - translate([0, 0, wheel_offset(suspension_depth)]) - rotate([90]) - wheel(); + axis_distance = 500; + board_length = axis_distance + board_height; + default_suspension_depth = 0; // used to calculate anchor point + axis_offset = board_height/2 + bed_height; // distance from upper axis to cargo floor + + rot = asin((250 - suspension_depth ) / axis_distance); + default_rot = asin((250 - default_suspension_depth - axis_offset) / axis_distance); + + translate([-axis_distance * cos(default_rot), 0, -axis_offset]) + rotate([0, rot, 0]) { + translate([axis_distance, 0, 0]) + rotate([90]) + wheel(); + + for (i = [-1,1]) + translate([0, i*40 - lr*5, 0]) + // board with rounded edges + hull() + for (i = [0, 1]) + translate([i * axis_distance, 0, 0]) + rotate([90, 0, 0]) + cylinder(r=board_height/2, h=board_width, center=true); + } } module lasttretrad(rot=0, suspension_depth=0) { -- cgit v0.10.1