diff --git a/model/epicyclic.scad b/model/epicyclic.scad index 32340e2..8b32c35 100644 --- a/model/epicyclic.scad +++ b/model/epicyclic.scad @@ -6,6 +6,22 @@ include +// based on this motor here, which is affordable and has a ratchet: +// https://www.amazon.co.uk/L-faster-Solution-Sprocket-Brushless-Bicycle/dp/B0DCJXV53J/ref=sr_1_275?dib=eyJ2IjoiMSJ9.yUQgRnT20RtAyVb3Decqam4igr7b-1ZoqiviQunNV5DUW73JKvlMfEIZgM3tt3iVQEIV1sDAZ-ZpMznFrqKJoeIGMNBcdyoG_M1vll2XL0GSe87XzbNFjGDpbjE_er-29ncEjr1VioaOmFmC11qAdpYkyhK9n7FrmW3yGSal16k.vMbZrXAMFNJMrFCIivuP6dMH7HyGRdm1qb5VDsBz8eM&dib_tag=se&marketplaceID=A1F83G8C2ARO7P&qid=1757944297&s=merchant-items&sr=1-275&xpid=993o6gj7HOOMv&th=1&psc=1 +module motor () { + translate([0,0, 35]) + color( "silver") + cylinder(h=75, r=50); + + translate([0,40, 5]) + color( "silver") + cylinder(h=32, r=42); + + translate([0,40,0]) + color( "grey") + sprocket( teeth=16, roller=7.9, pitch=12.7); +} + module epicyclic (olnd=135, disc=1) { body_width=116; @@ -37,10 +53,16 @@ module epicyclic (olnd=135, disc=1) { color("grey") sprocket(teeth=20, roller=7.9, pitch=12.7); + // secondary chain sprocket translate([0, 0, 0 - ((body_width/2) - spoke_flange_width)]) color("grey") sprocket(teeth=30, roller=7.9, pitch=12.7); + // motor chain driven sprocket + translate([0, 0, 0 - ((body_width/2) - (spoke_flange_width + 10))]) + color("grey") + sprocket(teeth=30, roller=7.9, pitch=12.7); + // disc brake, if present. TODO: details of disc spider if (disc==1) { translate([0, 0, (olnd/2) - 7]) @@ -50,4 +72,7 @@ module epicyclic (olnd=135, disc=1) { } // rotate([90, 0, 0]) -// epicyclic(); \ No newline at end of file +// epicyclic(); + +// rotate([90, 0, 0]) +// motor(); \ No newline at end of file diff --git a/model/library/hull-volume-of-rotation.svg b/model/library/hull-volume-of-rotation.svg new file mode 100644 index 0000000..b147a37 --- /dev/null +++ b/model/library/hull-volume-of-rotation.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + diff --git a/model/subframe.scad b/model/subframe.scad index 1a79ee0..4972f4b 100644 --- a/model/subframe.scad +++ b/model/subframe.scad @@ -23,28 +23,33 @@ module subframe_cycleparts(rim=451, chainring_teeth=82, crank=140) { rotate([90, 0, 90]) translate([660, 180, -40]) chainset( teeth=chainring_teeth, crank=crank); - + rotate([0,90,0]) - translate([-93, 900, 24]) - epicyclic(); + translate([-60, 900, 24]) + epicyclic(); + + rotate([0,90,0]) + translate([-190, 900, -22]) + motor(); + } module aluminium_subframe (rim=451, chainring_teeth=82, crank=140) { // front leg (supports cross-shaft, epicyclic, motor - translate([-25, 820, -60]) + translate([-25, 820, -50]) color("silver") - cube([50, 25, 366]); + cube([50, 25, 356]); // bottom bracket leg - translate([-25, 680, -90]) + translate([-25, 680, -50]) color("silver") - cube([50, 25, 443]); + cube([50, 25, 413]); // wheel leg - translate([-100, 345, -111]) + translate([-100, 345, -50]) rotate([0, 7, 0]) color("silver") - cube([25, 75, 519]); + cube([25, 75, 458]); // front upper translate([-25, 1100, 200]) rotate([70, 0, 0]) @@ -56,30 +61,70 @@ module aluminium_subframe (rim=451, chainring_teeth=82, crank=140) { color("silver") cube([50, 25, 529]); // rear leg - translate([-25, 0, 0]) - rotate([-23, 0, 0]) + translate([-25, 0, -50]) + rotate([-20, 0, 0]) color("silver") - cube([50, 25, 485]); - + cube([50, 25, 525]); + + // boltdown flange + color("grey") + translate([0, 0, -50]) + linear_extrude(height=2.5) + polygon([[-50, 0], [-100, 345], + [-100, 415], [-50, 700], + [-50, 850], [50, 850], + [50, 625], [-40, 625], + [-40, 150], [50, 150], + [50, 1070], [50, 0]]); + subframe_cycleparts(rim, chainring_teeth, crank); } /** - * this is more or less right. I need to sculpt out a depression for - * the secondary chain, and make a bracket to hold the epicyclic and - * motor. + * this is more or less right. The corners of the epicyclic/motor + * bracket should be rounded, and there should be fillets along + * every concave join between carbon parts */ module carbon_subframe(rim=451, chainring_teeth=82, crank=140) { translate([-25, 0, 0]) - color("black") + color("black", 0.9) difference() { rotate([90, 0, 90]) linear_extrude( height=50) - polygon([[1020, 306], [680, 400], [150,408], [50, 0], [1020, 0]]); + polygon([[1020, 306], [680, 400], [150,408], [0, -50], [1020, -50]]); translate([-26, 382, 93]) rotate([90,0,90]) cylinder( h=100, r=rim * 0.61); + translate([-26, 825, 25]) + cube([150, 150, 200]); + translate([-26, 625, 25]) + cube([10, 200, 150]); } + // wheel leg + translate([-94, 345, -50]) + rotate([0, 7, 0]) + color("black") + cube([25, 75, 458]); + + // epicyclic support + color("black") + translate([-47, 890, 25]) + difference() { + cube([140, 100, 200]); + translate([2.5, -2.5, -2.5]) + cube([135, 100, 205]); + } + + // boltdown flange + color("black") + translate([0, 0, -50]) + linear_extrude(height=2.5) + polygon([[-50, 0], [-100, 345], + [-100, 415], [-50, 700], + [-50, 850], [50, 850], + [50, 650], [-40, 650], + [-40, 150], [50, 150], + [50, 1070], [50, 0]]); subframe_cycleparts(rim, chainring_teeth, crank); } @@ -92,5 +137,5 @@ module subframe( structure="carbon", rim=451, chainring_teeth=82, crank=140) { } } -// subframe( structure="carbon"); +// subframe( structure="aluminium"); diff --git a/model/tricycle.scad b/model/tricycle.scad index fc5aa83..d7ca0cc 100644 --- a/model/tricycle.scad +++ b/model/tricycle.scad @@ -10,7 +10,7 @@ include rotate([0, 0, 270]) translate([0, 1200, 180]) -subframe(); +subframe(structure="carbon"); translate([0,-50, 320]) fourbar(700, 100, 30, 35, 650);