Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created May 16, 2025 21:02
Show Gist options
  • Save ednisley/09fecee6fcc0759d91abdc2e828ff679 to your computer and use it in GitHub Desktop.
Save ednisley/09fecee6fcc0759d91abdc2e828ff679 to your computer and use it in GitHub Desktop.
OpenSCAD source code: Motor shaft coupler for Cusinart stick blender
// Stick Blender drive coupler
// Ed Nisley - KE4ZNU
// 2025-05-16
include <BOSL2/std.scad>
Layout = "Show"; // [Show,Build,Splines]
/* [Hidden] */
HoleWindage = 0.2;
Protrusion = 0.1;
NumSides = 3*3*4;
ID = 0;
OD = 1;
LENGTH = 2;
ShellOA = [5.0,14.0,28.0]; // ID=motor shaft
MixerSocket = [6.6,0,17.2]; // passes rubber retainer
Retainer = [3.0,6.5,5.5]; // ID=mixer shaft,OD=rubber ring
RetainerRebate = [Retainer[ID],3.9,1.5]; // … fits under shaft lip
DriveSocket = [6.7,8.8,12.0]; // OD=notch OD
DriveNotch = [(DriveSocket[OD] - DriveSocket[ID])/2,1.5,DriveSocket[LENGTH]]; // … drive notch shape on +X
DriveChamfer = -DriveNotch.y;
$fn = NumSides;
//----------
// Define Shapes
module Splines() {
render()
for (a = [0:90:270])
zrot(a)
right(DriveSocket[ID]/2 - Protrusion)
cuboid(DriveNotch + [Protrusion,0,0],chamfer=DriveChamfer,edges=[TOP+FWD,TOP+BACK],anchor=LEFT+BOTTOM);
}
module Coupler() {
difference() {
tube(ShellOA[LENGTH],id=ShellOA[ID],od=ShellOA[OD],anchor=BOTTOM);
up(ShellOA[LENGTH] - MixerSocket[LENGTH])
cyl(Retainer[LENGTH],d=Retainer[OD],anchor=BOTTOM);
up(ShellOA[LENGTH] + Protrusion)
cyl(DriveSocket[LENGTH] + Protrusion,d=DriveSocket[ID],anchor=TOP);
up(ShellOA[LENGTH] - DriveNotch[LENGTH] + Protrusion)
Splines();
}
}
//----------
// Build things
if (Layout == "Splines")
Splines();
if (Layout == "Show")
Coupler();
if (Layout == "Build")
Coupler();
@ednisley
Copy link
Author

ednisley commented May 16, 2025

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