MPCNC Drag Knife: LM12UU Linear Bearing

The anodized body of the drag knife on the left measures exactly 12.0 mm OD:

Drag Knife holders - detail
Drag Knife holders – detail

Which happy fact suggested I might be able to use a standard LM12UU linear bearing, despite the obvious stupidity of running an aluminum “shaft” in a steel-ball bearing race:

Drag Knife - LM12UU holder - solid model
Drag Knife – LM12UU holder – solid model

The 12 mm section extends about halfway through the bearing, with barely 3 mm extending out the far end:

Drag Knife - LM12UU - knife blade detail
Drag Knife – LM12UU – knife blade detail

Because the knife body isn’t touching the bearing for the lower half of its length, it’ll probably deflect too much in the XY plane, but it’s simple enough to try out.

As before, the knife body’s flange is a snug fit in the hole bored in the upper disk:

Drag Knife - spring plate test fit
Drag Knife – spring plate test fit

This time, I tried faking stripper bolts by filling the threads of ordinary socket head cap screws with epoxy:

Ersatz stripper bolts - epoxy fill
Ersatz stripper bolts – epoxy fill

Turning the filled section to match the thread OD showed this just wasn’t going to work at all, so I turned the gunked section of the threads down to about 3.5 mm and continued the mission:

Drag Knife - LM12UU holder - assembled
Drag Knife – LM12UU holder – assembled

Next time, I’ll try mounting the disk on telescoping brass tubing nested around the screws. The motivation for the epoxy nonsense came from the discovery that real stainless steel stripper bolts run five bucks each, which means I’m just not stocking up on the things.

It slide surprisingly well on the cut-down screws, though:

Drag Knife - applique templates
Drag Knife – applique templates

Those appliqué templates came from patterns for a block in one of Mary’s current quilting projects, so perhaps I can be of some use whenever she next needs intricate cutouts.

The OpenSCAD source code as a GitHub Gist:

