Friday, March 20, 2020

Improving a Laptop Keyboard with Custom Keycap Veneers

I admit that I'm picky about the keyboards I use.  I'm accustomed to the general ergonomics of classic keyboards and have become spoiled by a Model M for the last 20 years.  While I can hardly expect to get a comparable experience from a laptop keyboard, I do feel that some desirable aspects of design are painstakingly avoided for the sake of petty fashion.  The keyboard on my laptop has been one of the most frustrating I have ever attempted to use.  At some point, I decided that there must be something I could do to turn it into a more comfortable and efficient keyboard.

Since full-size keyboards are where I find the most comfort, perhaps it's worth describing what aspects of their design I feel are important to address in my efforts.  While that discussion is likely going to suggest a mechanical keyboard as a central ideal, I don't think that any particular mechanism is as important as what properties it can impart to the product.  Bear in mind that much of this is merely my preference.


An old XT keyboard, showing cylindrical crowns and overall contour.
The most commonly noted aspects in which laptop and typical desktop keyboards differ have to do with the key stroke.  The mechanical characteristics of the key stroke are primarily a comfort concern, though they may also provide forms of feedback which promote speed -- or at least confidence in motion at speed. Hysteretic mechanisms can provide tactile feedback, higher actuation force makes the motions assertive, and long stroke length allows for natural follow-through.  While users of discrete mechanical keyboards may have a broad range of stroke characteristics to explore, it's reasonable to expect that any practical laptop keyboard is going to necessarily have a restricted range of possible characteristics.

While an unfamiliar laptop key layout may certainly conflict with motor memory, even a familiar layout becomes difficult to use without some form of orienting information.  It is the physical geometry of the keyboard which provides spatial cues to reinforce and maintain the accuracy of learned motions when moving from key to key.  Consider a similar sensorimotor task; it's easy to walk through a familiar room in darkness if you can occasionally touch known surfaces along the way.  Doing the same without any references is an exercise in error accumulation.  In terms of a continuous process, these forms of feedback facilitate the error determination necessary for error correction to be possible; they allow the control loop to be closed. 

The most obvious and universal orienting features are identifier bumps.  They are usually only located on the F and J keys, as well as the numpad 5 key (on keyboards with a numpad).  Bumps are one of the few physical features of keycaps that people can easily customize.  While self-adhesive bumps can be bought for this purpose, other methods such as glue are common.  Custom bumps are especially useful in emphasizing keys associated with certain keyboard commands.

While the typical keyboard bumps are a mechanism to orient hand position within a general area of the keyboard, it is the feedback provided by the shape of the keycaps and the overall contour of the keyboard itself which reinforces the discreteness of all keys.  The center of each key can be emphasized by making the crown of the keycap slightly concave, or by making the crown smaller than the pitch distance between key centers.  Providing strong centering cues helps maintain spatial awareness and helps to reduce the tendency for edge strikes and two-key strikes.  Many keyboards have the rows laid out in either a curved or linear stairstep fashion, a feature which both adds to the distinctness of the rows and aids in comfortably reaching the upper rows.

You could at least pretend that ergonomics matter.
The keyboard on this old laptop (Acer 7736z) had none of that going for it. Being a laptop, the keyboard is flat (planar); that much is a necessity, though it isn't exactly helping.  The level of the keyboard is actually slightly lower than the body of the laptop, which makes the hand positions uncomfortably low, turning the overly-sensitve trackpad into an even worse nuisance.  The keystroke is light, short, and ambiguous.  Every keystroke is like the experience of stomping at the top of a long flight of stairs when you thought there was still one more step to go. The keycaps are perfectly flat, with no crown and no functional centering cues.  The key identifiers (bumps) are tiny and barely noticeable with dry hands.  Just trying to find home row after using the mouse is a tedious routine of sliding fingers around in a broad expanse of flat slippery plastic, all the while trying to maintain the lightest of touch to avoid errant keystrokes.  Once my hands move away from a known position, the lack of any discernable spatial references is immediately disorienting.  Combine that with the lack of feedback, and the whole experience becomes both tedious and precarious, like trying to touch-type with chopsticks.  Keyboard commands and programming both involve broader reaching motions than writing in simple prose, and are the most tiring of all.  The only way a keyboard could be ergonomically worse is if it were entirely featureless and truly devoid of feedback, like a touchscreen OSK or projection keyboard. 

In all the time I've spent using this laptop, nearly every minute has been steeped in the thought that there must be a way to improve its keyboard.  As per the mentioned limits of practicality, there is little I can do to alter the keystroke or overall contour.  While I can't alter the layout, perhaps I can add some extra identifiers.  Adding various forms of spatial cues to the keycaps should be possible, though there are some limitations.  Of course, there's the limitation of the distance between the keyboard and screen when the laptop is closed.  It might also be desirable to make sure any alterations are removable; after all, this is likely to require some experimentation. 

The First Attempt at a Solution

My first thought was to use adhesive to add identifier bumps to certain keys.  After some thought, I came to the prior conclusions regarding more general spatial awareness reinforcement, ultimately deciding that a centering mark of some sort should be added to the most-used keys.  My thought was to simulate the effect of a concave keycap crown by adding a circular ridge on each key.  I could add ancillary bumps or ridges either for location, identification, or for avoidance. 

While a finalized design could be implemented using epoxy, I opted to prototype my ideas using a conformal coating made from clear Dap Sidewinder thinned with xylene.  This can be thinned to an appropriate consistency and provides a smooth, self-leveling finish.  It can also be completely removed once dry by simply redissolving in xylene; though in this case, sound material could be picked/peeled off cleanly without solvent.  It may also be possible to use something like E6000 if thinned appropriately. 

I applied the coating with a 1mL syringe and a 25ga dispensing needle bent to a comfortable angle.  There are a couple of important things that need to be considered in that effort.  Dispensing a viscous material through a fine needle requires a lot of pressure.  The pressure requirements can be lowered by reducing the viscosity or by using a shorter needle or one of larger diameter.  I chose a 1mL syringe because it allowed me to generate relatively high pressures, but care must be taken to avoid making a mess on the keyboard.  With firm hand strength, a 1mL syringe can produce upwards of 200 PSI -- more than enough to eject the needle and blurt a wad of glue across your work.  If you can use a syringe with a luer-lok type spigot, do so.  If all you can get are syringes with plain tapered spigots, pay attention to keep the taper clean and tight.  Practice first.

