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); }
2 thoughts on “LED Ring Desk Lamp”
Comments are closed.