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.

Category: Machine Shop

Mechanical widgetry

  • NY SAFE Act Magazine Capacity: Overvew

    The NY SAFE Act limits the capacity of firearm magazines, as defined in NY Penal Law Article 265.00 Section 23  (reformatted for readability):

    23. “Large capacity ammunition feeding device” means a magazine, belt, drum, feed strip, or similar device, that
    (a) has a capacity of, or that can be readily restored or converted to accept, more than ten rounds of ammunition, or
    * (b) contains more than seven rounds of ammunition, or
    (c) is obtained after the effective date of the chapter of the laws of two thousand thirteen which amended this subdivision and has a capacity of, or that can be readily restored or converted to accept, more than seven rounds of ammunition; provided, however, that such term does not include an attached tubular device designed to accept, and capable of operating only with, .22 caliber rimfire ammunition or a feeding device that is a curio or relic.

    * NB Suspended and NOT Effective per ch 1/2013 § 58, as amended by ch 57/2013 Pt. FF § 4

    The official NY SAFE Act website has more information, as does A Guide to the New York Safe Act prepared in September by the NY State Police Office of Division Counsel.

    NY PL 265.36 states:

    § 265.36 Unlawful possession of a large capacity ammunition feeding device.

    It shall be unlawful for a person to knowingly possess a large capacity ammunition feeding device manufactured before September thirteenth, nineteen hundred ninety-four, and if such person lawfully possessed such large capacity feeding device before the effective date of the chapter of the laws of two thousand thirteen which added this section, that has a capacity of, or that can be readily restored or converted to accept, more than ten rounds of ammunition.

    An individual who has a reasonable belief that such device is of such a character that it may lawfully be possessed and who surrenders or lawfully disposes of such device within thirty days of being notified by law enforcement or county licensing officials that such possession is unlawful shall not be guilty of this offense. It shall be a rebuttable presumption that such person knows that such large capacity ammunition feeding device may not be lawfully possessed if he or she has been contacted by law enforcement or county licensing officials and informed that such device may not be lawfully possessed.

    Unlawful possession of a large capacity ammunition feeding device is a Class A misdemeanor.

    A Class A misdemeanor sets you up for a kilobuck fine or a year in jail.

    NY PL 265.37 states:

    § 265.37 Unlawful possession of certain ammunition feeding devices.

    It shall be unlawful for a person to knowingly possess an ammunition feeding device where such device contains more than seven rounds of ammunition.

    If such device containing more than seven rounds of ammunition is possessed within the home of the possessor, the person so possessing the device shall, for a first offense, be guilty of a violation and subject to a fine of two hundred dollars, and for each subsequent offense, be guilty of a class B misdemeanor and subject to a fine of two hundred dollars and a term of up to three months imprisonment.

    If such device containing more than seven rounds of ammunition is possessed in any location other than the home of the possessor, the person so possessing the device shall, for a first offense, be guilty of a class B misdemeanor and subject to a fine of two hundred dollars and a term of up to six months imprisonment, and for each subsequent offense, be guilty of a class A misdemeanor.

    I AM NOT A LAWYER.

    As I understand those sections, a large capacity feeding device, as defined by PL 265.00 Section 23, either:

    • Has a capacity of more than ten rounds or
    • “[C]an be readily restored or converted to accept more than ten rounds”.

    It appears to be the intent of the law that an existing large capacity feeding device can be converted to a legal, non-large capacity feeding device by modifying it in such a way that its new 10 round capacity cannot be “readily restored or converted” to the original large capacity.

    There is no definition of “readily”.

    The NYSP Guide uses a different terminology:

    … those who possess these devices have one year from the enactment of the Safe Act to transfer, dispose of, or permanently modify the magazines to a capacity of 10 rounds or less.

    There is no definition of “permanently”.

    However, there’s that enigmatic asterisk and footnote in PL265.00 Section 23.

  • Dummy 9 mm Luger Cartridge: 100 μm Layers

    As you might expect, changing the layer thickness to 0.1 mm = 100 μm dramatically improves the appearance of the dummy 9 mm Luger bullet on the left, compared to the 0.25 mm = 250 μm layers on the right:

    Dummy 9 mm Luger cartridges - 0.1 mm layer - overview
    Dummy 9 mm Luger cartridges – 0.1 mm layer – overview

    The inside edge of the translucent skirt around the quartet measured 90 to 110 μm, so the layer height is spot on:

    Dummy 9 mm Luger bullets - 0.1 mm layer - overhead on platform
    Dummy 9 mm Luger bullets – 0.1 mm layer – overhead on platform

    That required no adjustments to the M2 at all; It Just Works. Admittedly, that’s with a custom platform and firm supports replacing the springs, plus better Z-axis homing, but the overall structure was fine to start with.

    I used the same Slic3r settings as before, with the only change being the layer thickness. Letting it pick the layer width might produce better results, but a 0.35 mm nozzle won’t go much narrower than 0.40 mm anyway.

    A closer look at the bullet show the thinner layers provide a better rendition of the stretched sphere forming the nose; it’s less pointy than the one assembled from thicker layers:

    Dummy 9 mm Luger bullets - 0.1 mm layer - side
    Dummy 9 mm Luger bullets – 0.1 mm layer – side

    The nose closes better with thinner layers:

    Dummy 9 mm Luger bullets - 0.1 mm layer - nose
    Dummy 9 mm Luger bullets – 0.1 mm layer – nose

    None of that really matters for this application, but it’s a useful data point.

    The downside is that printing with thinner layers requires more time: a single bullet (of 16) requires 2.2 minutes at 250 μm and (of 4) 9 minutes at 100 μm. The simple ratio of layer thicknesses predicts a factor of 2.5, not 4, but the skirt requires a larger fraction of the total time. The estimated time for a 4×4 array at 100 μm comes out at 5.2 minutes each, a factor of 2.4, which is close enough.

    Although 100 μm certainly looks better, it doesn’t really improve anything for most of the blocky stuff I make…

  • Dummy 9 mm Luger Cartridge

    An interesting project requires a handful of 9 mm Luger (aka 9 mm NATO) dummy cartridges with real brass. You can buy exact form / fit / weight dummies or plastic training rounds, but these will suit my simple needs:

    Dummy 9 mm Luger cartridges
    Dummy 9 mm Luger cartridges

    That’s a snap cap on the left and a real 9 mm Luger cartridge on the right. The holes in the dummy brass indicate that they are absolutely, positively, unquestionably not loaded cartridges.

    Start by drilling a 1/8 inch hole in the side of each unfired, primerless case:

    Dummy 9 mm Luger - drilling case
    Dummy 9 mm Luger – drilling case

    I set up the chuck on the rotary table, thinking I might drill three holes in each cartridge, but came to my senses. It’s lined up by eye, flush with the end of the jaws, and the hole is just above the inside of the base.

    The solid model has the same overall length and proportion as a 115 grain FMJ bullet, but doesn’t match the proper ogive or base diameter. Basically, I stretched a 9 mm sphere and stuck it atop a slightly tapered base cylinder:

    Dummy 9 mm Luger bullet - solid model
    Dummy 9 mm Luger bullet – solid model

    For reasons I don’t profess to understand, the sphere has a slightly different diameter at its equator than the top of the cylinder, even though they’re both the same BulletOD diameter with the same number of faces. Fortunately, that didn’t affect the final results.

    Print up a handful of the things:

    Dummy 9 mm Luger bullets - on platform
    Dummy 9 mm Luger bullets – on platform

    The shadow from the flash makes the bases look slightly fatter than they really are.

    Using a thinner layer would look better in this orientation. They’d definitely look better if they were split, printed with the long axis parallel to the plate, and glued together, as the grain would run lengthwise; I’m not sure there’s enough room for alignment pins, though.

    At this diameter and number of faces, the M2 produces almost perfectly accurate dimensions, so the bullets press-fit just like you’d expect. They’re twisted into a dab of urethane glue inside the brass that foams just enough to hold them place.

    Rather than use a real seating die, I deployed a closed chuck on the drill press. The trick is to set the depth stop to produce slightly too-long cartridges, then shim the platform without changing the stop and seat the bullet to the proper depth:

    Dummy 9 mm Luger - seating bullet
    Dummy 9 mm Luger – seating bullet

    The OAL tolerance for various 9 mm Luger cartridges seems to range from 1.08 inch to 1.17 inch, so anything in that range should be fine. I used 1.10 inch.

    These are not intended for firing. You could fire them with just a primer (in a non-drilled case) and (maybe) not melt or shatter the plastic, but they’re slightly larger than the nominal 8.82 mm land diameter and won’t obturate or spin-stabilize worth diddly: expect short range and keyholing.

    The sectional density is a whopping 0.008, should you keep track of such things: 0.47 gram = 7.2 grain. Note that the US small arms definition of sectional density has units of pound/inch2, not the pound/foot2 you’ll find right next to values computed using inches; the magic number 1/7000 just converts from grains to pounds. In the rest of the (metric) world, it’s entirely different.

    The OpenSCAD source code:

    // Dummy 9mm Luger bullet
    // Ed Nisley KE4ZNU November 2013
    
    //----------------------
    // Dimensions
    
    BulletOD = 9.05;			// main diameter
    BulletBaseOD = 8.8;			//  ... easy insertion
    
    BulletOAL = 14.0;			// overall length
    BaseLength = 8.0;			// cylindrical base length
    
    NoseLength = BulletOAL - BaseLength;
    
    NumSides = 8*4;
    
    //----------------------
    // Useful routines
    
    module ShowPegGrid(Space = 10.0,Size = 1.0) {
    
      Range = floor(50 / Space);
    
    	for (x=[-Range:Range])
    	  for (y=[-Range:Range])
    		translate([x*Space,y*Space,Size/2])
    		  %cube(Size,center=true);
    }
    
    //-------------------
    // Build it...
    
    ShowPegGrid();
    
    color("Orange")
    cylinder(r1=BulletBaseOD/2,r2=BulletOD/2,h=BaseLength,$fn=NumSides);
    
    color("DarkOrange")
    translate([0,0,BaseLength])
    	resize([0,0,2*NoseLength])
    		sphere(BulletOD/2,$fn=NumSides);
    
  • Shagbark Hickory Nut Season

    Mary managed to outcompete the local squirrels to the tune of 10 pounds of Shagbark Hickory nuts, which we’ve been enjoying after supper. The thickly armored nuts shrug off ordinary nutcrackers, so we deploy heavy weaponry: good old 10WR Vise-Grip pliers:

    Cracking nickory nuts with a Vise-Grip
    Cracking nickory nuts with a Vise-Grip

    She describes the process better than I; for what it’s worth, I work on one nut at a time. We both celebrate when a shell releases its nut with minimal damage; most often, we extract fragments into a pile like the one shown. I can process half a dozen nuts before deciding I’ve had enough.

    I’d be in favor of a genetic modification producing a fluorescent green shell, because overlooking a minute piece of shell in that pile of nutmeat is a Very Bad Thing…

    Some Vise-Grip history may be of interest.

  • Recoil Starter Lube

    This being leaf season, I just discovered that the recoil starter on the hulking 8 HP tangential leaf blower retracts very, very slowly. Having already started the engine, I did one pass around the yard with the pull cord dangling over the handlebar, but that’s not to be tolerated.

    The starter mounts on the back of the motor with five screws, so removing it posed no problem at all. Removing the central screw released the friction clutch that helps extend the pawls, exposing the central boss that’s the combination hold-it-all-together point and gritty bearing for the rope spool:

    Leaf blower recoil starter
    Leaf blower recoil starter

    Pulling the rope turns the spool and extends the pawls that engage the crankshaft. After the motor starts, the pawls retract and none of that stuff moves, so there are no high-speed bearings and not much need for strength.

    I brushed off some of the larger chunks, worked machine oil around the central post, wiped off & lubed the pawls, took the friction clutch apart & lightly lubed it, put everything back together, and the starter now works fine again; there may be too little friction in the clutch, but that’s in the nature of fine tuning.

    The leaf blower Came With The House™ and dates back to the era when Kohler made cast-iron engine blocks. It runs lean on the oxygenated fuel that’s mandated for Dutchess County these days, so it now runs lightly choked.

    Tip: before you yank the rope on a small engine, pull it slowly until the crankshaft stops turning freely, then let the rope retract. That positions the piston at the start of the compression stroke with the valves closed, so your next full-strength yank will do the most good.

  • HP Scope Probe Flange Repair

    Quite some time ago I manage to break the finger flange on one of my scope probes and, what with it being made of an un-glueable engineering plastic, a simple repair job failed quickly. It’s entirely round and a perfect lathe project, but … this is easier:

    HP Scope Probe Flange Repair
    HP Scope Probe Flange Repair

    You can see remnants of that failed repair just below the fracture:

    HP scope probe flanges - repair disk
    HP scope probe flanges – repair disk

    Some epoxy around the rim of the flange, plus filling the missing sector, looks about as grubby as you’d expect:

    HP Scope Probes - rear
    HP Scope Probes – rear

    That’s a tiny zit at about 1 o’clock which came off with fingernail pressure.

    From the business end, it actually looks pretty snappy:

    HP Scope Probes - front
    HP Scope Probes – front

    I’m mildly tempted to preemptively reinforce the other probes…

    The OpenSCAD source code joins two parts with coincident faces, but it worked out OK for once:

    // Tek Scope Probe Flange
    // Ed Nisley KE4ZNU November 2013
    
    //- Extrusion parameters must match reality!
    //  Print with 2 shells and 3 solid layers
    
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    
    HoleWindage = 0.2;
    
    Protrusion = 0.1;			// make holes end cleanly
    
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    
    //----------------------
    // Dimensions
    
    FlangeOD = 16.0;
    FlangeID = 8.75;
    FlangeThick = IntegerMultiple(1.25,ThreadThick);
    
    DiskOD = FlangeOD + 4*ThreadWidth;
    DiskThick = FlangeThick + 4*ThreadThick;
    
    NumSides = 8*4;
    
    //----------------------
    // 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);
    }
    
    module ShowPegGrid(Space = 10.0,Size = 1.0) {
    
      Range = floor(50 / Space);
    
    	for (x=[-Range:Range])
    	  for (y=[-Range:Range])
    		translate([x*Space,y*Space,Size/2])
    		  %cube(Size,center=true);
    
    }
    
    //----------------------
    // Build it
    
    ShowPegGrid();
    
    	difference() {
    		union() {
    			translate([0,0,2*ThreadThick])
    				cylinder(r=DiskOD/2,h=DiskThick,$fn=NumSides);			// main repair part
    			cylinder(r1=(DiskOD - 2*ThreadWidth)/2,r2=DiskOD/2,h=2*ThreadThick,$fn=NumSides);
    		}
    		translate([0,0,(DiskThick - FlangeThick)])				// flange clearance
    			PolyCyl(FlangeOD,2*FlangeThick,NumSides);
    		translate([0,0,-DiskThick/2])
    			PolyCyl(FlangeID,2*DiskThick,NumSides);
    	}
    
  • Improved Alignment Pin Hole for Split 3D Prints

    I’ve been working on an object (more on this later) that requires precise alignment of two parts that capture a nut deep inside. This calls for alignment pins, similar to the ones I used for, say, the Triple-Cylinder Thing:

    Cylinder Thing - rotated
    Cylinder Thing – rotated

    The general idea is to design holes that fit the pins, then locate them at the parting line of the model, where they’re subtracted from the solid and appear in exactly the proper places when the model splits for printing:

    Cylinder Thing - alignment pegs
    Cylinder Thing – alignment pegs

    You slather solvent glue on both halves, jam pins into the holes, slap the parts together, and clamp until cured. Works fine, I use pins all over the place.

    The gotcha of using just a (polygonal) cylinder as the hole: if you glue one end of the pin at a time, a small rim of dissolved plastic may form around the pin at the surface. That can bond the two halves together or prevent them from joining properly after being disassembled.

    Sooo, here’s a new alignment pin hole with a gutter around the pin on both surfaces to capture the glop:

    Alignment pin hole - overview
    Alignment pin hole – overview

    Remember, that’s the negative volume that will hold the pin, not the pin itself!

    Here’s how it works in real plastic, with a 1.75 mm peg glued into one hole with a bit of crud in the gutter:

    Alignment Hole and Pin
    Alignment Hole and Pin

    The secret to making the gutter work: offset the second layer by half the thread width, so that it’s reasonably well supported on the first layer. If you don’t do that, the inner layers simply drop down through the hole and fill the gutter. Even doing that, notice the distortion of the first few layers inside the hole.

    The OpenSCAD source code looks about like you’d expect:

    //-- Locating pin hole with glue recess
    
    module LocatingPin(Dia=PinOD,Len=5.00) {
    
    	translate([0,0,-ThreadThick])
    		PolyCyl((Dia + 2*ThreadWidth),2*ThreadThick,4);
    
    	translate([0,0,-2*ThreadThick])
    		PolyCyl((Dia + 1*ThreadWidth),4*ThreadThick,4);
    
    	translate([0,0,-(Len/2 + ThreadThick)])
    		PolyCyl(Dia,(Len + 2*ThreadThick),4);
    }
    

    Ideally, the pin length should extend at least two diameters into each side of the object, but you can feed in whatever you need to make it come out right.

    The PolyCyl() routine produces a low-vertex-count polygon that circumscribes the nominal diameter, which is what you need for vertical holes in 3D printed objects:

    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);
    }
    

    Tip o’ the cycling helmet to nophead for figuring out the polyhole idea and explaining why they’re needed…