One also should consider the materials used.  Many adhesives and coatings will degrade when in constant contact with skin oils.  While I chose this coating for prototyping, it is wholly unsuited for long-term use.  After a week or so, it will begin to become sticky and will eventually get smeared everywhere.  Other products like E6000 will likely do the same on a longer timeframe, and I would expect the same of almost every common adhesive other than epoxy.

While I found it helpful to have more noticeable identifier bumps, the circular ridges left me relatively disappointed.  The rings were certainly better than nothing, but they were still a poor simulant of a key crown.  The fact that the keycap is the same height inside and outside the ring makes them fairly ineffective at suggesting a boundary.  With this effect in mind and considering the low height of the glue ridge, the ring diameter needed to be fairly small to present an unambiguous shape to the fingertip.  The smaller the rings are, the more awkward they feel, and the more often they're escaped. 

Placing my hands in the rings on home row felt awkward -- as if they're too straight.  Certainly, the wear marks on my main keyboard suggest that my fingertips naturally rest in an arc across the keys.  It followed that the landing points were generally centered laterally, but otherwise varied depending on what was most comfortable for a given finger.  I switched the circular glue rings out for elongated rectangular glue rings and noted a marginal improvement.  I felt that it was ultimately impractical to achieve much more with such a low-profile method. 

The Development of Keycap Veneers

Finding myself idle on my laptop away from home, I dared to spend some time on what I'd presumed would surely be a huge waste of time.  I figured I'd whip up a parametric model for 3D-printed keycaps.  The idea was to print some caps (if they would print flat and thin), clean them up (easier said than done), and glue them like veneers on top of the existing keys.  The modelling was done in OpenSCAD, a simple and enjoyable script-based parametric 3D CAD tool.  I conjured up several different variations on crown geometry, printing and testing along the way. 

// //////////////////////////////////////////////////////
// keycap veneers for shitty flat laptop keyboards

// cylinder cuts only strongly enforce x-positioning
// this allows fingertips to rest in a more natural arc across home row
// and may be more comfortable on keys which require more reaching or are otherwise habitually struck off-center
// they're also easier to make smooth (easier to print without fuzz, also easier to scrape/sand by hand)
// spherical cuts reinforce y-pos more than cylinder cuts do (important on flat kb)
// elliptical cuts are a compromise especially suited to flat profile kb

// proportions aren't fixed. some things require manual adjusting

// //////////////////////////////////////////////////////
// RENDERING & MULTIPART LAYOUT
nf=100;   // facet number (~50 for speed; ~200 for printing)
Nx=4;    // number of caps to tile along X-axis
Ny=2;    // number of caps to tile along Y-axis
tilegap=2;  // gap between tiles

// //////////////////////////////////////////////////////
// BASIC KEYCAP GEOMETRY
h=17;      // keycap height (in key plane)
w=17;    // keycap width (in key plane)
th=1.7;    // maximum cap thickness (limited by kb-screen gap)
th_min=0.3;  // minimum cap thickness (limited by print strength)
draftx=45;  // draft angle (vertical taper on R,L faces)
drafty=45;  // draft angle (vertical taper on T,B faces)
cr=3;     // corner radius 

// //////////////////////////////////////////////////////
// PRIMARY RELIEF CUTS
// sphere & cylinder mimic legacy alpha key designs 
// lcylinder is the transverse version of 'cylinder', for wide keys
// wcylinder is a double-cylindrical hull, for wide keys
// sausage is a double-spherical hull, for wide/tall keys
// ysausage is the same as 'sausage', but each sphere location can be independently offset
// bumps is a series of spherical bumps (used as an avoidance indicator) 
// using 'none' will produce a flat keycap
style="sphere";

// these parameters may need tweaked when geometry is changed significantly
drc=20;     // relief cut radius for cylinder styles
drs=20;     // relief cut radius for sphere & sausage styles
// the following options only apply to spherical cuts
osx=0;     // offset x
osy=0;     // offset y
osz=0;     // offset z
scaley=1.3;   // stretch factor (elliptical cut)
// the following options only apply to ysausage cuts
os1=-.5;     // y-offset for top sphere
os2=-3;     // y-offset for bottom sphere
// the following options only apply to 'bumps'
brad=1;     // bump radius
bdepth=0.7;   // bump depth
blayout=[3,4];  // number of bumps [x,y]

// //////////////////////////////////////////////////////
// ADDITIONAL FEATURES
// bevel produces a single beveled edge (e.g. for bottom-row keys)
// multiple bevels can be specified (e.g. ["top","bottom"])
bevel="none";   // bottom top left right or none
bevangle=10;  // angle of beveled face
bevhos=0.6;   // height offset of bottom edge of bevel

// cuts can be made asymmetric so that a single cut spans multiple keys
// this allows certain keys to be grouped by touch (e.g. groups of four F-keys)
lowside="none";  // right left both or none

// identifier position may be in the center or bottom edge
identifier="none";  // center edge or none
idw=0.5;   // identifier width
idl=5;     // identifier length
idh=0.95;   // identifier height WRT cap height (used for 'edge')
idhc=0.5;   // height used for "center"


// //////////////////////////////////////////////////////
// //////////////////////////////////////////////////////
// THE MAGIC

module cap(){
 color("dimgray")
 render(){
  linear_extrude(height=th,scale=[1-2*th*tan(drafty)/w,1-2*th*tan(drafty)/h]){
   hull(){
    translate([(w/2-cr),(h/2-cr),0])
     circle(r=cr,center=true,$fn=nf/5);
    translate([-(w/2-cr),-(h/2-cr),0])
     circle(r=cr,center=true,$fn=nf/5);
    translate([(w/2-cr),-(h/2-cr),0])
     circle(r=cr,center=true,$fn=nf/5);
    translate([-(w/2-cr),(h/2-cr),0])
     circle(r=cr,center=true,$fn=nf/5);
   }
  }
    }
}

module relief_bumps(){
 render(){
   difference(){
    translate([-0.6*w,-0.6*h,th-bdepth])
     cube(1.2*[w,h,brad]);
    union(){
     for (m=[1:blayout[1]]){
      for (n=[1:blayout[0]]){
       translate([-(w-w/blayout[0])/2+w/blayout[0]*(n-1),-(h-h/blayout[1])/2+h/blayout[1]*(m-1),th-brad])
        sphere(r=brad,center=true,$fn=nf/5); 
      }
     }
    }
   }
 }
}

