CNC 3018-Pro: Hard Drive Platter Fixture

A variation on the CD fixture produces a 3.5 inch hard drive platter fixture:

Platter Fixtures - Hard Drive on 3018
Platter Fixtures – Hard Drive on 3018

Which needed just a touch of milling for a snug fit around the platter:

CNC 3018-Pro - HD platter fixture - test fit
CNC 3018-Pro – HD platter fixture – test fit

Tape it down on the 3018’s platform, set XY=0 at the center, and It Just Works™:

CNC 3018-Pro - HD platter fixture - 70 g
CNC 3018-Pro – HD platter fixture – 70 g

The rather faint line shows engraving at -1.0 mm = 70 g downforce isn’t quite enough. Another test with the same pattern at -3.0 mm = 140 g came out better:

CNC 3018-Pro - HD platter fixture - 140 g
CNC 3018-Pro – HD platter fixture – 140 g

It’s in the same OpenSCAD file as the CD fixture, in the unlikely event you need one.

Praying Mantis vs. Bumblebee

The Butterfly Bush outside the living room continues to attract flying insects, but, with the arrival of this year’s bumper crop of Praying Mantises, it has become something of a killing field.

If I hadn’t seen this, I wouldn’t have believed it:

Mantis vs Bumblebee - grapple
Mantis vs Bumblebee – grapple

Perhaps grabbing the bumblebee at the tip of the abdomen neutralizes the sting, but I only saw the flash of motion, not the actual capture.

The mantis changed her (?) grip several times while removing various accessories:

Mantis vs Bumblebee - disassembly
Mantis vs Bumblebee – disassembly

Although a bee’s leg may not seem edible, she chewed through them like Pocky.

Minus most of the bits and pieces, serious eating commenced:

Mantis vs Bumblebee - lunch
Mantis vs Bumblebee – lunch

Having watched several insects go through this process, the mantis proceeds from the head downward, eventually squeezing the abdomen like a tube of toothpaste.

A mantis can eat a bumblebee in about twenty minutes, from capture to discarding the empty husk. After a few minutes of body maintenance, ranging from leg cleaning to eye scraping, she begins waiting for the next meal to arrive …

Suet Feeder Bracket Painting

The 4 inch column on the rear patio holds a bracket, probably intended for a welcoming sign or some such, which keeps the suet feeder mostly out of reach. It desperately wanted a coat of black paint to match the railing, so I stripped the old paint and applied Evapo-Rust:

Suet Feeder Bracket Hardware - Evapo-Rust bath
Suet Feeder Bracket Hardware – Evapo-Rust bath

The dark areas are iron oxide being converted to loose iron sulfide, which is what Evapo-Rust does for a living.

One could, of course, simply buy new eye screws & nuts, but we’re deep into historical preservation around here.

An hour of soaking and a few minutes of wire-wheeling got everything down to bare metal, ready for some rattle-can primer and black paint action:

Suet Feeder Bracket Hardware - installed
Suet Feeder Bracket Hardware – installed

It’s a version of what Eks calls a “used car finish”: high shine over deep pits.

Discussion of why one should not paint threaded parts will be unavailing; in this case, paint serves as permanent threadlock. I re-spritzed the eyescrews & nuts after getting everything aligned, so as to produce a lovely two-coat over-all finish.

The birds won’t care one way or the other and, as long as the paint lasts, neither will we.

Cateye Astrale Cyclocomputer Battery Life

The display on Mary’s Cateye Astrale “Cyclocomputer” had once again faded to gray, so it’s time for a new CR2032 lithium cell:

Cateye Astrale - battery change 2019-09-22
Cateye Astrale – battery change 2019-09-22

The old cell read 2.5 V, well below what it should be.

The notes scrawled on the cell become readable under better light:

Cateye Astrale - CR2032 life
Cateye Astrale – CR2032 life

Seven years (at 1942 mile/yr) ain’t bad at all!

To replace the cell fast enough to maintain the odometer reading, just unscrew & remove the battery cover, slam the back of the Astrale on the bench, and pop in the new cell.

