Desk Lamp Conversion: Photo Light Cold Shoe

Having recently acquired a pair of photo lights and desirous of eliminating some desktop clutter, I decided this ancient incandescent (!) magnifying desk lamp had outlived its usefulness:

Desk Lamp - original magnifiying head
Desk Lamp – original magnifiying head

The styrene plastic shell isn’t quite so yellowed in real life, but it’s close.

Stripping off the frippery reveals the tilt stem on the arm:

Desk Lamp - OEM mount arm
Desk Lamp – OEM mount arm

The photo lights have a tilt-pan mount intended for a camera’s cold (or hot) shoe, so I conjured an adapter from the vasty digital deep:

Photo Light Bracket for Desk Lamp Arm - solid model
Photo Light Bracket for Desk Lamp Arm – solid model

Printing with a brim improved platform griptivity:

Photo Light Bracket for Desk Lamp Arm - Slic3r preview
Photo Light Bracket for Desk Lamp Arm – Slic3r preview

Fortunately, the photo lights aren’t very heavy and shouldn’t apply too much stress to the layers across the joint between the stem and the cold shoe. Enlarging the stem perpendicular to the shoe probably didn’t make much difference, but it was easy enough.

Of course, you (well, I) always forget a detail in the first solid model, so I had to mill recesses around the screw hole to clear the centering bosses in the metal arm plates:

Photo Lamp - bracket recess milling
Photo Lamp – bracket recess milling

Which let it fit perfectly into the arm:

Desk Lamp - photo lamp mount installed
Desk Lamp – photo lamp mount installed

The grody threads on the upper surface around the end of the slot came from poor bridging across a hexagon, so the new version has a simple and tity flat end. The slot is mostly invisible with the tilt-pan adapter in place, anyway.

There being no need for a quick-disconnect fitting, a 1/4-20 button head screw locks the adapter in place:

Photo Lamp - screw detail
Photo Lamp – screw detail

I stripped the line cord from inside the arm struts and zip-tied the photo lamp’s wall wart cable to the outside:

Photo Lamp - installed
Photo Lamp – installed

And then It Just Works™:

Photo Lamp - test image
Photo Lamp – test image

The lens and its retaining clips now live in the Big Box o’ Optical parts, where it may come in handy some day.

The OpenSCAD source code as a GitHub Gist:

// Photo light mount for desk lamp arm
// Ed Nisley - KE4ZNU
// 2019-03
/* [Layout Options] */
Layout = "Build"; // [Show,Build]
Part = "Mount"; // [LampArm,ShoeSocket,Mount]
/* [Extrusion Parameters] */
ThreadWidth = 0.40;
ThreadThick = 0.25;
HoleWindage = 0.2;
Protrusion = 0.1;
//-----
// Dimensions
/* [Hidden] */
ID = 0;
OD = 1;
LENGTH = 2;
/* [Dimensions] */
FrictionDisk = [4.0,16.5,11.0]; // squashed inside desk lamp arm frame
Divots = [4.0,9.5,0.75]; // recesses for frame alignment bumps
ArmLength = 30.0; // attached to disk
ShoeWheelOD = 32.0; // lock wheel on photo lamp
ShoeBase = [18.5,18.5,2.0] + [HoleWindage,HoleWindage,2*ThreadWidth]; // square base on photo lamp gimbal
ShoeStem = [6.3,12.0,1.5]; // top slide clearance, ID = 1/4 inch screw
ShoeBlock = [ShoeWheelOD,ShoeWheelOD,2*(ShoeBase.z + ShoeStem.z)]; // overall shoe block
NumSides = 3*4;
//-----
// Useful routines
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
module PolyCyl(Dia,Height,ForceSides=0,Center=false) { // 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,center=Center);
}
//-----
// Various Parts
// Arm captured in disk lamp
module LampArm() {
difference() {
union() {
cylinder(d=FrictionDisk[OD],h=FrictionDisk[LENGTH],$fn=NumSides,center=true);
hull()
for (j=[-1,1])
translate([0,j*(FrictionDisk[OD]/2 - FrictionDisk[LENGTH]/2),0]) {
rotate([0,90,0]) rotate(180/NumSides)
cylinder(d=FrictionDisk[LENGTH]/cos(180/NumSides),h=ArmLength/2,$fn=NumSides);
translate([ArmLength - FrictionDisk[LENGTH]/2,0,0])
sphere(d=FrictionDisk[LENGTH],$fn=NumSides);
}
}
rotate(180/6) {
PolyCyl(FrictionDisk[ID],FrictionDisk[LENGTH] + 2*Protrusion,6,Center=true);
for (k=[-1,1])
translate([0,0,k*(FrictionDisk[LENGTH]/2 - Divots[LENGTH]/2)])
PolyCyl(Divots[OD],Divots[LENGTH] + Protrusion,6,Center=true);
}
}
}
// Basic hot shoe socket
module ShoeSocket() {
difference() {
union() {
cube(ShoeBlock,center=true); // overall blocky retainer
translate([-ShoeBlock.x/2,0,0])
cylinder(d=ShoeBlock.x,h=ShoeBlock.z,$fn=NumSides,center=true);
}
translate([0,0,-2*ShoeBlock.z]) // screw hole throughout
rotate(180/6)
PolyCyl(ShoeStem[ID],4*ShoeBlock.z,6);
translate([0,0,ShoeBase.z/2]) // base slot under pillar
cube([ShoeBase.x,ShoeBase.y,ShoeBase.z],center=true);
translate([ShoeBase.x/2,0,ShoeBase.z/2]) // base slot opening
cube([ShoeBase.x,ShoeBase.y,ShoeBase.z],center=true);
translate([ShoeStem[OD]/2,0,ShoeBase.z/2 + ShoeStem[LENGTH]]) // stem slot
cube([2*ShoeStem[OD],ShoeStem[OD],2*ShoeStem[LENGTH]],center=true);
}
}
// Stick parts together
module Mount() {
rotate([90,0,0])
LampArm();
translate([ArmLength + ShoeBlock.x/2 - Protrusion,0,0])
ShoeSocket();
}
//-----
// Build things
if (Layout == "Build") {
rotate([0,90,0])
translate([-(ArmLength + ShoeBlock.x),0,0])
Mount();
}
if (Layout == "Show")
if (Part == "LampArm")
LampArm();
else if (Part == "ShoeSocket")
ShoeSocket();
else if (Part == "Mount")
Mount();

The original dimension doodles, made before I removed the stem and discovered the recesses around the screw hole:

Photo Light - Desk Lamp Arm Dimensions
Photo Light – Desk Lamp Arm Dimensions

One thought on “Desk Lamp Conversion: Photo Light Cold Shoe

Comments are closed.