module relief_spherical(){
 render(){
  translate([osx,osy,drs+th_min+osz]){
   sphere(r=drs,center=true,$fn=nf);
   if (lowside=="right" || lowside=="both")
    translate([h/2+osx,osy,0])
     rotate([90,0,90])
      cylinder(r=drs,h=h,center=true,$fn=nf);
   if (lowside=="left" || lowside=="both")
    translate([-h/2+osx,osy,0])
     rotate([90,0,90])
      cylinder(r=drs,h=h,center=true,$fn=nf);
  }
 }
}

module relief_cylindrical(){
 render(){
  translate([0,0,drc+th_min]){
   rotate([90,0,0])
    cylinder(r=drc,h=h+1,center=true,$fn=nf);
   if (lowside=="right" || lowside=="both")
    translate([h/2,0,0])
     rotate([90,0,90])
      cube([drc*2,drc*2,h],center=true);
   if (lowside=="left" || lowside=="both")
    translate([-h/2,0,0])
     rotate([90,0,90])
      cube([drc*2,drc*2,h],center=true);
  }
 }
}

module relief_cylindrical_long(){
 render(){
  translate([0,0,drc+th_min]){
   rotate([90,0,90])
    cylinder(r=drc,h=w+1,center=true,$fn=nf);
  }
 }
}

module relief_cylindrical_wide(){
 render(){
  translate([0,0,drc+th_min]){
   rotate([90,0,0])
    hull(){
     translate([(w-h)/2,0,0])
      cylinder(r=drc,h=h+1,center=true,$fn=nf);
     translate([-(w-h)/2,0,0])
      cylinder(r=drc,h=h+1,center=true,$fn=nf);
    }
   if (lowside=="right" || lowside=="both")
    translate([h/2,0,0])
     rotate([90,0,90])
      cube([drc*2,drc*2,h],center=true);
   if (lowside=="left" || lowside=="both")
    translate([-h/2,0,0])
     rotate([90,0,90])
      cube([drc*2,drc*2,h],center=true);
  }
 }
}

module relief_sausage(){
 render(){
  translate([0,0,drs+th_min]){
   hull(){
    translate([(w-h)/2,0,0])
     sphere(r=drs,center=true,$fn=nf);
    translate([-(w-h)/2,0,0])
     sphere(r=drs,center=true,$fn=nf);
   }
   if (lowside=="right" || lowside=="both")
    translate([h/2,0,0])
     rotate([90,0,90])
      cylinder(r=drs,h=h,center=true,$fn=nf);
   if (lowside=="left" || lowside=="both")
    translate([-h/2,0,0])
     rotate([90,0,90])
      cylinder(r=drs,h=h,center=true,$fn=nf);
  }
 }
}

module relief_ysausage(){
 render(){
  translate([0,0,drs+th_min]){
   hull(){
    translate([0,os1,0])
     sphere(r=drs,center=true,$fn=nf);
    translate([0,os2,0])
     sphere(r=drs,center=true,$fn=nf);
   }
   if (lowside=="right" || lowside=="both")
    translate([0,w/2,0])
     rotate([90,0,0])
      cylinder(r=drs,h=h,center=true,$fn=nf);
   if (lowside=="left" || lowside=="both")
    translate([0,-w/2,0])
     rotate([90,0,0])
      cylinder(r=drs,h=h,center=true,$fn=nf);
  }
 }
}

module relief_bevel(){
 union(){
  for (i=bevel){
   if (i=="top")
    translate([0,h/2,th_min+bevhos])
     rotate([bevangle,0,180])
     translate([0,h/4,w/2])
     rotate([90,0,0])
      cube([w,w,h/2],center=true);
   if (i=="bottom")
    translate([0,-h/2,th_min+bevhos])
     rotate([bevangle,0,0])
     translate([0,h/4,w/2])
     rotate([90,0,0])
      cube([w,w,h/2],center=true);
   if (i=="right")
    translate([w/2,0,th_min+bevhos])
     rotate([bevangle,0,90])
     translate([0,w/4,h/2])
     rotate([90,0,0])
      cube([h,h,w/2],center=true);
   if (i=="left")
    translate([-w/2,0,th_min+bevhos])
     rotate([bevangle,0,-90])
     translate([0,w/4,h/2])
     rotate([90,0,0])
      cube([h,h,w/2],center=true);
  }
 }
}

module drawcap(){
 difference(){
  cap();
  
  if (style=="sphere")
   if (scaley!=1)
    scale([1,scaley,1])
     relief_spherical();
   else
    relief_spherical();
  if (style=="cylinder")
   relief_cylindrical();
  if (style=="lcylinder")
   relief_cylindrical_long();
  if (style=="wcylinder")
   relief_cylindrical_wide();
  if (style=="sausage")
   relief_sausage();
  if (style=="ysausage")
   relief_ysausage();
  if (style=="bumps")
   relief_bumps();
  if (bevel!="none")
   relief_bevel();
 }
 
 if (identifier=="edge")
  translate([-idl/2,-idw/2-h*0.34,th_min])
   cube([idl,idw,th*idh-th_min+0.001]);
 else if (identifier=="center")
  translate([-idl/2,-idw/2,th_min])
   cube([idl,idw,th*idhc-th_min+0.001]);
}

module tilecaps(){
 color("dimgray"){
  for (m=[1:Ny]){
   translate([0,(m-1)*(h+tilegap),0]){
    for (n=[1:Nx]){
     translate([(n-1)*(w+tilegap),0,0]){
      drawcap();
     }
    }
   }
  }
 }
}

tilecaps();

Much of the core focus of these experiments stems from the lessons of the glue ring experiment; that is, finding the balance between the axial components of the crown geometry.  The equivalent analog for the circular glue ring is of course a spherically concave crown.  By contrast, many keyboards such as the Model M have cylindrically concave crowns.  While the spherical crowns provide constraint cues both laterally (side to side) and transversely (across the rows), cylindrical crowns only provide strong constraint laterally.  Much like using elongated glue rings, this allows for more variation of finger placement in the transverse direction without affecting comfort.  While the cylindrical shapes are certainly easier to deburr and finish than spherical ones, the overall flatness of the keyboard and the tendency to use the laptop in awkward positions without a desk left me wanting more transverse constraint than they could provide.  After all, while the Model M uses cylindrical crowns, it also has a significant and unambiguous height difference between rows.  The solution was simply a deep ellipsoidal crown contour.  Using atypically deep crowns helps compensate for the flatness inherent to a laptop keyboard, and generally provides more constraint overall.  A few quick tweaks were required to find what I felt was a good balance.  Compared to either spherical or cylindrical reliefs of a similar depth, the final ellipsoidal crown allowed a dramatic improvement in speed, accuracy, and comfort within the alpha keys.

