Microscope LED Ring Illuminator

A batch of LED ring lights arrived from halfway around the planet and I’d earmarked one for a microscope ring illuminator, despite the crappy color spectrum of white LEDs. It’s better than the fluorescent desk lamp I’d been using up to this point.

This shows the business end of the LED ring light, which would probably look better more professional without the full-frontal Barbie color scheme:

Microscope LED Ring light - snout view
Microscope LED Ring light - snout view

It’s less overwhelming from the top:

Microscope with LED illuminator
Microscope with LED illuminator

The power cable came with the ring. I unsoldered it, fed the end through the shade, resoldered it, snipped off the automobile lamp adapter, wired it to a switch and a 12 V 200 mA wall wart, and hot-melt-glued the switch to the microscope. Yet another vampire load, alas.

The two parts must be printed separately to eliminate any problem with overhang, as the finished widget would have vertical walls on both sides. I thought about support material, realized that would be a lot like work, and split the thing into two parts.

LED ring light - mounting plate and shade
LED ring light - mounting plate and shade

The walls on the shade ring show the same backlash problem that cropped up there; I built these before tweaking the belts.

The mounting plate screws into the microscope’s accessory thread:

Microscope LED Ring Light - Mount Plate
Microscope LED Ring Light - Mount Plate

Admittedly, “screws into” may be an exaggeration: the mount is just a cylindrical feature slightly larger than the microscope’s minor thread diameter; it’s barely more than a snug friction fit. I clipped out four small sections to allow that ring to bend slightly as it engages the threads.

A shade contains the LED ring and keeps direct light off the objective lenses. There’s a tiny hole on one side to let the power wires out:

Microscope LED Ring Light - Shade
Microscope LED Ring Light - Shade

The two parts got glued together with the same ABS-in-MEK gunk that I apply to the aluminum build plate:

Clamping LED ring light parts
Clamping LED ring light parts

I applied three blobs of hot-melt glue inside the shade, lined up the LED ring’s power wire with the exit hole, and smooshed it into place. Pause for a breath and it’s done!

The result actually looks pretty good, despite the weird yellow-and-blue spectrum you get free with every “white” LED. I reset the camera’s color correction using a white sheet of paper. This is an ordinary M3 socket head cap screw, familiar to Thing-O-Matic owners everywhere, and a tweaked needle-point tweezer:

Sample image using LED ring light
Sample image using LED ring light

The microscope camera mount works surprisingly well, particularly given how simple it was to build.

The OpenSCAD source makes the shade walls a bit taller than you see above. When I run out of pink filament, this one’s on the rebuild list!

// Microscope LED Ring Illuminator Mount
// Ed Nisley - KE4ZNU - Mar 2011

// Build with...
//	extrusion parameters matching the values below
//	2 extra shells
//	3 solid surfaces at top + bottom

Build = "Ring";					// Mount or Ring

// Extrusion parameters for successful building

ThreadZ = 0.33;						// should match extrusion thickness
WT = 1.75;							// width over thickness
ThreadWidth = ThreadZ * WT;			// should match extrusion width

HoleWindage = ThreadWidth;			// enlarge hole dia by extrusion width

// Screw mount dimensions

MountOD = 46.85 - ThreadWidth;		// Microscope thread diameter (thread minor)
MountDepth = 2.5;					// ... length
MountID = MountOD - 6*ThreadWidth;	// ID of mount body -- must clear lenses

echo(str("Mount ID: ",MountID));
echo(str("Mount OD: ",MountOD));

PlateThick = 3*ThreadZ;				// Thickness of mounting plate beyond rings

echo(str("Plate: ",PlateThick));

// LED Ring holder dimensions

RingID = 54.0;
RingOD = 71.0;
RingFit = 0.5;						// radial gap from ID and OD

InnerShade = 6.0;					// Shade walls around ring
OuterShade = 10.0;
ShadeWall = 4*ThreadWidth;			//  wall thickness

HolderID = RingID - 2*RingFit - 2*ShadeWall;
HolderOD = RingOD + 2*RingFit + 2*ShadeWall;

