I used a pair of blue LEDs for the colon in the Totally Featureless Clock. Each one has a brass tube to define the dot and a white plastic diffuser to eliminate hotspots.
Some rummaging in the brass cutoff assortment produced a pair of tubes with a 0.300 inch ID that closely matched the width of the LED segment bars. The catch is that I don’t have a core drill that spits out 0.300 inch slugs…
So I taped a chunk of translucent acrylic to some plywood scrap and milled the dots. Helix milling on the lesser of a 4% slope or 1/5 of the cutter diameter, 15 inches/min, no cooling, maybe 1500 rpm.
The resulting disks were snug slip fits into the tubes, although I added a dot of cyanoacrylate to ensure they didn’t get any ideas about perpetrating an escape.
It took two disks to remove all the hotspots, which reduced the light intensity to the point where I had to increase the LED current, which really heated up the linear regulator driving the dots. Fooey! In retrospect, I think frosting the LED lens would eliminate the need for a second diffuser without decreasing the intensity much at all.
The code is available as an OpenOffice file there, too.
(Post milling) (Ed Nisley KE4ZNU - Feb 2010) (Origin = center of post at surface) (Double-stick tape holding acrylic sheet to sacrificial plate) (-- Dimensions) #<_PostDia> = 0.300 (post OD) #<_PostRad> = [#<_PostDia> / 2] #<_Thickness> = 0.120 (sheet thickness) #<_MillDia> = 0.250 (cutter diameter) #<_MillSpeed> = 15 (cutting speed) #<_MaxCutDepth> = [#<_MillDia> / 5] (max cutting depth) #<_MaxCutSlope> = 0.04 (max cutting slope) #<_TraverseZ> = 0.300 (safe travel height) #<_TraverseSpeed> = 25 (safe traverse speed) G20 (inches!) (-- Figure cut depth per helix pass) #<_PassCut> = [#<_MaxCutSlope> * 3.142 * [#<_PostDia> + #<_MillDia>]] (limit max cut for each pass) O9000 IF [#<_PassCut> GT #<_MaxCutDepth>] #<_PassCut> = #<_MaxCutDepth> (limit max cut for each pass) O9000 ENDIF (-- Set up cutter comp) G0 Z#<_TraverseZ> G0 X[0 - 3 * #<_PostRad>] Y0 (get to entry point) G42.1 D#<_MillDia> G2 X[0 - #<_PostRad>] I#<_PostRad> F#<_TraverseSpeed> (-- cut down through sheet) #<CurrentZ> = 0.0 G0 Z#<CurrentZ> F#<_MillSpeed> O1000 DO #<NextZ> = [#<CurrentZ> - #<_PassCut>] (figure ending level) G3 I#<_PostRad> Z#<NextZ> (once around) #<CurrentZ> = #<NextZ> O1000 WHILE [#<CurrentZ> GT [0 - #<_Thickness>]] G3 I#<_PostRad> (clear final ramp) G40 (comp off) G0 Z#<_TraverseZ> G0 X0 Y0 M2