Caps with spherical, cylindrical, and ellipsoidal crowns (and an identifier bump)
Wary of losing track of home row (something that was easy to do on the original keyboard), I decided to use different caps for the numeric row.  In order to provide a sense of overall contour, I opted to reduce the degree to which these cap crowns were contoured themselves.  In other words, any concave relief should be shallower, allowing the cap to be effectively thicker in the strike location.  Again, I used wear marks on a well-worn keyboard to locate the crown features.

The F-keys are grouped into blocks of four, with each group sharing an elongated concave relief.  This addresses the fact that the keys are not spaced or located as they are on a standard keyboard.  Only ESC and DEL have their own spherical relief. 

Keys which I rarely use, or keys which are otherwise hit accidentally need some sort of avoidance identifier.  I opted for a lower-profile cap with a grid of bumps.  While it makes for frustrating print cleanup, it's an effective solution. 

Other keys were given either shallow concave reliefs or simple bevels.  In this way, they are brought up to a comparable height with the other modified keys, even if they otherwise do not require any particular improvement.

Other cap types for function-row and numeric-row keys
The caps were printed in PLA, though this makes them difficult to clean up and finish.  The surfaces require quite a bit of burr removal or "defuzzing".  Most of this can be done by scraping, though the shapes of the parts often makes it awkward and the process is generally tedious.  Sanding is likewise very tedious, especially corners and edges.  Cylindrical-relief keys can be printed in rows and sanded in a comfortable motion, though spherical or ellipsoidal reliefs don't allow this.  Sanding tends to leave more fine fuzz.

Improving the finish beyond that is difficult.  As the parts are very thin, heat polishing (flame or hot air) doesn't really work.  The features are either destroyed, or the part curls and requires restraint -- leading to more marring.  Solvent polishing PLA is not really a thing.  No, acetone, MEK, and ethyl acetate don't work.  They might slightly soften and deglaze the part, but they will not dissolve the surface enough to allow it to reflow.  I do not know of any other solvents that would, but if there were one, I have a feeling that the parts would be so thin that they would tend to curl anyway.

Sanded, fuzzy caps temporarily affixed during fitting
Using a rotary tool to buff or burnish the surface is fairly counterproductive.  The tool needs to run much slower than they can, otherwise the heat generated by friction melts and smears the material due to its very low melting point.  Wool buffs, brushes, cratex points, and scotch brite bobs all ended up just making a mess.  In practice, the first thing they do is erase edges and corners. 

I ended up opting to just coat the caps, though I know that coatings on a keyboard are likely going to eventually fail.  I figured that my best bet was either polyurethane or a good clear acrylic.  I didn't feel like applying the poly with a brush or sprayer, so I just used an aerosol acrylic spray. No, I did not just spray the keys in-situ.  I used double-sided tape to hold them down to a waste board when spraying. 


The keycaps after a sloppy spray job. It feels better than it looks.
The caps were originally prototyped using simple craft rubber cement for adhesion.  This allowed them to easily be removed with a knife, and the residual glue simply rolled off the surfaces cleanly.  For final reassembly, I used a more proper polychloroprene contact cement (e.g. Weldwood, Barge).  Removal may now be more difficult, but possible.  Instead of brushing the cement on, I used a syringe to dispense a small amount on each key.  There are plenty of other adhesives that could be used here.  I figured that replacement keyboards are cheap enough that I don't really need to worry about removing the caps once I've settled on the design. 

Final Thoughts

The keyboard as modified has proven to be about as good as a laptop keyboard can possibly be.  The height is much more comfortable, the alpha keys are distinct from surrounding keys.  The identifier bumps are distinct, and I added a couple extra where I wanted them.  The finish isn't very pretty, but beauty isn't necessary here. 

If you read all that blather without losing interest or the will to live, I should congratulate you.  Even I had a hard time enduring it. 

Friday, March 13, 2020

Addressing the Minimum COL Limit for the Marlin 1894 Action

As is typical of the remainder of this blog, I am writing this following an experience with a problem about which I found frustratingly little clear information online.  That is not to say that I found little information; rather, I found a great wealth of conflicting, inaccurate, or at least confusing information obfuscating simple, but perhaps nonobvious truths. 

Let's start where the experience starts -- a rifle owner buys some new boxes of 44 Special (240gr LSWC) ammunition to use in his ca. 1971 Marlin 1894 chambered for 44 magnum.  While the first few rounds worked, the rims eventually start jamming between the lifter and the mouth of the magazine tube.  This was unexpected; all the prior boxes of old 246gr LRN 44 Special ammunition worked fine, and still do.  Why is the rifle jamming with the new ammunition?  My eyes see an obvious suspect, but let's get a second opinion.

HSM 44SPL (240gr LSWC), Winchester 44SPL (246gr LRN), Winchester 44MAG (240gr JSP)

If one immediately googles a relevant query, forums across the web will authoritatively dispense the answer with certainty. It's the "dreaded Marlin Jam", which is variously described as:
There are grains of truth spread nonuniformly throughout those discussions, but there are also a lot of misunderstandings and conflations going on as well.  It's easy to see how that happens.  The 1894 action is definitely susceptible to feeding problems, whether it is a consequence of the lack of controlled feed or the weaknesses of the simple mechanical logic going on inside.  It's also frustratingly difficult to visualize what exactly is going on inside.  There isn't a good way to see or measure the part clearances and timing as the action cycles, and the critical limits of those hidden details are fairly subtle.  It's easy to presume the causes incorrectly.

To narrow the subject, I am not talking about misfeeds caused by holding the rifle at an extreme angle or on its side, resulting in jams involving the bolt, breech, or ejector.  Those are a consequence of gravity and the uncontrolled feed.  I'm not talking about double-feeds caused by short-stroking or similar incomplete cycling motions. That's just a consequence of the fact that magazine interruption mechanism is reversible, while the feeding of the current round is not.  What I am talking about is the minimum reliable cartridge length for the 1894 action and jams caused by short cartridges in otherwise unworn rifles.

The Existence and Specifics of the Minimum COL Limit

But wait, the lifter automatically acts as a magazine interrupter.  Does the 1894 even have a minimum COL limitation?  Well, if you ask around, you will amusingly find people who will tell you that the design of the mechanism cleverly ensures it does not.  This is incorrect.  There most definitely is a minimum COL limitation. If you would like a quick proof that a lower bound exists, load a full magazine with empty cases (easier said than done) and see if you can get the action to lift a round without jamming on the next.

