HP 7475A Plotter: Pen Refilling Station

A place to store your vials of blended inkjet juice, plus a workstation for the plotter pen you’re refilling and that ink vial up front:

HP7475A Plotter Pen Refilling Station
HP7475A Plotter Pen Refilling Station

The two pen holders accommodate ordinary fiber-tip pens and ceramic-tip pens. The slot along the front lets you keep track of the ink level, not that there’s much danger of running dry at 0.05 ml per refill from a vial holding 1 ml of blended ink. The big flange makes it harder for me to knock the damn thing over; avoiding an ink spill, even when you have a towel underneath, is a Good Thing.

The Slic3r tool path preview shows off the Hilbert Curve top & bottom infill:

Plotter Pen Refill Vial Holder - Slic3r preview
Plotter Pen Refill Vial Holder – Slic3r preview

The OpenSCAD source code:

// HP7475A Plotter Pen Refill Station
// Ed Nisley KE4ZNU - August 2015

//- Extrusion parameters - must match reality!

ThreadThick = 0.25;
ThreadWidth = 0.40;

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

Protrusion = 0.1;

HoleWindage = 0.2;

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 = 6*ThreadWidth;
BaseThick = IntegerMultiple(1.0,ThreadThick);

VialOD = 8.0;
VialOC = VialOD + WallThick;

VialArray = [4,4];			// number of vials in each direction

PenOD = [14.7,11.7];			// regular fiber pen body, ceramic *cap* dia
NumPens = len(PenOD);			// really works for just two pens...
PenLength = 38;
FlangeOD = 18;

echo(str("Max pen OD: ",max(PenOD)));
echo(str("Number of pens: ",len(PenOD)));

Holder = [(VialOC*VialArray[0] + WallThick),(VialOC*VialArray[1] + 2*FlangeOD + WallThick),(3*VialOD + BaseThick)];
HolderRound = 5.0;

//- Build it

	difference() {

		union() {
			hull() {
				for (i=[-1,1], j=[-1,1]) {
					translate([i*(Holder[0]/2 - HolderRound),j*(Holder[1]/2 - HolderRound),0])
						cylinder(r=HolderRound,h=Holder[2],$fn=8*4);
				}
			}
			
			hull() {
				for (i=[-1,1], j=[-1,1]) {
					translate([i*Holder[1]/2,j*(Holder[1]/2 - HolderRound),0])
						cylinder(r=HolderRound,h=BaseThick,$fn=8*4);
				}
			}
			
			for (i=[0:len(PenOD) - 1])
				translate([(i*Holder[0]/2 - Holder[0]/4),-Holder[1]/4,BaseThick]) {		// spacing is a total hack
					rotate(180/12)
						cylinder(d=FlangeOD,h=PenLength,$fn=3*4);
				}
		}
		
		for (i=[0:VialArray[0] - 1] , j=[0:VialArray[1] - 1]) {
			vx = i*VialOC - (VialOC*(VialArray[0] - 1)/2);
			vy = j*VialOC - (VialOC*(VialArray[1] - 1)/2) + FlangeOD;
			translate([vx,vy,BaseThick])
				rotate(180/8)
					PolyCyl(VialOD,Holder[2],8);
		}
		
		translate([0,(VialOD/2 - Holder[1]/2),BaseThick])
			rotate(180/8)
				PolyCyl(VialOD,Holder[2],8);										// edges along open side => snug fit
		
		for (i=[0:len(PenOD) - 1])
			translate([(i*Holder[0]/2 - Holder[0]/4),-Holder[1]/4,BaseThick]) {		// spacing is a total hack
				rotate(180/12)
					PolyCyl(PenOD[i],(PenLength + Protrusion),3*4);
			}
		
	}

Mostly because I can…

3 thoughts on “HP 7475A Plotter: Pen Refilling Station

  1. wait, why are the ceramic and fiber pen wells different? they fit the same plotter mechanism …?

    1. Both uncapped pens fit the same carousel, but the ceramic pen cap extends along its body nearly to the flange. I decided to fill capped pens, rather than have them dribble excess ink into the block, so I needed two different sockets.

      And then I dripped a drop of black ink atop the block. It instantly seeped along all the threads, covered the entire top of the block, and is now working its way throughout the structure. [sigh]

Comments are closed.