MPCNC: Linear Bearing Pen Holder

The simplest way to push a pen (or similar thing) downward with constant force may be to hold it in a linear bearing with a weight on it, so I gimmicked up a proof-of-concept. The general idea is to mount the pen so its axis coincides with the DW660 spindle, so as to have the nib trace the same path:

DW660 Pen Holder - unweighted
DW660 Pen Holder – unweighted

The puck mimics the shape of the DW660 snout closely enough to satisfy the MPCNC’s tool holder:

DW660 Pen Holder - Slic3r
DW660 Pen Holder – Slic3r

The pen holder suffers from thin walls constrained by the 10 mm (-ish) pen OD and the 12 mm linear bearing ID, to the extent the slight infill variations produced by the tapered pen outline change the OD. A flock of 16 mm bearings, en route around the planet even as I type, should provide more meat.

In any event, 3D printing isn’t noted for its perfect surface finish, so I applied an epoxy layer and rotated the holder as it cured:

DW660 Pen Holder - epoxy coating
DW660 Pen Holder – epoxy coating

After letting it cure overnight, I ran a lathe tool along the length to knock down the high spots and set the OD to 11.9+ mm. Although the result turns out to be a surprisingly nice fit in the bearing, there’s no way epoxy can sustain the surface load required for the usual precision steel-on-steel fit.

A plastic pen in a plastic holder weighs 8.3 g, which isn’t quite enough to put any force on the paper. Copper weighs 9 g/cm³ = 9 mg/mm³ and 10 AWG wire is 2.54 mm OD = 5 mm², so it’s 45 mg/mm: to get 20 g, chop off 450 mm of wire.

I chopped off a bit more than that, straightened it, annealed it, and wound it around a random contestant from the Bucket o’ Sticks with an OD just over the pen OD:

DW660 Pen Holder - copper weight forming
DW660 Pen Holder – copper weight forming

The helix is 13.5 mm down the middle of the turns and 14 turns long (trimmed of the tail going into the chuck and fudging the tail sticking out as a partial turn), so it’s 593 mm long and should weigh 26.7 g. It actually weighs 27.6 g: close enough.

Which is enough to overcome stiction due to the holder’s surface roughness, but the mediocre epoxy-on-balls fit allows the pen point to wander a bit too much for good results.

The prospect of poking precise holes into 16 mm drill rod seems daunting, but, based on what I see here, it will produce much better results: rapid prototyping FTW!

The OpenSCAD source code as a GitHub Gist:

// MPCNC Pen Holder for DW660 Mount
// Ed Nisley KE4ZNU - 2018-03-05
Layout = "Build"; // Build, Show
// Puck, MountBase, BuildBase
// Pen, PenAdapter, BuildAdapter
/* [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
WallThick = 3.0; // minimum thickness / width
Screw = [3.0,7.0,25.0]; // holding it all together, OD = washer
Insert = [3.0,4.4,4.5]; // brass insert
Bearing = [12.0,21.0,30.0]; // LM12UU bearing body, ID = rod OD
PenTravel = 5.0; // vertical pen travel allowance
NumSides = 8*4; // cylinder facets
// Define shapes
//-- Sakura Micron fiber-point pen
ExpRP = 0.30; // expand critical sections (by radius)
//-- pen locates in holder against end of outer body
PenOutline = [
[0,0], // 0 fiber pen tip
[0.6/2,0.0],[0.6/2,0.9], // 1 ... cylinder
[1.5/2,0.9],[1.5/2,5.3], // 3 tip surround
[4.7/2,5.8], // 5 chamfer
[4.9/2,12.3], // 6 nose
// [8.0/2,12.3],[8.0/2,13.1], // 7 latch ring
// [8.05/2,13.1],[8.25/2,30.5], // 9 actual inner body
[8.4/2 + ExpRP,12.3],[8.4/2 + ExpRP,30.5], // 7 inner body - clear latch ring
[9.5/2 + ExpRP,30.9], // 9 outer body - location surface!
[9.8/2 + ExpRP,60.0], // 10 outer body - length > Body
[7.5/2,60.0], // 11 arbitrary length, much longer than bearing
[7.5/2,59.0], // 12 end of reservoir
[0,59.0] // 13 fake reservoir
PenNose = PenOutline[6][1];
PenLocate = PenOutline[9][1];
// 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
Key = [Snout[ID],25.7,Snout[LENGTH] + Lip]; // rectangular key
module DW660Puck() {
cylinder(d=Snout[ID],h=Lip + Snout[LENGTH],$fn=NumSides);
intersection() {
translate([0,0,0*Lip + Key.z/2])
cylinder(d=Snout[OD],h=Lip + Key.z,$fn=NumSides);
module MountBase() {
difference() {
//-- Sakura drawing pen body & polygon shape
module Pen() {
//-- Pen holder
AdapterRing = [Bearing[ID],Bearing[OD],4.0];
AdapterOAL = Bearing[LENGTH] + PenTravel + AdapterRing[LENGTH];
module PenAdapter() {
difference() {
union() {
translate([0,0,AdapterOAL - AdapterRing[LENGTH]])
translate([0,0,-(PenNose + Protrusion)])
// Build it
if (Layout == "Puck")
if (Layout == "MountBase")
if (Layout == "Pen")
if (Layout == "PenAdapter")
if (Layout == "Show")
if (Layout == "BuildBase" || Layout == "Build")
if (Layout == "BuildAdapter" || Layout == "Build")

7 thoughts on “MPCNC: Linear Bearing Pen Holder

  1. The prospect of poking precise holes into 16 mm drill rod seems daunting

    I tend to go about it the other way around – first poke a right size hole in an oversized piece of steel, then turn the OD between centers. Guaranteed to be concentric. Plus, you can really hit a tight fit for that bearing.

    I suspect none of this matters though, as pens probably aren’t made with such tight tolerances :)

    1. After you’ve hollowed out the rod, those centers have nowhere to go. Bonus: starting with a nicely ground rod eliminates some finicky fitting.

      Not to mention my mini-lathe turn tapers, not cylinders. I must fill / smooth those crappy ways and do some alignment!

      1. nowhere to go

        What do you mean? I turned quite a few of POM linear bearings this way, never had a problem except with very short pieces, where length is comparable to bore dia., so centers touch each other before contacting the ends of part.

        1. You must use scary-skinny tapers against those centers!

          Now that you remind me, I just checked: the 15 mm ID drive dog is 15 mm thick and looms over those little teeny shafts. Are you using a homebrew dog?

          1. I’m not using a dog at all. I friction drive the bearing-to-be with the dead center in the lathe spindle and push on the other side with a live one. POM (Acetal, Delrin) plastic turns nicely with sharp(ish) HSS tooling so taking reasonably light cuts never stalls the part even with moderate tailstock pressure. I’m pretty sure compression doesn’t harm the OD and it remains cylindrical, as they go inside a bored hole in the POM block with about 5-10kg press.
            With steel, I’d make the part slightly longer so I have a place for the dog, and face the excess afterwards. In linear bearing parts those faces are not precision machined anyway.

            I couldn’t deuce what you mean by “scary-skinny tapers” :(

            1. Your tooling hand is strong!

              I made a Micron pen holder from a length of 12 mm rod, so the walls were a bit under 1 mm thick, which counts as scary thin around here. If I started with bigger rod, a dead center might not have enough grip to keep the rod turning against even a light cut. But I’m a confessed sissy, so … your way ought to work.

              On the other paw, I now have enough 12 mm rod for several generations of mistakes!

Comments are closed.