What that length is depends on the cartridge.  While the lessons of this study should also apply to other chamberings, 44 Remington magnum provides an illustrative complication as its chamber can also accept 44 S&W special. The SAAMI COL spec for 44 Magnum is 1.535-1.610 inches. On the other hand, the spec for 44 special is 1.415-1.615 inches. It's conceivable that a firearm designed around the magnum cartridge spec might not accomodate the wider spectrum of 44 special cartridge lengths.  Certainly, the first page of the manual for the Marlin 1894 states the acceptable range of cartridge OAL echoing the SAAMI spec for 44 magnum.  The case with 357 magnum and 38 special is similar.  These new boxes of ammunition are approximately 1.475" long -- well outside the limits recommended by the manual.


While the spec on paper is merely an assertion, it is the design of the mechanism and the particulars of its geometry which ultimately determine the actual practical range of cartridge lengths. When the lever is closed, the current round is captured at an angle between the loading gate, the right-hand face of the lever arm, and the next round in the magazine.  As the lever is opened, its arm clears the rim of the current round, allowing it to slip off the front edge of the loading gate.  At this point, the cartridge is captured between the forward face of the lever arm and the subsequent cartridge.  The cam surface on the lever begins to raise the lifter, shearing the stack of cartridges as they follow the motion of the lever rearward. In order to function correctly, the lifter must rise high enough to block the next cartridge before its rim clears the mouth of the magazine tube.  If the cam-lifter timing is retarded by some defect, or if the cartridges are too short, the lifter will not be in a position to fully block the next round before its rim clears the magazine mouth and a jam will occur.  It is this geometry of the lever arm and cam surfaces, as well as the lifter and magazine mouth which determine minimum cartridge length. 


Lever closed; cartridge offset and held on loading gate
Lever open; cartridges following lever arm
Magazine interrupted; cartridge uncontrolled

You should now be experiencing a creeping doubt regarding the invariability of the effective minimum COL requirement.  Not only is it an issue of timing between moving surfaces, the mechanical advantage of the cam/lifter system means that feed reliability is going to be significantly sensitive to small geometry changes caused by wear or receiver alignment.  There's enough tolerance in the screw holes that reassembling the rifle in a slightly different manner may significantly change its reliability with marginal-length ammunition.  If the receiver halves are tightly-fitted, the front screw may not pull them together completely with reasonable torque; a few taps with a hammer may be necessary to seat them completely. It's easy to think it's assembled correctly, and still have a 0.005" change in alignment make the reliability go from 95% down to 10%.  The same can happen if there are burrs or any debris between the receiver halves near the front screw.  The "Marlin jam" fixes addressing seemingly miniscule lifter peening should now start to make sense.

Very short COL resulting in jam on cartridge body
Marginal COL resulting in jam on rim

The form of the jam may vary depending on the scenario, leading people to mistakenly assume that the causes are necessarily different, perhaps misattributing them to other causes which produce identical end-conditions.  In the case of a very short cartridge, the next round is entirely trapped between the magazine mouth and the top face of the lifter.  In the case of a marginally-short cartridge, the rim of the next round may protrude only far enough to hook edge of the magazine mouth, becoming wedged against the front face of the lifter nose.  Bear in mind that the front edge of the lifter is not always close to the magazine mouth; neither is it moving in a straight line.  It moves in an arc, and presents a considerable gap when it is only beginning to interrupt the magazine. The exact contouring of the front edge of the lifter nose, caused by wear or intent otherwise, may further contribute to inconsistent behavior in marginal conditions.

Of course, this is just my insight from having spent a few hours trying to get a single rifle to run with two boxes of a specific brand and loading of cartridge.  I don't own 50 Marlin rifles.  I haven't fired 1E5 rounds of every kind of ammunition ever made without a single jam.  I haven't shot Marlins professionally for the last 90 years, uphill both ways in the snow.  I don't even hang out on the forums with all the people who assuredly did, so what do I know?

Toward a Remedy

While this particular case is an issue of short ammunition, the effect is the same as the lifter wear with which other owners contend.  As mentioned, I'm not the first person to try solving the problem; there are plenty of proposed fixes.  The bottom surface of the lifter which mates with the cam may be built up by welding or using an epoxy-bonded shim.  The lifter itself could be bent slightly. Generally, these solutions amount to a timing advance to shift the range of allowable COL down.  I don't know whether it's possible to effectively reduce the maximum COL by doing this; that limitation may be determined elsewhere in the mechanism (distance from magazine to cartridge stop surface) or loading cycle (chance of stumping on the breech face).  I'm not worried about overly-long cartridges at the moment.

The cam surface on this lifter is different than that of other (newer?) rifles I've seen.  Its curvature precludes the easy use of spring steel shims.  I simply elected to shape a brass shim from 0.015" shim stock and adhere it with JB-Weld.  This may prove to have a relatively short longevity, but it is more than adequate for this application.  With only a 0.015" shim, the lifter nose is advanced roughly 0.030", and the interruption occurs about 0.150" earlier (depending on where you assume the cartridge contacts the lever arm at that moment).  Again, the point is that small changes in the cam interface cause a large change in the effective minimum COL.


For my own purposes, I am content with the potentially temporary shim.  I don't want to weld or bend anything permanent; the shim can easily be removed without harm.  All it needs to do is allow the rifle to function with this particular lot of ammunition -- which it does excellently.  Once they are consumed, the rifle can simply be fed with a more appropriate choice of ammunition.  The long-term solution is merely an applied understanding of the mechanical nuance -- and/or perhaps some handloading.

Afterthoughts and a Helpful Gesture

It might just be me, but these 240gr SWC bullets almost look more at home in 44 magnum brass.  They would produce a good COL in that combination.  It might simply be an issue of the difference in demand between the cartridges and a desire to consolidate production components.  If everyone likes their Keith-style SWC's in the magnum cartridge, why not just stick the same bullets in the 44 special offerings too?  After all, 1.475" is well within the SAAMI spec for 44 special, and it's probably a fair assumption that most of them wind up in revolvers anyway. 

As for those who want to run lighter loads in their 44 magnum 1894's without dealing with tweaking the rifle, there are probably some factory loads available with more appropriate COL.  Of course, nobody states that metric on the box or the web.  I guess you can always bring your calipers to the store or do some approximation from image analysis.  The alternative is to handload.  Again, SWC bullets with high cannelures seem to be the most popular.  It may simply be easiest to use those with magnum brass to get a more reliable COL, loading down to 44 special ballistics.  At least at Brownell's, the price is identical for magnum or special brass -- for both Starline and Winchester.  That's probably of little comfort if you're sitting on a pile of special brass.  I suppose if casting is desired or acceptable, the Lyman Cast Bullet Handbook linked below lists the COL for cartridges assembled with various bullets from Lyman molds.  For example, a comfortable 1.571" COL can be achieved with a 245gr bullet from the #429421 mold.  There are always plenty of other recommendations around the web.

