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.

The New Hotness

  • Monitor Mount: USB Hub Clamp

    Along with the Beelink PC, putting the Anker USB hub on the monitor mount pole helped tidy the cables just a little bit:

    Monitor pole clamp - Anker USB hub
    Monitor pole clamp – Anker USB hub

    It’s still jumbled, but at least the cables aren’t wagging the hub.

    This clamp needs only one M6 screw into a square nut:

    Monitor Pole box clamp - solid model
    Monitor Pole box clamp – solid model

    Again better seen in cross-section:

    Monitor Pole clamp - PrusaSlicer preview
    Monitor Pole clamp – PrusaSlicer preview

    The OpenSCAD code extrudes the shape from a 2D arrangement, then punches the screw through the side:

    // Monitor Pole box clamp
    // Ed Nisley - KE4ZNU
    // 2025-01-23
    
    include <BOSL2/std.scad>
    
    /* [Hidden] */
    
    ID = 0;
    OD = 1;
    LENGTH = 2;
    
    Protrusion = 0.1;
    
    Box = [22.5,45.5,25.0];         // Z is clamp height
    BoxGrip = 5.0;                  // on outer side clearing connectors
    
    PoleOD = 30.5;
    
    WallThick = 5.0;
    
    Kerf = 3.0;                     // clamping space
    Clearance = 2*0.2;              // space around objects
    
    Washer = [6.0,12.0,1.5];        // M6 washer
    Nut = [6.0,10.0,5.0];           // M6 square nut
    
    MidSpace = 35.0;                // pole to box spacing
    
    ClampOAL = Box.x + MidSpace + PoleOD + 2*WallThick;
    
    //----------
    // Build it
    
            difference() {
                linear_extrude(height=Box.z,convexity=5)
                    difference() {
                        hull() {
                            right(MidSpace/2 + Box.x/2)
                                rect(Box + 2*[WallThick,WallThick],rounding=WallThick);
                            left(MidSpace/2 + PoleOD/2)
                                circle(d=PoleOD + 2*WallThick);
                        }
                        right(MidSpace/2 + Box.x/2)
                            square(Box + [Clearance,Clearance],center=true);
                        right(MidSpace/2 + Box.x)
                            square([Box.x,Box.y - 2*BoxGrip],center=true);
                        left(MidSpace/2 + PoleOD/2)
                            circle(d=PoleOD + Clearance);
                        square([2*ClampOAL,Kerf],center=true);
                    }
                up(Box.z/2) {
                    xrot(90)
                        cylinder(d=Washer[ID] + Clearance,h=2*Box.y,center=true,$fn=6);
                    fwd(Box.y/2 - Washer[LENGTH])
                        xrot(90) zrot(180/12)
                            cylinder(d=Washer[OD] + Clearance,h=Box.y,center=false,$fn=12);
                    back(Box.y/2 + Nut[LENGTH]/2)
                        xrot(90)
                            cube([Nut[OD],Nut[OD],2*Nut[LENGTH]],center=true);
                }
            }
    

    The alert reader will have noticed I didn’t peel the protective film off the hub, which tells you how fresh this whole lashup is.