Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
OpenSCAD source code: Adapter for 60 LED ring light on AO570 Stereo Zoom microscope
// LED Ring Light Mount - 60 mm ID ring
// Ed Nisley KE4ZNU April 2017
//- Extrusion parameters must match reality!
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
ID = 0;
OD = 1;
LENGTH = 2;
ScopeThread = [43.0,46.5,4.0]; // scope snout thread, ID = minimum invisible
LEDRing = [ScopeThread[ID],60.0,8.0];
LEDScrewOffset = 4.0;
LEDScrewOD = 3.0;
LEDScrews = 3;
OAH = ScopeThread[LENGTH] + LEDRing[LENGTH];
NumSides = 3*4*LEDScrews; // get symmetry for screws
//----------------------
// 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);
}
//----------------------
// Build it
difference() {
rotate(180/NumSides)
union() {
cylinder(d=ScopeThread[OD],h=OAH,$fn=NumSides);
cylinder(d=LEDRing[OD],h=LEDRing[LENGTH],$fn=NumSides);
}
translate([0,0,-Protrusion])
rotate(180/NumSides)
cylinder(d=ScopeThread[ID],h=OAH + 2*Protrusion,$fn=NumSides);
translate([0,0,-Protrusion])
rotate(180/NumSides)
cylinder(d1=LEDRing[OD] - 2*6*ThreadWidth,
d2=ScopeThread[ID],
h=LEDRing[LENGTH] + Protrusion,$fn=NumSides);
for (i=[0:LEDScrews-1])
rotate(i*360/LEDScrews)
translate([LEDRing[OD]/2 - LEDScrewOD,0,LEDRing[LENGTH] - LEDScrewOffset])
rotate([0,90,0]) rotate(180/6)
cylinder(d=LEDScrewOD,h=LEDScrewOD + Protrusion,$fn=6);
}
@ednisley

This comment has been minimized.

Copy link
Owner Author

commented Apr 16, 2017

More details on my blog at http://wp.me/poZKh-6GP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.