Maybe I should replace the cell twice a decade, regardless of how feeble it might be?

MPCNC: Z-Axis Height Probe

A slight modification to the MPCNC LM12UU collet pen holder turns it into a long-reach Z-Axis Height Probe:

CNC 3018-Pro - Z-Axis height probe - overview
CNC 3018-Pro – Z-Axis height probe – overview

A flange on the top plate holds a Makerbot-style endstop switch:

Collet Holder - LM12UU - switch plate - solid model
Collet Holder – LM12UU – switch plate – solid model

The brass probe rod sports a 3/32 inch ball epoxied on its tip, although for my simple needs I could probably use the bare rod:

CNC 3018-Pro - Z-Axis height probe - ball tip detail
CNC 3018-Pro – Z-Axis height probe – ball tip detail

I clamped the rod to extend a bit beyond the plate, where it can soak up most of the switch release travel, leaving just enough to reset the clickiness after each probe:

CNC 3018-Pro - Z-Axis height probe - detail
CNC 3018-Pro – Z-Axis height probe – detail

The probe responds only to Z motion, not tip deflection in XY, so it’s not particularly good for soft objects with sloped sides, like the insole shown above. It works fine for rigid objects and should suffice to figure the modeling workflow.

The bCNC Auto-Level probe routine scans a grid over a rectangular region:

Insole - bCNC AutoLevel Probe Map - detail
Insole – bCNC AutoLevel Probe Map – detail

Which Meshlab turns into a solid model:

Insole - Meshlab triangulation
Insole – Meshlab triangulation

That’s the bottom of the insole probed on a 5 mm grid, which takes something over an hour to accomplish.

The OpenSCAD code as a GitHub Gist:

