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

  • What Archaeologists See In Their Nightmares

    Last view of the plug
    Last view of the plug

    Some day, when all we know has crumbled to dust, somebody will unearth that plug and wonder “WTF was this all about?” Maybe the pipe and tank nearby will be a hint, but for all I know ABS will outlast even concrete.

    This was our last sighting before the earth closed over it…

    The new drain field works fine and, even better, it’ll be months before I need even think of mowing the front yard for the first time.

    Insert obligatory Ozymandias reference here.

  • Digital Caliper Thumbwheel Holder: Another Repair

    The digital caliper on my desk has been getting a lot of use lately and, as expected, that delicate glued repair failed.

    Well, I can fix that

    Thumbwheel holder - installed
    Thumbwheel holder – installed

    That’s a somewhat chopped-up Version 1; as always, I must build one prototype to see how everything fits, then make a real part incorporating all the changes. The models  and code below have those changes and should print fine.

    This picture from the previous repair shows what broke and why:

    Broken Roller Mount
    Broken caliper thumb roller mount

    I removed the remainder of the arch, filed the stub square, made a bunch of tedious measurements, and wrote a chunk of OpenSCAD code to create a repair part that looks like this:

    Thumbwheel holder - build model
    Thumbwheel holder – build model

    There’s also a layout arrangement to confirm that it’ll fit the stub:

    Thumbwheel holder - fit model
    Thumbwheel holder – fit model

    And then I printed four so I could pick the best one. The horizontal hole and notch come out surprisingly well, although this thing is right down around the minimum size you’d want to print:

    Thumbwheel holders - as built
    Thumbwheel holders – as built

    The 1-72 screw threads itself into the hole without a nut; I simply match-drilled a hole in the stub under the hole in the part. Of course, that means I must fit the next part to that hole…

    I really wish I was printing with, say, black filament. Even dark green would be better. Heck, I’d go with yellow, but if I don’t get rid of this pink stuff I’ll have it forever.

    The OpenSCAD source code:

    // Digital Caliper thumbwheel holder
    // Ed Nisley - KE4ZNU - Apr 2011
    
    Build = true;						// set true to generate buildable layout
    
    $fn = 8;							// default for holes
    
    // Extrusion values
    // Use 0 extra shells behind the perimeter
    //     2 solid shells on the top & bottom
    
    ThreadThickness = 0.33;
    ThreadWT = 1.75;
    ThreadWidth = ThreadThickness * ThreadWT;
    
    HoleWindage = ThreadWidth;			// enlarge hole dia by extrusion width
    
    Protrusion = 0.1;					// extend holes beyond surfaces for visibility
    
    // Caliper dimensions
    
    WheelDia = 10.0;					// thumbwheel OD
    WheelRadius = WheelDia/2;
    WheelMargin = 1.0;					// space around wheel
    WheelRimThick = 2.5;				// subtract from repair block
    
    ShaftDia = 2.90;					// axle between knurled wheels
    ShaftRadius = ShaftDia/2;
    ShaftLength = 2.7;
    ShaftRetainer = 3.0;				// thickness around shaft
    
    StubThick = 2.45;					// stub of holder on caliper head
    StubLength = 5.0;					// toward caliper head
    StubHeight = 6.0;					// perpendicular to caliper head
    StubClearance = 0.5;				// distance to caliper frame
    
    FrameLength = 50;					// for display only
    FrameHeight = 16.0;
    FrameThick = 3.0;
    
    // Repart part dimensions
    
    ForkLength = StubLength - StubClearance;	// toward caliper head around stub
    ForkHeight = StubHeight;			// perpendicular to caliper head
    ForkGap = 0.2;						// clearance to stub on all sides
    ForkBladeThick = 2.0;				// on each side of stub
    
    ShaftClearance = 0.0;				// Additional clearance around shaft
    ShaftOffset = 8.5;					// Shaft center to stub
    
    BoltHoleDia = 1.8;					// 1-72 machine screw, more or less
    BoltHoleRadius = BoltHoleDia/2;
    
    // Convenient sizes and shapes
    
    FrameBlock = [FrameLength,FrameThick,FrameHeight];
    
    StubBlock = [StubLength,StubThick,StubHeight];
    StubMargin = [ForkGap,2*ForkGap,ForkGap];
    
    RepairBlockLength = ForkLength + ShaftOffset;
    RepairBlockThick = 2*ForkBladeThick + StubThick;
    RepairBlockHeight = WheelRadius + ShaftRadius + ShaftRetainer;
    
    RepairBlock = [RepairBlockLength,RepairBlockThick,RepairBlockHeight];
    
    // Caliper parts to show how repair fits in
    
    module CaliperParts() {
      union() {
    	translate([0,0,-(StubClearance + FrameHeight/2)])
    	  cube(FrameBlock,center=true);
    	translate([-(StubLength/2 + ShaftOffset),0,(StubHeight/2)])
    	  cube(StubBlock,center=true);
      }
    }
    
    // Repair block with origin below wheel shaft
    
    module RepairPart() {
    
      difference() {
    
    // Body of repair part
    	union() {
    	  translate([-RepairBlockLength/2,0,RepairBlockHeight/2])
    		cube(RepairBlock,center=true);
    	  translate([0,0,WheelRadius])
    		rotate([90,0,0])
    		  cylinder(r=ShaftRadius+ShaftRetainer,h=ShaftLength,center=true,$fn=12);
    	}
    
    // wheels
    	translate([0,(ShaftLength + WheelRimThick)/2,WheelRadius])
    	  rotate([90,0,0])
    		cylinder(r=(WheelRadius + WheelMargin),h=WheelRimThick,center=true,$fn=16);
    	translate([-(WheelRadius + WheelMargin)/2,
    			  (ShaftLength + WheelRimThick)/2,
    			  (WheelRadius - Protrusion)/2])
    	  cube([(WheelRadius + WheelMargin),WheelRimThick,(WheelRadius + Protrusion)],
    			center=true);
    	translate([0,-(ShaftLength + WheelRimThick)/2,WheelRadius])
    	  rotate([90,0,0])
    		cylinder(r=(WheelRadius + WheelMargin),h=WheelRimThick,center=true,$fn=16);
    	translate([-(WheelRadius + WheelMargin)/2,
    			  -(ShaftLength + WheelRimThick)/2,
    			  (WheelRadius - Protrusion)/2])
    	  cube([(WheelRadius + WheelMargin),WheelRimThick,(WheelRadius + Protrusion)],
    			center=true);
    
    // axle clearance
    	translate([0,0,WheelRadius])
    	  rotate([90,0,0])
    		cylinder(r=ShaftRadius,h=(ShaftLength + 2*Protrusion),center=true);
    	translate([0,0,(WheelRadius - Protrusion)/2])
    	  cube([ShaftDia,(ShaftLength + 2*Protrusion),(WheelRadius + Protrusion)],
    		   center=true);
    
    // stub of previous wheel holder
    	translate([-(ShaftOffset + (ForkLength - ForkGap)/2 + Protrusion),
    			  0,
    			  (StubHeight + ForkGap - Protrusion)/2])
    	  cube([(ForkLength + ForkGap + Protrusion),
    		   (StubThick + 2*ForkGap),
    		   (StubHeight + ForkGap + Protrusion)],
    		   center=true);
    
    // mounting screw hole
    	translate([-(ShaftOffset + ForkLength/2),0,StubHeight/2])
    	  rotate([90,0,0])
    		cylinder(r=(BoltHoleDia + HoleWindage)/2,
    				 h=(RepairBlockThick + 2*Protrusion),
    				 center=true,$fn=6);
      }
    }
    
    // Build it!
    
    if (!Build) {
      CaliperParts();
      RepairPart();
    }
    
    if (Build) {
      translate([-RepairBlockLength/2,0,RepairBlockHeight])
    	rotate([0,180,0])
    	  RepairPart();
    }
    
  • Un-milling Some Slots

    The first aluminum build plates had to fit around the gimcrackery atop my tweaked ABP: two solderless grounding lugs and a lump of Wire Glue. The new HBP setup put the grounding lug below the fixed plate and did away with the lump, so the removable plate could have five holes and a wiper cutout without any fancy trimming.

    I’d squared up three plates and machined only two for the ABP, so I had one plate that just needed drilling. Rather than machining two new plates, I filled the cutouts on the old plates with JB Industro Weld epoxy, flycut the excess, and drilled new holes.

    Flycut and drilled epoxy fill
    Flycut and drilled epoxy fill

    This was straightforward manual CNC: get the plate square on the table, touch off the plate edges, and then drill the holes in two steps.

    If those thin epoxy webs break off the outside of the holes, it’s not the end of the world: the plates won’t go anywhere because they’re indexed by the holes on the other side.

    Memo to Self: Next time, make a fixture to hold the plates relative to a starting hole and eliminate all the tedious alignment steps.

  • Leach Field Pipe Plug

    A bit of laparoscopic surgery on the front yard unearthed the drain line from the septic tank to the leach field. Drilling a 1-1/2 inch hole in the top of the pipe revealed that it’s 3/4 full of sludge, which is a Bad Thing: the leach field should get only liquid from the middle of the septic tank.

    On the other paw, the house was built a bit over half a century ago and the records that came with it showed the tank was pumped two decades before we arrived. So it goes.

    Rather than leave the hole in the pipe open until we get a new drain field, I built a plug that fit the 5 inch OD drain pipe and the 1-1/2 inch drilled hole.

    Plug on aluminum plate
    Plug on aluminum plate

    The aluminum build plate produces a smooth surface that’s entirely irrelevant on this part. The ABS film covers the blind hole in the middle that will serve as a drill guide in the unlikely event I must remove the plug.

    Pipe plug - bottom view
    Pipe plug – bottom view

    I’ll admit it looks a bit out of place down there, though. I slobbered urethane adhesive around the central pillar and across the saddle, plugged it in, put a rock on top, and the adhesive foamed into a sludge-tight seal. At least I hope that’s how it worked out; I’m not going to pop it off just to find out.

    Pipe plug in position
    Pipe plug in position

    The solid model looks about like you’d expect:

    Leach Pipe Plug Solid model
    Leach Pipe Plug Solid model

    Never let it be said that a Thing-O-Matic lacks practical applications…

    The OpenSCAD source:

    // Plug for septic drain field pipe hole
    // Ed Nisley - KE4ZNU - Mar 2011
    
    include </home/ed/Thing-O-Matic/lib/MCAD/units.scad>
    
    // Extrusion values
    
    ThreadThickness = 0.33;
    ThreadWT = 1.75;
    ThreadWidth = ThreadThickness * ThreadWT;
    
    HoleWindage = ThreadWidth;			// enlarge hole dia by extrusion width
    
    // Pipe dimensions
    
    PipeOD = 5 * inch;					// which is *4* inch cast iron pipe
    PipeWall = (3/8) * inch;
    PipeID = PipeOD - 2*PipeWall;
    
    PipeLength = 2*PipeOD;				// for ease of viewing
    
    HoleDia = (1 + 1/2) * inch;			// from a 1-1/2 inch hole saw
    
    PatchOD = 2*HoleDia;
    PatchThick = 10.0;					// a burly patch for a big old pipe
    
    DrillDia = (1/4) * inch;			// pilot hole for removal, just in case
    
    // Convenience settings
    
    Protrusion = 0.1;					// extend holes beyond surfaces for visibility
    
    // The central plug
    
    module PlugBody() {
      difference() {
    	cylinder(r=HoleDia/2,h=(PipeOD/2 + PatchThick));
    	rotate([90,90,0])
    	  cylinder(r=PipeID/2,h=PipeLength,center=true);
      }
    }
    
    // The shell on the pipe
    
    module PlugShell() {
      difference() {
    	cylinder(r=PatchOD/2,h=(PipeOD/2 + PatchThick));
    	rotate([90,90,0])
    	  cylinder(r=PipeOD/2,h=PipeLength,center=true);
      }
    }
    
    // Build it, with rotate/translate to put it flat on its back
    
    rotate([0,180,0])
      translate([0,0,-(PipeOD/2 + PatchThick)])
    	difference() {
    	  union() {
    		PlugBody();
    		PlugShell();
    	  }
    	  translate([0,0,PipeOD/2])
    		cylinder(r=DrillDia/2,h=(PatchThick + Protrusion));
    	}
    
  • ABP Connector Chafing

    At one point along the way, the Control Panel reported the ABP temperature as 1024 °C, which seemed excessive. A bit of poking around revealed this situation on the ABP connector:

    Overheated and chafed ABP connector
    Overheated and chafed ABP connector

    The connector just barely clears the top of the X axis homing switch board and the loose wires tended to rub on the top of the cable connector. I’d been meaning to fix that for a while, but now I had a real reason.

    A bit of soldering and some self-vulcanizing tape later:

    Strain relief on ABP connector
    Strain relief on ABP connector

    Also: notice the discoloration on the connector shell surrounding the Black wire? That’s the contact leading back to the MOSFET from the platform heater: a single pin carrying far more than its rated current. The shell around the contact on the Red wire (which carries the same current) isn’t discolored, which suggests the Black connector is a bit loose / poorly crimped / whatever. It looked OK to me, so I left it alone.

    While I had the cable on the bench, I added a set of those right-angle pins to eliminate the risk of loose wire ends getting into the wrong places.

    Terminated ABP cable
    Terminated ABP cable
  • Vacuum Cleaner Hose Disintegration

    The hose on our aging Samsung Quiet Jet (used to be a Quiet Storm, but I suspect they lost a trademark fight) vacuum cleaner has been a constant nuisance. Most recently, the end toward the handle began splitting:

    Splitting vacuum hose
    Splitting vacuum hose

    The fix consisted of a tight duct tape wrap, which has absolutely nothing to recommend it other than expediency.

    When the same thing happened on the other end, I sealed it up and added a length of husky heatshrink tubing.

    Strain relief on vacuum hose
    Strain relief on vacuum hose

    The flared end isn’t particularly decorative, but it serves to reduce the strain on the hose. Alas, there’s no practical way to do the same thing on the handle end.

    The replacement cost for the hose roughly equals a new vacuum, so when we run out of bags, this one gets harvested for the shop’s Parts Heap.

  • Monthly Aphorism: On Improvements

    • You can rub and you can rub, but you can’t shine shit.

    Eks tells me that was one of his grandmother’s favorite sayings.

    He introduced me to the concept of a “used-car polish”: high shine over deep scratches. Sometimes, that’s exactly what the job requires.

    There’s also the notion of making a silk purse from a sow’s ear (attributed variously to Jonathan Swift and Anon), which someone actually did: render the ear down to a gel, extrude thread, loom cloth, and sew up a purse. Yes, it can be done, but there’s a practical limit in there somewhere.

    Contrary to what you might think, this has nothing to do with a certain Thing-O-Matic. A bit of laparoscopic surgery on our front yard just revealed that our septic leach field has filled with gunk; it’s 56 years old and hadn’t been pumped for two decades before we bought the place. The next week or two should be interesting: I can do the diagnosis, but I can’t handle this repair.