Toward that end, these pdfs may be useful.  Sometimes the older books are actually favorable if you have stock of discontinued powders, or if you want pressure data for legacy loads as a reference for comparison.  If you want newer editions, just hit up Amazon or AbeBooks, or the relevant manufacturer's site. 

Lyman Cast Bullet Handbook - 3rd Edition - 1980
Lyman Reloading Handbook - 48th Edition - 2002
Modern Reloading - Richard Lee - First Edition - 2000
Hornady Handbook of Cartridge Reloading - 3rd Edition - 1980
Hornady Handbook of Cartridge Reloading - 4th Edition - Part 1 - 1996
Hornady Handbook of Cartridge Reloading - 4th Edition - Part 2 - 1996
Cartridges of the World - Barnes - 8th Edition - 1997
ABC's of Reloading - RCBS - Dean Grennell - 1985
The Gun Digest Book of Handgun Reloading - Dean A Grennell - 1987
Gun Digest - Shooter's Guide to Reloading - Philip P. Massaro - 2014
Precision Handloading - John Withers - 1985
Introduction to BPCR Loading - Chuck Raithel 2001
A Cast Bullet Guide for Handgunners - Fryxell - Applegate
The American Rifle - Whelen - 1918
Complete Guide to Handloading - Sharpe - 1937
Handloaders Manual - Earl Naramore - 1943
Alliant Reloaders Guide - 2009
Hodgdon Basic Reloading Manual - 2015
Winchester Reloaders Manual - 15th Edition - 1997
Western Load Guide - 6.0 - 2016
Powder Bulk Density Chart - 2007

Tuesday, October 22, 2019

Resolving Tanfoglio Witness Magazine Issues

This post is in regards to my own observations and my particular model pistol, a Tanfoglio Witness P-S imported by EAA circa 2012.  If you're reading this because you're troubleshooting or looking for magazines or a review, consider that we might be thinking about vastly different pistols.  Let's take a moment to paint a more appropriately muddied picture.

These both are full-size polymer-frame EAA/Tanfoglio Witness pistols in 9mm
It is a rather common occurrence there may be many different unique products associated with an overarching product family name.  Figuring out which specific model you actually have and searching for parts is made difficult by the reluctance of manufacturers, marketers, and retailers to make differentiating information (i.e. unique model numbers or names) prominently available.  Just as "Motorola Razr" might be a smart phone or a flip phone, a "Tanfoglio Witness 9mm" might be one of several different things.  The Witness family covers steel frame and polymer frame pistols in different frame sizes depending on caliber and manufacture date.  They're also subdivided into compact and full-size variants within that distinction.  While most of the Witness models are based on the CZ-75 design, there are also M1911 clones under the same name. As far as magazines go, EAA does provide a serial number lookup tool to help owners identify their model and the requsite magazine.  Adhering to time-honored tradition, this tool only works on some browsers.  Bear in mind though, if a large fraction of retailers don't provide any compatibility information more specific than a model family, confidently searching for parts might still be difficult even if you know the specifics of your product and the desired part. 

Walking back toward those specifics, my pistol is a post-2005 full-size polymer frame variant (SKU: 999044).  This is described as "New Frame Special", which appears to be a variant of what is more often simply referred to as the "small frame" pistol.  This seems to make sense, as it is a Witness P-S (polymer, small frame) as opposed to a Witness P, which is (to my knowledge) an earlier larger frame model.  To be appropriately confusing to the incautious, the frame is marked "Witness P-S", while the slide is marked "Witness P".  Again, this information is useless since almost every retailer uses "Witness P" and "Witness P-S" interchangably if they mention it at all.  The magazines which are compatible with my pistol are #101900 (16 round), #101920 (10 round blocked), #101921 (25 round).  The magazine which shipped with mine is #101900. 

Original Magazine #101900

I have had this pistol for several years and have put 300-400 rounds through it.  While I'm comfortable with it and generally satisfied with its performance in comparison to what it replaced, it has always had a tendency to occasionally misfeed within the first few rounds out of a full magazine.  With round nose FMJ, the issue is rare, but with flat-nose or JHP ammunition, this tendency can be frustrating.  The misfeeds take various forms depending on the bullet geometry and cartridge OAL.  Flat-nose and JHP rounds may get stumped against the bottom edge of the feed ramp.  Round-nose ammunition may do complete nosedives if the OAL is short.  When the problem manifests, it will tend to persist for the next 3-4 rounds before disappearing. Until recently, I had never used anything other than round-nose FMJ.  At the time, I simply attributed this very occasional fault to either my loading of the magazine or perhaps the need for some break-in.

Hornady JHP with short OAL stumped into feedramp
Complete nosedive with Remington UMC round-nose FMJ

In response to a partial-feed issue which arose when changing ammunition, I used Cratex and a wool buff to ease and polish the edge and bottom corner of the extractor to keep it from biting into case rims.  I polished the feed ramp, breech face and the side of the breech opposite the extractor.  In all, this reduces the amount of force required for a round to slide under the extractor.  This solved the particular ammo-sensitivity I was having, and I wondered if I had just solved the more longstanding misfeed issue at the same time.  On the second magazine after my polishing work, I wound up with a handful of complete nosedives using both Remington UMC and PMC Bronze 115gr FMJ.  It seems I had solved one of two unrelated faults contributing to the misfeeding tendency; the prime suspect was now the magazine.

With a bit of fiddling and observation, I had a handle on what was happening.  The problem seems to be an issue of magazine geometry more than anything else.  With only a few rounds in the magazine, the rounds in the tapered section seem to be well constrained and will reliably stack against each other with the top round tightly against the feed lips.  When there are >10 rounds or so in the magazine, the rounds in the tapered section of the magazine may not stack uniformly.  They tend to pivot around the wrong side of the ribs, allowing the top several rounds to fan out vertically.  One way to induce this mis-stacking is to push down on the nose of the top round.  You may feel the stack shift as you depress, and when you let go, the top round will be held only by its rim.  The front of the case will be unsupported and ready to nosedive when stripped.  The placement of the retention dimples in the feed lips seems to exacerbate the problem by giving the round something to pivot against. 

