Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created December 21, 2020 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ednisley/cb650c5cdb3215c63fd2ba0bb3def8d3 to your computer and use it in GitHub Desktop.
Save ednisley/cb650c5cdb3215c63fd2ba0bb3def8d3 to your computer and use it in GitHub Desktop.
OpenSCAD source code: MTD Snowthrower throttle knob
// MTD Snowthrower Throttle Knob
// Ed Nisley KE4ZNU 2020-12-18
/* [Options] */
Layout = "Show"; // [Build, Show]
// Extrusion parameters
/* [Hidden] */
ThreadThick = 0.25;
ThreadWidth = 0.40;
HoleWindage = 0.2;
Protrusion = 0.1; // make holes end cleanly
inch = 25.4;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
//----------------------
// Dimensions
Throttle = [17.0,1.85,6.5]; // blade insertion, thickness, width
PaddleSize = [25,30,9];
PaddleRound = 4.0;
PaddleThick = 8.5;
StemDia = 13.0;
StemLength = 20.0;
PinDia = 1.6;
PinLength = PaddleSize.x + StemLength/2;
echo(str("Pin: ",PinLength," x ",PinDia," mm"));
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,
h=Height,
$fn=Sides);
}
//----------------------
// Pieces
module Paddle() {
difference() {
hull() {
translate([PaddleSize.x/2,0,0]) {
for (i=[-1,1], j=[-1,1])
translate([i*(PaddleSize.x - PaddleRound)/2,j*(PaddleSize.y - PaddleRound)/2,0])
sphere(d=PaddleRound,$fn=12);
rotate([0,90,0]) rotate(180/12)
cylinder(d=PaddleThick,h=PaddleSize.x,,center=true,$fn=12);
}
translate([-StemLength,0,0])
rotate([0,90,0]) rotate(180/12)
cylinder(d=StemDia,h=Throttle.x,center=false,$fn=12);
}
translate([-StemLength,0,0])
cube([2*Throttle.x,Throttle.y,Throttle.z],center=true);
translate([-(StemLength + Protrusion),0,0])
rotate([0,90,0]) rotate(0*180/6)
PolyCyl(2*Throttle.y,Throttle.x,6);
for (j=[-1,1])
translate([-StemLength/2,j*PaddleSize.y/6,0])
rotate([0,90,0]) rotate(180/4)
PolyCyl(PinDia,PinLength,4);
}
}
//----------------------
// Build it
if (Layout == "Show")
Paddle();
if (Layout == "Build") {
translate([0,0,StemLength])
rotate([0,-90,0])
Paddle();
}
@ednisley
Copy link
Author

More details on my blog at https://wp.me/poZKh-9FU

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment