// epicyclic.scad // an epicyclic gearbox, similar to a Rohloff or Shimano Nexus 11 // dimensions in millimetres, mostly from https://www.rohloff.de/en/service/handbook/speedhub/technical-data // (c) Simon Brooke 2025; CC-BY-SA 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; spoke_flange_width=3.2; // axle color("grey") cylinder(h=(olnd + 12), r=6, center=true); // locknuts, etc color("black") cylinder(h=olnd, r=15, center=true); // epicyclic body color("red") cylinder(h=body_width, r=46, center=true); // spoke flanges. TODO: yes, they need spoke holes. translate([0, 0, (body_width/2) - spoke_flange_width]) color("red") cylinder(h=spoke_flange_width, r=54); translate([0, 0, 0 - (body_width/2)]) color("red") cylinder(h=spoke_flange_width, r=54); // primary chain sprocket, obvs translate([0, 0, 3 - (olnd/2)]) 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]) color("silver") cylinder(h=1.5, r=75); } } // rotate([90, 0, 0]) // epicyclic(); // rotate([90, 0, 0]) // motor();