echo(str("Holder ID:",HolderID));
echo(str("Holder OD:",HolderOD));

LeadWidth = 4.0 + HoleWindage;		// LED power lead hole
LeadTall = 2.0 + HoleWindage;

Protrusion = 0.1;					// extend holes beyond surfaces for visibility

//---------------
// Create thread gripper and plate

module Mount() {

  difference() {
	union() {
	  translate([0,0,PlateThick])
		cylinder(r=(MountOD/2 + HoleWindage),h=MountDepth);
	  cylinder(r=HolderOD/2,h=PlateThick);
	}

	translate([0,0,-Protrusion])
	  cylinder(r=MountID/2,h=(PlateThick + MountDepth + 2*Protrusion));
  }

}

//----------------
// Create LED ring holder

module Ring() {

  difference() {
	union() {
	  cylinder(r=HolderOD/2,h=PlateThick);

	  translate([0,0,PlateThick]) {
		difference() {
		  cylinder(r=HolderOD/2,h=OuterShade);
		  cylinder(r=(HolderOD/2 - ShadeWall),h=(OuterShade + Protrusion));
		}

		cylinder(r=(HolderID/2 + ShadeWall),h=InnerShade);
	  }
	}

	translate([0,0,-Protrusion])
	  cylinder(r=HolderID/2,h=(InnerShade + PlateThick + 2*Protrusion));

	translate([(HolderOD/2 - ShadeWall/2),0,(PlateThick + ShadeWall/2 + LeadTall/2)]) {
	  scale([ShadeWall*2,LeadWidth,LeadTall])
		rotate(a=[0,90,0])
		  cylinder(r=0.5,h=1.0,center=true,$fn=12);
	}
  }

}

//---------------
// Build what's needed

if (Build == "Mount") {
  Mount();
}
else {
  Ring();
}

9 thoughts on “Microscope LED Ring Illuminator

  1. Hey that’s really cool! I just built one of those but nowhere nearly as pretty (because I don’t have a thing-o-matic.)
    We’re working on the blue-and-yellow issue, believe me.

  2. nice project. have you posted this to Thingiverse yet?

    on a side note, you can smooth out the circles by using the $fs variable in openscad: http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features

    put this line at the beginning of your script:

    $fs = 0.1;

    it basically defaults the smallest line segment in an arc to 0.1mm instead of the much larger line segments you’re getting. you’ll want to comment that line out while developing, otherwise it will take much longer for the csg operations to run. re-enable it when you’re ready for the final compile before export.

    1. you can smooth out the circles

      Those facets do add a certain 8-bit charm, don’t they? [grin]

      I used $fn=12 for the little bitty power cord hole to force some easy-to-overhang angles at the top & bottom, but for the ring circumference I didn’t much care one way or the other.

      posted this to Thingiverse

      IMO, Thingiverse has become a write-only graveyard: there’s no way to actually find anything amid all the noise, which negates the advantage of a central repository. Even unleashing Google directly on the site dredges up a ton of irrelevant pages, all of which mention the object: they’ve built it, they’ve commented on it, they’ve used it as a part of something, they like it, or whatever. Finding the original listing amid all that dross simply isn’t possible, unless it’s one of the few highly popular objects that bubble to the top of the pile.

      Sort of like the useless WordPress search function on this blog… [sigh]

      Conversely, if you ask Google for [microscope illuminator thing-o-matic], guess what’s at the top of that list? [grin] Heck, it’s near the top even if you leave out “illuminator”! Now, maybe that’s slighting somebody else’s project, but I’ll go with the flow.

      1. FWIW I use the wordpress search function to find stuff on your blog on at least a weekly basis, as I’m working on getting the mill running. It takes some filtering but it’s not so bad.

        1. I’d call it barely tolerable. Mostly, I aim Google at my own site to find stuff: it delivers the post and every summary page containing it, plus other detritus, but what I’m looking for is somewhere in the top few entries.

          Which is why I’m doing this: so I can find it again!

Comments are closed.