Tight stacking with only 3 rounds
Splayed stacking with 13 rounds
Unsupported round will easily pivot down when stripped

While I'm sure someone would suggest that this is all caused by a collapsed spring, I doubt that for three reasons: The problem has been manifest since the magazine was new.  The misfeeds never occur at the end of a magazine.  Adding a filler block inside the magazine to increase the spring force does not change the behavior, and manually applying an excess of force to the follower with the floorplate and spring removed will not prevent or remedy an irregular stacking condition either.

How big of a problem is this though? While it can be intentionally induced as described, the condition also seems to arise naturally during loading and handling.  The fact that the slide keeps the stack depressed while closed means it can occasionally recur even if the magazine was stacked tightly when it was first inserted into the pistol.  A magazine which is sluggish either due to fouling or a weak spring will probably be more prone to this mis-stacking when the slide opens.  Sometimes this mis-stacking can be cured by slapping the magazine on its side, though it often can't.  A small tool or pocket knife can be used through the magazine catch slots to push the stack back into alignment, but that's hardly a practical solution. I think it's big enough of an issue that I am willing to write off this magazine as having a flawed design. The best fix is replacement with something different.

MEC-GAR MGWIT9SFAFC

As I mentioned, it's hard to confidently find parts when retailers don't know what they're selling or don't care to communicate any amount of unambiguous identifying information.  As far as I know, if you want a different magazine to replace a #101900, your only option is a Mec-Gar MGWIT9SFAFC.  This is listed (and stamped) as a 17-round magazine, and it fits well.  The feed lip and transition geometry do significantly differ from the original magazine.  The follower is different primarily in that it matches the narrower transition geometry; this also means they aren't interchangeable.  The spring is significantly longer and has more turns.  The end result is a magazine which reliably stacks perfectly every time.  The aforementioned method of inducing mis-stacking does not work on the Mec-Gar magazine.


So far this sounds like a perfect fix.  I ran several dry-cycle drills without fault, trying to induce misfeeds with flat-nose rounds all the while.  I eagerly loaded up a magazine with said problematic flat-nose FMJ and spent it on steel plates.  I was a bit distracted by the satisfaction of getting the ammo to finally feed that I lost count and was a bit confused when the hammer finally dropped on an empty chamber; the slide didn't lock open when the mag was empty.  I depressed the mag release, and the magazine happily stayed put.  Only after a bit of wiggling would the mag come out.

Follower rounded over on Mec-Gar magazine
The plastic follower barely catches slide lock on its edge, and after only a few dry-cycle drills and a single mag in live-fire, it had rounded off and wedged against the side of the slide lock instead of lifting it.  Now it would no longer reliably catch the slide lock.  Okay, I guess a LRHO is kind of a convenience, but now the mag won't drop because it wedges against the slide lock.  So even though it solved the misfeeding issue brilliantly, the Mec-Gar magazine introduces a new inconvenience.  Granted, I only have one magazine to base this on, but at an overall cost of $33 each, I'm not exactly going to buy enough magazines to do a statistical analysis of this failure mode.  At this point, I see two options: cut off the corner of the follower so that it neither lifts the slide lock nor wedges against it.   This defeats the LRHO, but it's the easiest to do.  Alternatively, one could repair and reinforce the edge of the follower where it engages the slide lock.  That is what I opted to attempt.


My first attempt was simply to cut a piece of spring steel strip to match the profile of the follower edge and epoxy it in place.  After some final dressing, this looked fine and worked perfectly when tested manually.  I loaded a single round in the magazine, shot a steel plate, and was rewarded with an open slide.  I removed the magazine, and the steel reinforcement fell out on the floor.  The epoxy didn't bond at all to the follower.  Based on appearance and toughness, I had assumed this was glass-filled nylon, but perhaps it has a lubricant additive. After a few other attempts, I resigned to the fact that bond strength was going to be very limited. 


I changed plans and came up with a reinforcement which relied more on mechanical support than the adhesive bonding.  I drilled a small hole in the follower to retain a section of 3/32" steel rod.  The hole is deep enough to reach the centerline of the follower, ensuring that the end of the rod is fully captured.  I used ScotchWeld 2216, as this relatively flexible epoxy tends to have good adhesion to troublesome plastics. The bond strength is still relatively weak, but it's the best I had.  At this point, the LRHO works correctly and the follower edge is resistant against deformation. 

I have no idea if the problems I've experienced are common or even repeatable.  I do not know if there are other alternatives beyond the two magazines I've described.  If you found any of this information useful, then I suppose that's a good thing.

Sunday, June 25, 2017

Reliable failures

A while back, I'd showcased the failed cathode drive amplifier for my main monitor.  This hybrid circuit had failed due to thermal stress because the alumina substrate had detached from the thermal tab.  Grey, sandy solder on full display, I'd mumbled about "metallurgical nuance".

Well, I guess it happened again.  Sort of.

boing
Again, the green channel failed, this time due to fractured solder between a transistor's thermal slug and the substrate.  The solder is black and gritty and won't reflow at all.  I ended up mangling everything just trying.

And then I tried to replace the entire amplifier section with part from the last failure.
what are you dooooooing
I flowed the new amplifier into place and gently held it square with tweezers while the solder froze... and then bumped the bond wires off of one of the transistors.

Wholesalers want about $90 for this stupid IC, and the only place I can find cheaper only takes orders by phone... in Polish.  I guess I'll just have a bicolor monitor from now on.

Sunday, September 25, 2016

A MFL inspection demo kit

Long ago in the distant land of late-semester grad school crunch time, an expeditious self-variant thought it was a good idea to voluntarily adopt a course project requiring research and fabrication of equipment.  While I can barely recall the scent of ambition, that physical device was one of its few remaining tangible products.  Let us go back in time for a moment...


With a cluster of retirements happening in the department at the time, I was in the last semesters of my MSc path with no choices for courses that would meet requirements.   After talking with one of the ME professors I'd been working with on a research project, I wound up surfing in a soft overview course on NDT methods.  As the only EE student in a ME course full of ME students, I felt compelled to take every opportunity to see if my own background could bring something fresh to the body of student work and discussion that took place. 

The last course project had quite a bit of latitude, but the basic idea involved a presentation based on a literature review, case study, or physical demonstration pertaining to a selected NDT/NDI method.  I opted to present and demonstrate a basic magnetic flux leakage (MFL) test.  While it would suffice to dig up some mothballed lab equipment and then make a PPT, I intended to make my own equipment and defect samples.  This was an opportunity to adopt an easy project that spanned a range of fun task areas.  It had everything from experimental component characterization, magnetostatic FEA, circuit design and simulation, programming, electronics fab, and machining.  I'd been burned out on project work in Excel and Simulink, and the chance at application and variety was appealing.

