From 012a888b853a4a947e95e67e010ca1d9530a870d Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sat, 6 Sep 2025 07:53:11 +0100 Subject: [PATCH] Greatly improved pedal; both secondary chain sprockets in place. --- README.md | 10 +++++----- model/chainset.scad | 23 +++++++++++++++-------- model/pedal.scad | 30 +++++++++++++++++++++++------- model/subframe.scad | 18 ++++++++++++------ 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 8a182a8..b471bbd 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,9 @@ Design of a highly experimental recumbent tricycle, not software at all. Still at a very preliminary, pre-prototype stage. Work is documented [here](https://www.journeyman.cc/blog/tags-output/Tricycle/). -## Copyright +## Dependencies -Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creative Commons Attribution-Share Alike](https://creativecommons.org/licenses/by-sa/4.0/deed.en) licence. - -#### Parts of the following libraries are incorporated into this model +The following libraries are used into this model. They should be downloaded and installed into your [OpenSCAD library directory](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries), which on Linux systems is usually `$HOME/.local/share/OpenSCAD/libraries`. | Library | Referenced as | Author | Licence | | ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -24,4 +22,6 @@ Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creat - but (currently) uses elements from's [BentSim](https://github.com/PRouzeau/BentSim) project, which is [GPL](https://github.com/PRouzeau/BentSim/blob/master/LICENSE) licensed, and sprockets from s, which is licensed under . \ No newline at end of file +## Copyright + +Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creative Commons Attribution-Share Alike](https://creativecommons.org/licenses/by-sa/4.0/deed.en) licence. diff --git a/model/chainset.scad b/model/chainset.scad index d04c620..6719eec 100644 --- a/model/chainset.scad +++ b/model/chainset.scad @@ -3,17 +3,16 @@ // (c) Simon Brooke 2025; CC-BY-SA // Derived from Hampus Andersson's Sprocket Generator - include include include -function sprocket_radius(teeth=52, roller=7.9, pitch=12.7) = let(roller_radius = roller/2, - radius = pitch/(2*sin(180/teeth))) - sqrt((radius*radius) - (pitch*(roller_radius+tolerance))+((roller_radius+tolerance)*(roller_radius+tolerance))); +function sprocket_radius(teeth=52, roller=7.9, pitch=12.7) = + let(roller_radius = roller/2, + radius = pitch/(2*sin(180/teeth))) + sqrt((radius*radius) - (pitch*(roller_radius+tolerance))+((roller_radius+tolerance)*(roller_radius+tolerance))); - module chainring( teeth=52, roller=7.9, pitch=12.7) { radius = sprocket_radius(teeth=teeth, roller=roller, pitch=pitch); @@ -36,6 +35,14 @@ module spider(radius, arms) { } +/** + * parameterised chainset with, currently, only one chainring; and, + * currently, derailleur-sized chain. Parameters are: + * `teeth`: the number of teeth, obviously; + * `arms`: the number of arms on the spider; + * `crank`: the length of the crank, in millimetres; + * `bbshell`: the width of the bottom bracket shell, in millimetres. + */ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { radius = sprocket_radius(teeth=teeth); @@ -54,9 +61,9 @@ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { prismoid(size1=[10, 25], size2=[7, 18], h=crank +20); // pedals - translate([0-crank, 0, 20 + bbshell]) + translate([0-crank, 0, 8+bbshell]) pedal(); - translate([crank, 0, 0-4]) + translate([crank, 0, 0-2]) mirror([0, 0, 1]) pedal(); @@ -73,4 +80,4 @@ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { // chainring(); // spider(90, 1); -chainset(teeth=82, crank=140); \ No newline at end of file +// chainset(teeth=82, crank=140); \ No newline at end of file diff --git a/model/pedal.scad b/model/pedal.scad index c0d0902..8c4d861 100644 --- a/model/pedal.scad +++ b/model/pedal.scad @@ -2,15 +2,31 @@ // (c) Simon Brooke 2025; CC-BY-SA +include module pedal(){ - rotate([0, 270, 0]) - scale([.6, .6, .6]) - translate([-50, -160, 0]) - linear_extrude(height = 10, center = true) - // color("black") - import("library/look-keo.svg"); - cylinder(h=80, r=6); + color("black") + intersection() { + rotate([0, 270, 0]) + scale([.45, .45, .45]) + translate([-20, -160, 0]) + linear_extrude(height = 40, center = true) + import("library/look-keo.svg"); + + rotate([0, 90, 90]) + translate([-50, 0, -43]) + prismoid(size1=[60, 25], size2=[60, 5], height=90); + } + + // axle + color("black") + cylinder(h=80, r=7.1); + translate([0, 0, 8]) + color("black") + cylinder(h=3, r=9); + translate([0, 0, 12]) + color("black") + cylinder(h=12, r1=10, r2=9); } // pedal(); \ No newline at end of file diff --git a/model/subframe.scad b/model/subframe.scad index 3e2fd2a..796cd43 100644 --- a/model/subframe.scad +++ b/model/subframe.scad @@ -12,31 +12,31 @@ include module subframe () { // front leg (supports cross-shaft, epicyclic, motor translate([-25, 1820, -550]) - color("grey") + color("silver") cube([50, 25, 230]); // bottom bracket leg translate([-25, 1690, -578]) - color("grey") + color("silver") cube([50, 25, 310]); // wheel leg translate([-70, 1430, -593]) rotate([0, 5, 0]) - color("grey") + color("silver") cube([25, 75, 363]); // front upper translate([-25, 2000, -385]) rotate([70, 0, 0]) - color("grey") + color("silver") cube([50, 25, 330]); // central upper translate([-25, 1700, -275]) rotate([82, 0, 0]) - color("grey") + color("silver") cube([50, 25, 370]); // rear leg translate([-25, 1200, -515]) rotate([-23, 0, 0]) - color("grey") + color("silver") cube([50, 25, 344]); // wheel @@ -46,6 +46,12 @@ module subframe () { scale([0.70, 0.70, 0.70]) wheel(rim=451, spoke_nbr=0); + translate([-30, 1467.5, -450]) + rotate([0, 90, 0]) + color("grey") + sprocket(teeth=30, roller=7.9, pitch=12.7); + + rotate([90, 0, 90]) translate([1680, -410, -40]) chainset( teeth=82, crank=140);