// Drag Knife Holder using LM12UU linear bearing
// Ed Nisley KE4ZNU - 2019-04-26
Layout = "Show"; // [Build, Show, Puck, Mount, Plate]
/* [Extrusion] */
ThreadThick = 0.25; // [0.20, 0.25]
ThreadWidth = 0.40; // [0.40]
/* [Hidden] */
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
// Knife holder & suchlike
KnifeBody = [12.0,15.9,2.0]; // flange epoxied to top of diamond shaft, with epoxy fillet
WallThick = 4.0; // minimum thickness / width
Screw = [4.0,8.5,8.0]; // holding it all together, OD = washer
Insert = [4.0,6.0,10.0]; // brass insert
Bearing = [12.0,21.0,30.0]; // linear bearing body
Plate = [KnifeBody[ID],Snout[OD] - WallThick,KnifeBody[LENGTH] + WallThick]; // spring reaction plate
PlateGuide = [4.0,4.8,Plate[LENGTH]]; // ... guide tubes
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);
NumSides = 9*4; // cylinder facets (multiple of 3 for lathe trimming)
module DW660Puck() {
rotate([180,0,0]) {
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]) // knife holder body
translate([0,0,Plate[LENGTH] - KnifeBody[LENGTH]]) // flange, snug fit
PolyCyl(KnifeBody[OD],KnifeBody[LENGTH] + Protrusion,NumSides);
for (i=[0:NumScrews - 1]) // clamp screws
// Build it
if (Layout == "Puck")
if (Layout == "Plate")
if (Layout == "Mount")
if (Layout == "Show") {
if (Layout == "Build") {

Baofeng Big Battery Capacity

I bought a pair of third-party 3800 mA·h batteries for the Baofeng UV-5RE Plus (whatever that means) radios on our bikes. Oddly, the packs carry the same “Model BL-5” identification as 1800 mA·h batteries shipped with the radio:

Baofeng BL-5 Batteries - 1.8 and 3.8 Ah
Baofeng BL-5 Batteries – 1.8 and 3.8 Ah

The obviously mislabeled “Baofeng” battery eliminator also sported a 3800 mA·h label:

Baofeng Battery Eliminator - overview
Baofeng Battery Eliminator – overview

I conjured a “test fixture” from a clamp, copper sheet, and copper tape snippets:

Baofeng battery - test setup
Baofeng battery – test setup

Which produced interesting results:

Baofeng BL-5 3800 mAh packs - Ah - 2019-05
Baofeng BL-5 3800 mAh packs – Ah – 2019-05

The 250 mA load = 15 hour rate seemed reasonable to simulate radios spending most of their time in power-save mode, but the packs still delivered only 2.8 A·h.

The packs also claim an unnaturally precise 28.12 W·h, but they’re still underperformers at 20 W·h:

Baofeng BL-5 3800 mAh packs - 2019-05
Baofeng BL-5 3800 mAh packs – 2019-05

Anyhow, I can run the radios for a week without (worrying about) running out of juice during a ride.

MPCNC Drag Knife: PETG Linear Bearing

Having reasonable success using a 12 mm hole bored in a 3D printed mount for the nice drag knife holder on the left, I thought I’d try the same trick for the raw aluminum holder on the right side:

Drag Knife holders - detail
Drag Knife holders – detail

The 11.5 mm body is long enough to justify making a longer holder with more bearing surface:

Drag Knife Holder - 11.5 mm body - Slic3r preview
Drag Knife Holder – 11.5 mm body – Slic3r preview

Slicing with four perimeter threads lays down enough reasonably solid plastic to bore the central hole to a nice sliding fit:

Drag Knife - 11.5 mm body - boring
Drag Knife – 11.5 mm body – boring

The top disk gets bored to a snug press fit around the flange and upper body:

Drag Knife - 11.5 mm body - flange boring
Drag Knife – 11.5 mm body – flange boring

Assemble with springs and it pretty much works:

Drag Knife - hexagon depth setting
Drag Knife – hexagon depth setting

Unfortunately, it doesn’t work particularly well, because the two screws tightening the MPCNC’s DW660 tool holder (the black band) can apply enough force to deform the PETG mount and lock the drag knife body in the bore, while not being quite tight enough to prevent the mount from moving.

I think the holder for the black knife (on the left) worked better, because:

  • The anodized surface is much smoother & slipperier
  • The body is shorter, so less friction

In any event, I reached a sufficiently happy compromise for some heavy paper / light cardboard test shapes, but a PETG bearing won’t suffice for dependable drag knife cuttery.

Back to the laboratory …

M20 Camera Operation

A reader asked how the M20 camera mount on my bike works with respect to the camera’s clock; this description explains a few things missing from the original writeup.

SJCAM M20 Mount - Tour Easy side view
SJCAM M20 Mount – Tour Easy side view

Do you have to set the time & date at start of every ride?

The internal clock shuts down about ten seconds after you pull the battery. If-and-only-if you swap batteries fast enough, it’ll keep time forever. Screw up once and it snaps back to Epoch Zero.

“Car mode” automagically begins recording when USB power goes on, but the manual advises:

TIP: When using your camera as a dashcam, use a car charger cable and remove the internal battery to make sure it does not die out while you travel.

That’s because the M20 continues to run from its internal battery when USB power drops. After recording an hour of a parking lot or your garage wall, the battery dies and so does the clock.

Of course, without the internal battery, the clock dies ten seconds after you turn off the car.

The internal battery has many days of capacity with the camera turned off (whew!), so I conjured the case & PowerCore battery tray to handle our normal rides. The internal battery keeps the clock alive overnight and during the rain we’ve had for the last week, the PowerCore supplies juice during the ride, and I recharge the PowerCore every few weeks.

The M20 doesn’t draw charging current when I turn it on, but poking the PowerCore’s status button also turns on its outputs, whereupon the M20 decides it should begin charging and, bonus, draw power from the PowerCore during the entire ride. The M20 finishes charging while we ride, but the PowerCore continues supplying power and, when I turn the M20 off, the PowerCore sees no current draw and shuts itself off.

Only a geek could love a lashup like that, but it works around the M20’s broken clock and removes its battery maintenance hassle.

LED Nightlight Base Teardown & Simulation

I volunteered to take a look inside a small LED nightlight base to see how well it might work as a power supply for other circuitry:

Nightlight - overview
Nightlight – overview

Note: the AC plug is not polarized. Either blade can contact the hot side of the AC line.

The cadmium-selenide photocell in front turns the white LED on when it sees darkness and off when it sees lightness, with a more-or-less proportional response during dimness. The LED has an obvious 60 Hz flicker, particularly during its partially on phase, so I didn’t expect much inside.

The component side of the PCB faces toward the blades, which you’re looking along the lengths of:

Nightlight - PCB component side
Nightlight – PCB component side

The solder side faces away from the outlet:

Nightlight - PCB solder side
Nightlight – PCB solder side

Flipping the solder side left-to-right and overlaying the two images produces an X-ray-ish view useful for tracing the circuitry:

Nightlight - PCB trace overlay
Nightlight – PCB trace overlay

Some doodling extracts an LTSpice schematic:

Nightlight schematic
Nightlight schematic

None of the component values seem particularly critical; the diodes and transistor are close approximations to what’s really inside. I think the 100 Ω resistor also serves as a fuse, should anything else go wrong.

Setting the CdS cell to 1 MΩ = “dark” turns the LED on:

Nightlight - ON waveforms
Nightlight – ON waveforms

Although I don’t trust the numbers very far, the LED current waveform definitely suggests the flicker isn’t all in my head.

Setting the cell to 10 Ω = “light” turns the LED off, by the simple expedient of clamping the filter capacitor voltage well below the LED’s forward drop:

Nightlight - OFF waveforms
Nightlight – OFF waveforms

When the LED is off, the transistor current is slightly higher than the LED’s on-state current, because saturation voltage:

Nightlight - OFF - transistor current
Nightlight – OFF – transistor current

The current runs right through the 820 nF capacitor, which serves as a more-or-less 3.2 kΩ ballast resistor:

Nightlight - OFF - 820 nF cap current
Nightlight – OFF – 820 nF cap current

It’s a nice film cap and should have a low ESR, but this seems a bit sketchy to me.

So, basically, the nightlight doesn’t really have a power supply in the usual meaning of the term and isn’t suited for driving anything other than the white LED inside the case. Relocating the LED outside the case is an Extremely Bad Idea™, because the anode is one diode away from what might well be the hot AC line; one little oopsie and you’ve got a lethal shock hazard.