The concept of MFL testing is simple.  Local changes in the per-unit-length permeance of a sample can be detected by subjecting the workpiece to a static magnetizing field.  Near-surface flux is increased local to any defect which decreases the magnetic cross-section of the flux path.  All one needs is something to produce a magnetic field in the work, and something to sense the field near the surface.

 

While MFL sees more use in larger-scale applications and applications where the magnetics are purpose-built for particular surface geometry, my requirements meant I had a lot of latitude to make design choices that would otherwise make an impractical commercial product.  To make the equipment low-power and simple, I opted for permanent magnet excitation.  While this meant I didn't have the convenience of easily reducing excitation to ease manipulation or to suit different material thicknesses, I did incorporate the ability to incrementally add or remove magnets.  This makes the probe a bit difficult to use at times, but that's acceptable.

Since I'd been spending a lot of time doing magnetostatic sims in FEMM, I figured I'd play with it and get an idea of what I should expect.  With an approximate model, I could get an idea how much excitation I'd need for a given sample defect.  I could decide on pole and sample dimensions and I could figure out what the flux densities to expect at the sensor for a given selection of magnets. 


I figured the simplest way to sense near-surface leakage flux was to provide a shunt path through a hall effect sensor.  Some small steel pole pieces could serve as my low-reluctance path, and I picked a commutation sensor out of a small BLDC motor.  While I had plenty of these used sensors, they were all unidentifiable SMT parts for which I had no data.  I simply looked at the application I'd taken them out of and decided on a similar method of use.  In most of these 3-phase BLDC motor drive applications, the three sensors are driven in series from a fixed (5v) supply with a single series resistor.  The motor drive IC has three differential sense inputs and does everything else.
  

To characterize the sensor response to an applied field, I borrowed a disused magnetometer from storage at the physics department and set up a test fixture using a modified transformer frame.  Still using a simple series resistor and fixed voltage source, I set the sensor up with an excitation current equal to what it would have in its original application.  I placed the sensor and magnetometer probe in the middle of the fixed core gap and incrementally energized the device with DC.  If I hadn't been a dumbass at the time, I'd have realized that magnetoresistive effects meant that current was actually varying with flux density and possibly reducing response linearity.  While a current-regulated design might have benefits, I didn't think about it at the time.  I wasn't out to make absolute measurements of fields; all I needed were roughly linearized relative measurements.  For all I know, these sensors may have never been rated beyond 50mT or 100mT.  I took what I had and ran with it.



For sake of dirty simplicity, I made a LUT and configured an ATTiny25 microcontroller to sense the differential input and drive a meter via PWM.  I could have used a proper differential amplifier or even built a linearizing differential amplifier, but I didn't.  If I had used an instrumentation amplifier, I probably could have had the sensitivity to work with less magnetic excitation.  The microcontroller allows absolute reading of sensor flux density or it can be set into a convenient 'relative' mode where a baseline reading can be zeroed out.  This essentially stretches the scale and exaggerates meter movement when scanning an area.  Although I'm pretty sure I did a board layout for it, I ended up cobbling it together on nasty old perfboard from junk components.  The pot is for setting the meter range.  The meter is from an old rusted tacho/dwell meter I found on a scrap pile.  While the original face marked in RPM was coincidentally correct for reading in Gauss, I kept forgetting which of the multiple scales to use.  Also, fuck CGS units.  I simply made a new scale with tiny ass text so that I'd have something to squint at.


The probe was fabricated out of cold-rolled 1018 flat stock.  The straps are aluminum, and the shanks of the tie-bolts are unthreaded so as to help maintain total yoke permeance.  The sensor is soldered to a small bit of FR4 with a notch cut in it so that the narrow faces of the pole pieces can abut the sensor package directly.  


The sensor assembly is encapsulated in epoxy resin.  One of the yoke poles was lined with kapton tape so that it could be freed from the cured epoxy.  In this way, it can be pulled into alignment when the magnets are installed. Yes, that's an old PS/2 cord.


The operating faces of the yoke and sensor poles were all ground coplanar and then hand-lapped.  Although it was really unnecessary, I also dressed the top faces of the yoke poles and the shunt bar.  Everything is square with little chamfer, which makes it very uncomfortable to use considering how ridiculously strong it is. Due to their much higher intrinsic coercivity, NdFeB magnets don't really need a keeper shunt for the same reason an AlNiCo magnet would; still, it is needed to keep the probe's stray field from being a hazard to other equipment when it's not in use.  When dealing with thick plates, placing the probe or removing it from work surface can be made easier if the shunt is kept in place temporarily.  A design utilizing a diametrically-polarized cylinder magnet as in a switchable test indicator mount would obviate the need for a loose shunt bar, but It would complicate pole geometry, and i wasn't trying to make a marketable product.


The test sample was made from 1x1/4" 1018 bar and includes a slot, a set of flat-bottom holes, and simulated crack features made using rod to plug cross-drilled holes.  All these features are easily detected with the probe on the unmodified face of the bar.  Even the 1/16" deep FBH is clear as day when probed.


After presentation, I really had no use for the thing.  While I probably should have just donated it for class use, I ended up keeping it.  Occasionally, I'll use it to check the air compressor tank or something.  It's not really suited for measuring against curved surfaces, but it works well enough.  Probably the biggest issue is that I can't expect work geometries to be known or consistent.  Every test subject will be unique, and the most I can hope to find is a variation in permeance.  Without a chance to calibrate the process to a particular application profile and geometry, I can't really quantify much.

For sake of this blog post, I dragged an old air compressor tank off the scrap pile and mapped the bottom of the tank.  The paper acts as a positioning guide and it also allows the probe to slide more easily over surfaces without abrasion on rust or stiction against paint.  The map only covers one side of the tank because there's a weld seam on the other side of the centerline.  It's enough to make the point.  There's a 4" wide band of corrosion inside the tank, beyond which the leakage readings are almost constant save for variation caused by seating against a curved surface.



Of course, there are other ways to detect tank damage that's this bad.  In fact, the change in permeance is large enough that it can be detected by sliding a similarly strong magnet along the surface and feeling the change in attraction force.  Of course, it would have to be a strong pot magnet or something designed to make a closed low-reluctance flux path.

Maybe someday I'll come up with a cool job for it to do.  Until then, I guess this is about all the glory it'll get.