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.

Tag: Repairs

If it used to work, it can work again

  • Mini-Lathe Cut-Off Tool Holder: Improved Clamp Screw

    Apparently all mini-lathe cutoff tool holders suffer from the same problem:

    Lathe Cutoff Tool - OEM swaged screw
    Lathe Cutoff Tool – OEM swaged screw

    The clamp tightening screw is made from butter-soft Chinese steel with a swaged hex socket. As you’d expect, the hex wrench eventually (as in, after a few dozen adjustments, tops) rips the guts right out of the socket.

    The screw has a M6×1.0 mm threads, but the thread around the hex recess is left-handed. While I could, in principle, print a 127 tooth change gear, rebuild the lathe’s banjo to accommodate it, then single-point a backassward M6 thread, it’s easier to just use a standard socket head cap screw:

    Lathe Cutoff Tool - rebuilt screw
    Lathe Cutoff Tool – rebuilt screw

    The clamp screw passes through the block at an angle:

    Lathe Cutoff Tool - blade view
    Lathe Cutoff Tool – blade view

    Fortunately, the screw is perpendicular to the angled side over on the left, making it easy to clamp in the Sherline’s vise:

    Lathe Cutoff Tool - aligning to screw
    Lathe Cutoff Tool – aligning to screw

    Using the laser aligner seemed like a good idea at the time, but the top of the screw wasn’t particularly well-centered on the hole’s axis. I couldn’t screw the left-hand part (with the socket) in from the bottom and center the block near its surface, because then I couldn’t extract the screw before proceeding.

    I used a diamond burr to grind out a flat for the screw head:

    Lathe Cutoff Tool - clearing screw recess
    Lathe Cutoff Tool – clearing screw recess

    The flat came from about twenty manual G2 I-2.5 full-circle passes, stepping down through the hard steel block 0.1 mm per pass, at a too-slow 4000 RPM and a too-fast 30 mm/min feed, with plenty of water squirted from one side into a shop vac snout on the other. The doodle in the background of the first picture shows a first pass at the layout, with the burr centered at X=-2.5; I actually did the grinding from X=+2.5 so most of the passes started in thin air.

    The screw head started just shy of 10 mm OD and the burr just over 5.2 mm, so the ensuing 5 mm circles created a flat barely large enough. If the flat were perfectly centered on the screw axis, I wouldn’t have had to grind out another millimeter on the left side (toward the bottom of the tool holder body), but it worked out OK:

    Lathe Cutoff Tool - 6 mm SHCS test fit
    Lathe Cutoff Tool – 6 mm SHCS test fit

    The trial fitting also showed the head stuck out ever so slightly beyond the far side of the block, where it would interfere with the blade, so I turned off 0.4 mm off its OD.

    If I had a 50 mm SHCS in hand, I’d have used it. Instead, I extended the threads of a 75 mm screw, then lopped off the end to the proper length. I’ll spare you the ordeal, including the moment when I reached for the cutoff tool to shorten the screw. A bag of such screws will arrive shortly, in preparation for future need.

    Now the [deleted] cut-off holder works the way it should have from the beginning.

  • Mower FOD

    For reasons not relevant here, the lawn mower suffered some Foreign Object Damage:

    Lawn Mower - bent blade mount
    Lawn Mower – bent blade mount

    I’m sure the hard stop loosened the tolerances along the shaft, but the mower fired right up (with that new blade!) and has no more vibration than usual, despite the seriously bent blade mount.

    I no longer have a deep emotional attachment to lawn mowers, which is apparently common, as the label advises me there’s no need to change the oil:

    Mower Engine - never change the oil
    Mower Engine – never change the oil

    Drive it ’til it drops …

  • Houses Are Trouble: Electrical Service Division

    The ancient utility pole on the north side of our property fell over a few hours after a thunderstorm rolled through:

    Fallen Utility Pole - end view
    Fallen Utility Pole – end view

    Fortunately, the wire clamps were upward and it just lay there without sparks or excitement. It feeds the vacant house out back, so restoring power wasn’t urgent.

    Unfortunately, the lines neatly bisected Mary’s garden:

    Fallen Utility Pole - garden view
    Fallen Utility Pole – garden view

    The utility crew arrived a few hours later, disconnected the triplex at the fallen pole, rolled it up, secured it to the source pole out front, and promised a different crew would replace the pole in a while:

    Central Hudson truck - 2019-06-27
    Central Hudson truck – 2019-06-27

    We agreed restoring service to other folks who needed it should take priority.

    Mary’s been ducking the various cable TV / phone / FiOS cables ever since.

    The pole has been God’s own toothpick for quite some time, as shown by this picture from 2001:

    CHGE pole - rear - top
    CHGE pole – rear – top

    Fortunately for us, its pole tag hadn’t fallen off in all those years:

    CHGE Pole Tag - mid-north
    CHGE Pole Tag – mid-north

    That little tag may save us ten large during this exquisite little inconvenience …

  • Step2 Garden Seat: Replacement Seat

    Step2 Garden Seat: Replacement Seat

    A pair of Step2 rolling garden seats (they have a new version) served in Mary’s gardens long enough to give their seat panels precarious cracks:

    Step2 Seat - OEM seat
    Step2 Seat – OEM seat

    The underside was giving way, too:

    Step2 Seat - cracks
    Step2 Seat – cracks

    We agreed the new seat could be much simpler, although it must still hinge upward, so I conjured a pair of hinges from the vasty digital deep:

    Rolling Cart Hinges - solid model - bottom
    Rolling Cart Hinges – solid model – bottom

    The woodpile disgorged a slab of 1/4 inch = 6 mm plywood (used in a defunct project) of just about the right size and we agreed a few holes wouldn’t be a problem for its projected ahem use case:

    Step2 Seat - assembled
    Step2 Seat – assembled

    The screw holes on the hinge tops will let me run machine screws all the way through, should that be necessary. So far, a quartet of self-tapping sheet metal (!) screws are holding firm.

    Rolling Cart Hinges - solid model - top
    Rolling Cart Hinges – solid model – top

    A closer look at the hinges in real life:

    Step2 Seat - top view
    Step2 Seat – top view

    The solid model now caps the holes; I can drill them out should the need arise.

    From the bottom:

    Step2 Seat - bottom view
    Step2 Seat – bottom view

    Three coats of white exterior paint make it blindingly bright in the sun, although we expect a week or two in the garden will knock the shine right off:

    Step2 Seat - painted
    Step2 Seat – painted

    After the first coat, I conjured a drying rack from a bamboo skewer, a cardboard flap, and some hot-melt glue:

    Step2 Seat - drying fixture
    Step2 Seat – drying fixture

    Three small scars on the seat bottom were deemed acceptable.

    The OpenSCAD source code as a GitHub Gist:

    // Hinge brackets for rolling garden stool
    // Ed Nisley – KE4ZNU – 2019-06
    Layout = "Build"; // [Block,Build,Show]
    Support = true;
    /* [Hidden] */
    ThreadThick = 0.20;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    ID = 0;
    OD = 1;
    LENGTH = 2;
    //———————-
    // Dimensions
    SeatThick = 6.0; // seat panel above cart body
    HingePin = [11.5,12.0,7.0]; // ID = tip OD = base
    HingeOffset = 8.0; // hinge axis above cart body (larger than radius!)
    HingeBolster = [5.0,24.0,SeatThick]; // backing block below hinge
    Block = [25.0,HingeOffset + 30.0,23.0]; // Z = above cart body
    Screw = [3.8,11.0,2.5]; // self-tapping #8 OD=head LENGTH=head thickness
    ScrewOC = 15.0; // spacing > greater than head OD
    ScrewOffset = Block.y/2 – (ScrewOC/2 + Screw[OD]/2 + HingeOffset); // space for head behind hinge
    BlockRadius = 7.0; // corner rounding
    //———————-
    // 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);
    }
    // Basic block shape
    // X axis collinear with hinge axes, hinge base at X=0
    module HingeBlock() {
    PinSides = 3*4;
    PinSupport = [HingePin[LENGTH] – 2*ThreadWidth,0.6*HingeOffset,HingePin[OD]]; // pre-rotated
    union() {
    translate([Protrusion,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,-90,0])
    rotate(180/PinSides)
    cylinder(d=HingePin[OD],h=HingePin[LENGTH] + Protrusion,$fn=PinSides);
    difference() {
    hull() {
    translate([Block.x – BlockRadius,-(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate(180/PinSides)
    sphere(r=BlockRadius/cos(180/PinSides),$fn=PinSides);
    translate([0,-(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=BlockRadius/cos(180/PinSides),h=Block.x/2,$fn=PinSides);
    translate([Block.x – BlockRadius,(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    sphere(r=BlockRadius/cos(180/PinSides),$fn=PinSides);
    translate([0,(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=BlockRadius/cos(180/PinSides),h=Block.x/2,$fn=PinSides);
    translate([0,-Block.y/2,0])
    cube([Block.x,Block.y – HingeOffset,Block.z/2],center=false);
    translate([0,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=HingeOffset/cos(180/PinSides),h=Block.x,$fn=PinSides);
    }
    translate([Block.x/2 + HingeBolster.x,0,(SeatThick – Protrusion)/2])
    cube([Block.x,2*Block.y,SeatThick + Protrusion],center=true);
    translate([0,-HingeBolster.y,(SeatThick – Protrusion)/2])
    cube([3*Block.x,Block.y,SeatThick + Protrusion],center=true);
    for (j=[-1,1])
    translate([Block.x/2,j*ScrewOC/2 + ScrewOffset,-4*ThreadThick])
    rotate(180/8)
    PolyCyl(Screw[ID],Block.z,8);
    }
    }
    if (Support) { // totally ad-hoc
    color("Yellow") render(convexity=4)
    difference() {
    translate([-(PinSupport.x/2 + 2*ThreadWidth),Block.y/2 – PinSupport.y/2,HingeOffset])
    cube(PinSupport,center=true);
    translate([Protrusion,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,-90,0])
    rotate(180/PinSides)
    cylinder(d=HingePin[OD] + 2*ThreadThick,h=2*HingePin[LENGTH],$fn=PinSides);
    for (i=[-1:1])
    translate([i*4*ThreadWidth – HingePin[LENGTH]/2,
    Block.y/2 – (PinSupport.y + 1*ThreadThick),
    HingeOffset])
    cube([2*ThreadWidth,2*PinSupport.y,2*PinSupport.z],center=true);
    }
    }
    }
    module Blocks(Hand = "Left") {
    if (Hand == "Left")
    HingeBlock();
    else
    mirror([1,0,0])
    HingeBlock();
    }
    //- Build it
    if (Layout == "Block")
    HingeBlock();
    if (Layout == "Show") {
    translate([1.5*HingePin[LENGTH],0,0])
    Blocks("Left");
    translate([-1.5*HingePin[LENGTH],0,0])
    Blocks("Right");
    }
    if (Layout == "Build") {
    translate([0,-Block.z/2,Block.y/2])
    rotate([-90,0,0]) {
    translate([1.5*HingePin[LENGTH],0,0])
    Blocks("Left");
    translate([-1.5*HingePin[LENGTH],0,0])
    Blocks("Right");
    }
    }

    This original doodle gives the key dimensions, apart from the rounded rear edge required so the seat can pivot vertically upward:

    Cart Hinge - dimension doodle
    Cart Hinge – dimension doodle

    The second seat looks just like this one, so life is good …

  • Power Lift Chair Upholstery Protection

    For reasons not relevant here, we have a power lift chair which has been shedding upholstery tufts since the day we got it. After realizing this wasn’t going to stop on its own, I spent a while poking around underneath and discovered the steel struts supporting the leg rest rub along the upholstery during their entire travel:

    Lift chair - strut vs upholstery
    Lift chair – strut vs upholstery

    Apparently, the padding behind the upholstery pushes it a bit further out than the original design could accommodate, letting the raw edges on the steel struts shave off the fuzz.

    I put relatively smooth stainless steel tape on all the protrusions and bent it around the rough edges:

    Lift chair - strut smoothing
    Lift chair – strut smoothing

    Those steel folds are smoother than they appear.

    It’s not obvious this will solve the problem, but the struts seems to be scraping off much less fuzz than before, so it’s a step in the right direction.

    Why is it all of today’s consumer products require 10% more engineering to work in the real world?

  • ShopVac Repairs

    A stainless steel 10 gallon (*) 5 Peak HP (**) ShopVac followed me home from the side of the road. It seemed to be in easily repairable condition and looks like a definite improvement for my collection.

    One handle had a broken screw boss, probably from the same event producing the crack across the top, over on the right:

    ShopVac - broken screw boss
    ShopVac – broken screw boss

    The self-tapping screw (taken from the other end of the handle) looked to be about #10, so I melted a 10-32 brass insert into roughly the right position with a soldering gun:

    ShopVac - brass insert in handle boss
    ShopVac – brass insert in handle boss

    An aluminum sheet bandsawed into shape will reinforce the crack, with a generous dollop of hot melt glue holding everything in place:

    ShopVac - repaired handle - bottom view
    ShopVac – repaired handle – bottom view

    I don’t plan to carry it around by the handle, so perhaps it’ll outlast your expectations.

    From the top, it looks pretty much the way it should:

    ShopVac - repaired handle - installed
    ShopVac – repaired handle – installed

    The front caster mount lost both of the 1/4-20 bolts previously holding it to the canister, so I installed a pair of nice stainless steel bolts and nyloc nuts:

    ShopVac - new front foot bolts
    ShopVac – new front foot bolts

    The motor runs fine, a new bag & filter arrived the next day, and it’s all good.

    Disclaimers from ShopVac’s Fine Print section:

    * Tank capacity refers to actual tank volume, and does not reflect capacity available during operation.

    ** “Peak Horsepower” (PHP) is a term used in the wet-dry vacuum industry for consumer comparison purposes. It does not denote the operational horsepower of a wet-dry vacuum but rather the horsepower output of a motor, including the motor’s inertial contribution, achieved in laboratory testing. In actual use, Shop-Vac® motors do not operate at the peak horsepower shown.

    https://www.shopvac.com/

    Translation: they lie.

  • Weatherproof Outlet Cover Re-Chaining

    The yard camera now resides outdoors and plugs into one of three outlets on the patio, all of which have weatherproof covers attached by a bead chain to the trim plate:

    Patio Outlet - new chain installed
    Patio Outlet – new chain installed

    That’s the after-repair condition, as two of the three chains were broken when we bought the house.

    Stipulated: the covers needed scrubbing, but sometimes ya gotta stay focused on the Main Goal.

    Two feet of 3.4 mm brass bead chain (because spares: ya gotta have stuff) arrived from eBay, I dismounted all three covers, and discovered the bell-shaped brass caps on the old chains were perfectly serviceable after six decades:

    Patio Outlet - chain retainers
    Patio Outlet – chain retainers

    The outlets are wired to circuit breaker 28, of course.

    Having enough chain to go around, each cover now sports a slightly longer leash than before:

    Patio Outlet - chain assembly
    Patio Outlet – chain assembly

    Reinstall in reverse order, the camera rebooted as it should, and it’s all good out there:

    Pressure-washing Patio Railing
    Pressure-washing Patio Railing

    That was easy …