A defunct desk lamp emerged from the clutter and cried out for bright, new LEDs. This adapter puts a small LED ring and nine white LEDs on the original lamp head:

Peering into the business end, before mounting it on the lamp, shows some abrasive adjustment on the inside layer:

That layer printed over a quick-and-easy support spider:

The Slic3r preview looking down through the layer just over the support shows that the perimeter of those LED holes doesn’t have much support:

The obvious threads drooped in the predictable way, so I just clipped them off, sanded the high spots into submission, and epoxied everything in place:

That nice Hilbert Curve infill is completely wasted inside the OEM shade, but the smooth curve around the rim had to be on the top surface.
Rather than beefing up the support, you should print the bottom ring (or the top rim) separately, then glue it back on, but I wanted to see how well simple support worked with PETG.
It came out reasonably well:

That’s far more hair than usual, even for PETG, because I made the spider’s legs exactly three thread widths wide. Slic3r reduced the single infill thread to, literally, a hair that didn’t stick to the platform; the model now has four-thread-wide legs.
Slic3r’s automatic support would do a better job of holding up the underside, albeit with more plastic and printing time:

The top view looks about like you’d expect:

Those two solid models show the small hole for the LED ring wiring, which I drilled into the as-printed plastic. The original layout included just the LED ring, with the wire through a big central hole, but then I realized the wall wart had enough moxie for a few more LEDs. So it goes.
Anyhow, the lamp provides just enough illumination below my big monitors to suffice. The gooseneck might not be quite long enough, but that’ll be another project…
The OpenSCAD source code:
// LED Ring Light Mount
// Ed Nisley KE4ZNU October 2015
DoSupport = true;
//- 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
NumSides = 8*4; // number of sides on each "cylinder"
LENGTH = 0;
ID = 1;
OD = 2;
Shade = [6.0,45.2,47.5]; // threaded end of OEM lamp shade
RingLED = [4.5,36.0,51.0];
SpotLED = [2.0,0,5.0]; // discrete LEDs in center
NumSpots = 8; // discrete LEDs around the one in the middle
Support = [(RingLED[LENGTH] - 1*ThreadThick),0,(RingLED[OD] - 4*ThreadWidth)];
NumSupports = NumSides/2;
ThreadBase = RingLED[LENGTH] + SpotLED[LENGTH];
OAHeight = ThreadBase + Shade[LENGTH];
//----------------------
// 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() {
union() { // overall shape
translate([0,0,ThreadBase])
rotate_extrude(convexity = 2, $fn=NumSides)
translate([Shade[OD]/2,0])
circle(r=Shade[LENGTH],$fn=NumSides);
cylinder(d=(Shade[OD] + 2*Shade[LENGTH]),h=ThreadBase,$fn=NumSides);
translate([0,0,ThreadBase])
cylinder(d=Shade[OD],h=Shade[LENGTH],$fn=NumSides);
}
translate([0,0,ThreadBase - Protrusion])
cylinder(d=(Shade[ID] + HoleWindage),h=(Shade[LENGTH] + 2*Protrusion),$fn=NumSides); // opening for shade thread
translate([0,0,-Protrusion])
cylinder(d=(RingLED[OD] + HoleWindage),h=(RingLED[LENGTH] + Protrusion),$fn=NumSides); // opening for LED ring
rotate(180/NumSides) // LED ring power wire
translate([RingLED[ID]/2,0,0])
rotate(180/6)
PolyCyl(2.5,OAHeight,6);
rotate(180/8 - 180/NumSides)
PolyCyl(SpotLED[OD],OAHeight,8); // central LED SpotLED
for (i=[0:NumSpots-1]) // surrounding spots
rotate(i*360/NumSpots - 180/NumSides)
translate([(RingLED[ID] - 2*SpotLED[OD])/2,0,0])
rotate(180/8)
PolyCyl(SpotLED[OD],OAHeight,8);
}
//-- Support structure
if (DoSupport)
color("Yellow")
rotate(180/NumSides) // align bars to flat internal faces
for (i=[0:NumSupports/2 - 1]) {
rotate(i * 360 / NumSupports)
translate([0,0,Support[LENGTH]/2])
cube([Support[OD],4*ThreadWidth,Support[LENGTH]],center=true);
}
Comments
2 responses to “LED Ring Desk Lamp”
[…] Well, that didn’t take long: […]
[…] the 5 mm white LEDs failed on the original desk lamp rebuild, I picked up some chip-on-board LED lamps from the usual eBay […]