// Collet pen cartridge holder using LM12UU linear bearing
// Ed Nisley KE4ZNU - 2019-04-26
// 2019-06 Adapted from LM12UU drag knife holder
// 2019-09 Probe switch mount plate
Layout = "Build"; // [Build, Show, Puck, Mount, Plate, SwitchPlate]
/* [Hidden] */
// Extrusion parameters
ThreadThick = 0.25; // [0.20, 0.25]
ThreadWidth = 0.40; // [0.40]
// Constants
Protrusion = 0.1; // [0.01, 0.1]
HoleWindage = 0.2;
inch = 25.4;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
ID = 0;
OD = 1;
//- Adjust hole diameter to make the size come out right
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);
//- Dimensions
// Basic shape of DW660 snout fitting into the holder
// Lip goes upward to lock into MPCNC mount
Snout = [44.6,50.0,9.6]; // LENGTH = ID height
Lip = 4.0; // height of lip at end of snout
// Holder & suchlike
PenShaft = 3.5; // hole to pass pen cartridge
WallThick = 4.0; // minimum thickness / width
Screw = [4.0,8.5,25.0]; // thread ID, washer OD, length
Insert = [4.0,6.0,10.0]; // brass insert
Bearing = [12.0,21.0,30.0]; // linear bearing body
Plate = [PenShaft,Snout[OD] - WallThick,WallThick]; // spring reaction plate
echo(str("Plate: ",Plate));
SpringSeat = [0.56,7.5,2*ThreadThick]; // wire = ID, coil = OD, seat depth = length
PuckOAL = max(Bearing[LENGTH],(Snout[LENGTH] + Lip)); // total height of DW660 fitting
echo(str("PuckOAL: ",PuckOAL));
Key = [Snout[ID],25.7,(Snout[LENGTH] + Lip)]; // rectangular key
NumScrews = 3;
//ScrewBCD = 2.0*(Bearing[OD]/2 + Insert[OD]/2 + WallThick);
ScrewBCD = (Snout[ID] + Bearing[OD])/2;
echo(str("Screw BCD: ",ScrewBCD));
NumSides = 9*4; // cylinder facets (multiple of 3 for lathe trimming)
// MBI Endstop switch PCB
PCB = [40.0,1.6,16.5]; // endstop PCB, switch downward, facing parts
Touchpoint = [-4.8,4.8,4.5]; // contact point from PCB edges, solder side
TapeThick = 1.0; // foam mounting tape
SwitchMount = [PCB.x,WallThick,PCB.z + Touchpoint.z + Plate.z];
module DW660Puck() {
rotate([180,0,0]) {
cylinder(d=Snout[ID],h=(Snout[LENGTH] + Lip),$fn=NumSides);
translate([0,0,(Snout[LENGTH] + Lip) - Protrusion])
cylinder(d1=Snout[ID],d2=2*WallThick + Bearing[OD],h=PuckOAL - (Snout[LENGTH] + Lip),$fn=NumSides);
intersection() {
translate([0,0,0*Lip + Key.z/2])
cylinder(d=Snout[OD],h=Lip + Key.z,$fn=NumSides);
module MountBase() {
difference() {
translate([0,0,-Protrusion]) // bearing
for (i=[0:NumScrews - 1]) // clamp screws
module SpringPlate() {
difference() {
translate([0,0,-Protrusion]) // pen cartridge hole
translate([0,0,Plate.z - SpringSeat[LENGTH]]) // spring retaining recess
PolyCyl(SpringSeat[OD],SpringSeat[LENGTH] + Protrusion,NumSides);
for (i=[0:NumScrews - 1]) // clamp screws
module SwitchPlate() {
translate([Touchpoint.x,Touchpoint.y + TapeThick,0])
// Build it
if (Layout == "Puck")
if (Layout == "Plate")
if (Layout == "SwitchPlate")
if (Layout == "Mount")
if (Layout == "Show") {
if (Layout == "Build") {

Branson Ultrasonic Cleaner Switch Cover

Back in the early 90s, I bought a Branson Ultrasonic Cleaner for small parts. It turned out to be ideal for eyeglasses, migrated to the bathroom, and has been used at least daily ever since. After nigh onto three decades, this happened:

Branson ultrasonic cleaner - failed switch cover
Branson ultrasonic cleaner – failed switch cover

We tend to push the ON button and let it turn off by itself after a little over four minutes (exactly 255 seconds!), so the gray plastic sheet over the ON switch failed first. You can barely see the outline of the transparent film previously covering both switches, which probably helped waterproof the switches.

The gray plastic disk sits atop the switch actuator, so I punched a slightly larger polypropylene disk (from my stash of clamshell packages), stuck it to the disk with double-sided tape, lined it up over the hole, and covered the mess with Kapton tape:

Branson ultrasonic cleaner - expedient fix
Branson ultrasonic cleaner – expedient fix

This is in the nature of an expedient fix, as I’m not sure the polypro disk is flexible enough. The next iteration will cover the entire gray area and I’ll see about a transparent tape covering.

Maybe in another decade?

CNC 3018-Pro: CD Fixture Probe Camera Target

Taping the CD fixture to the CNC 3018-Pro’s raised platform solves the repeatability problem by putting the CD at a fixed location relative to the machine’s Home coordinates. The next step puts the XY=0 coordinate origin at the exact center of the platter, so the pattern comes out exactly centered on the disc:

CNC 3018-Pro - CD fixture
CNC 3018-Pro – CD fixture

The fixture has a central boss:

Platter Fixtures - CD on 3018 - tape flange
Platter Fixtures – CD on 3018 – tape flange

The blue boss centers the CD’s hub hole, the red plateau supports the disc, and the white background lies 5 mm below the CD’s upper surface:

CNC 3018-Pro - CD holder target
CNC 3018-Pro – CD holder target

Yup, red and blue Sharpies FTW.

The bCNC probe camera image includes two faint cyan rings centered on the crosshair:

CNC 3018-Pro - bCNC probe camera - red-blue CD target
CNC 3018-Pro – bCNC probe camera – red-blue CD target

Set the diameter to 15 mm (or a bit less), center the outer ring on the hub hole = the border between blue & red, set XY=0, and it’s within maybe ±0.1 mm of the true center.