The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Under-shelf Kitchen Light Bracket

Quite a while ago I’d added another LED strip to the under-cabinet light array, because the little cutting boards & suchlike on a wire shelf blocked the light, but fastened it in place with ugly wire ties.

Finally I found a Round Tuit on the desk for brackets mounting the strip directly to the shelf:

Kitchen Light Bracket - shelf blocks - solid model
Kitchen Light Bracket – shelf blocks – solid model

Ram a pair of brass inserts in the holes, screw the strip in place, snap the brackets between the wires, and it’s much better:

Kitchen Light Bracket - installed
Kitchen Light Bracket – installed

Stipulated: those wire ends look awful. Fortunately, they’re normally hidden by the cutting boards and suchlike on the shelf.

Although it looks precarious, the rounded sides (seem to) have enough grip on the wires to hold the LED strip in place. We’ll see how well that works in practice, but the idea was to avoid anything sticking up above the wires to collide with the stuff on the shelf.

The blocks emerge from a chunk of code glommed onto the original OpenSCAD program:

ShelfWireDia = 3.2;
ShelfWireOC = 1*inch;
StrutWireDia = 6.3;

ShelfBlock = [ShelfWireOC,LEDEndBlock.y,(0.8*ShelfWireDia + StrutWireDia/2)/cos(180/8)];
echo(ShelfBlock=ShelfBlock);

LEDHoleOffset = [ShelfBlock.x/2 - (6.0 + ShelfWireDia/2),6.0];  // from Y+ and X±
LEDHoleDia = 3.0;

ID = 0;
OD = 1;

M3Insert = [3.0,4.0,4.2];   // short M3 knurled insert

<<< snippage >>>

module ShelfBlocks(Side=1) {

  difference() {
    translate([0,ShelfBlock.y/2,ShelfBlock.z/2])
      cube(ShelfBlock,center=true);
   translate([Side*LEDHoleOffset.x,ShelfBlock.y - LEDHoleOffset.y,-Protrusion])
      rotate(180/8)
        PolyCyl(M3Insert[OD],M3Insert[LENGTH] + 2*ThreadThick,8);
    translate([-2*ShelfBlock.x,-StrutWireDia/4,0])
      rotate([0,90,0]) rotate(180/8)
        PolyCyl(StrutWireDia,4*ShelfBlock.x,8);
    for (i=[-1,1])
      translate([i*ShelfWireOC/2,-ShelfBlock.y,(StrutWireDia/2 + ShelfWireDia/2)/cos(180/8)])
        rotate([-90,0,0]) // rotate(180/8)
          PolyCyl(ShelfWireDia,3*ShelfBlock.y,8);
  }
}

<<< snippage >>>

if (Layout == "ShelfBlocks")
  for (i=[-1,1])
    translate([i*(ShelfBlock.x/2 + 3.0),0,0])
      ShelfBlocks(i);

Should’a done that years ago …