Sienna Hood Rod Pivot: PETG Edition

Our Larval Engineer reports that the PLA pivot for the Sienna’s hood rod didn’t survive contact with the van’s NYS Inspection. I’m not surprised, as PLA tends to be brittle and the inspection happened on a typical February day in upstate New York. Seeing as how PETG claims to be stronger and more durable than PLA, I ran off some replacements:

Toyota Sienna hood rod pivot - small - PETG
Toyota Sienna hood rod pivot – small – PETG

The square cap fit snugly over the bottom of the post; PETG tolerances seem pretty much the same as for PLA.

A slightly larger loop may be more durable, so I changed one parameter in the OpenSCAD code to get this:

Toyota Sienna Hood Rod Pivot - up-armored - solid model
Toyota Sienna Hood Rod Pivot – up-armored – solid model

Which printed just like you’d expect:

Toyota Sienna hood rod pivot - large - PETG hairs
Toyota Sienna hood rod pivot – large – PETG hairs

Despite the hairs stretching between each part, the nozzle didn’t deposit any boogers during the print. The top and bottom use Hilbert Curve infill, which looks pretty and keeps the nozzle from zipping back and forth quite so much; perhaps that’s a step in the right direction.

Tapping the holes for 6-32 stainless machines screws went easily enough:

Toyota Sienna hood rod pivot - PETG - assembled
Toyota Sienna hood rod pivot – PETG – assembled

She gets one of each and I keep the others for show-n-tell sessions.

The OpenSCAD source code, which differs from the original by a constant or two:

// Sienna Hood Rod Pivot
// Ed Nisley KE4ZNU November 2013

//- Extrusion parameters must match reality!
//  Print with 2 shells and 3 solid layers

ThreadThick = 0.25;
ThreadWidth = 0.40;

HoleWindage = 0.2;

Protrusion = 0.1;			// make holes end cleanly

inch = 25.4;

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

//----------------------
// Dimensions

ShellOD = 20.0;
ShellID = 8.75;
ShellLength = 10.0;

TaperLength = 1.5;
TaperID = 11.4;

BaseWidth = 20.0;
BaseThick = 3.0;

PegSide = 9.5;					// mounting peg through sheet metal
PegLength = 7.0;
PegCornerTrim = 0.75;
PegHoleOD = 0.107*inch;			//  6-32 tap hole

PegTrimSide = sqrt(2)*PegSide - PegCornerTrim;

ClampWall = 3.0;				// clamping cap under sheet metal
ClampHoleOD = 0.150*inch;		//  6-32 clearance hole
ClampCap = 3.0;					// solid end thickness

PanelThick = 2.0;				// sheet metal under hood

NumSides = 6*4;

//----------------------
// Useful routines

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);
}

module ShowPegGrid(Space = 10.0,Size = 1.0) {

  Range = floor(50 / Space);

	for (x=[-Range:Range])
	  for (y=[-Range:Range])
		translate([x*Space,y*Space,Size/2])
		  %cube(Size,center=true);

}

//----------------------
// Build it

//ShowPegGrid();

// pivot

translate([-ShellOD,0,0])
	difference() {
		union() {
			cylinder(r=ShellOD/2,h=ShellLength,$fn=NumSides);		// housing
			translate([-ShellOD/2,0,0])								// filler
				cube([ShellOD,(ShellOD/2 + BaseThick),ShellLength],center=false);
			translate([0,(ShellOD/2 + BaseThick/2),ShellLength/2])	// foot
				cube([BaseWidth,BaseThick,ShellLength],center=true);

			translate([0,											// peg
						(ShellOD/2 + PegLength/2 + BaseThick - Protrusion),
						PegSide/2])
				intersection() {
					cube([PegSide,(PegLength + Protrusion),PegSide],center=true);
					rotate([0,45,0])
						cube([PegTrimSide,2*PegLength,PegTrimSide],center=true);
				}
		}

		PolyCyl(ShellID,ShellLength,NumSides);		// central hole

		translate([0,0,-Protrusion])				// end bevels
			cylinder(r1=TaperID/2,r2=ShellID/2,h=(TaperLength + Protrusion),$fn=NumSides);
		translate([0,0,(ShellLength + Protrusion)])
			rotate([180,0,0])
				cylinder(r1=TaperID/2,r2=ShellID/2,h=(TaperLength + Protrusion),$fn=NumSides);

		translate([0,0,PegSide/2])					// screw tap hole
			rotate([-90,0,0])
				PolyCyl(PegHoleOD,(ShellOD + BaseThick + PegLength),6);

	}

// anchor cap

translate([2*PegSide,0,0])
	difference() {
		translate([0,0,(PegLength + ClampCap)/2])					// overall shape
			cube([(PegSide + ClampWall),(PegSide + ClampWall),(PegLength + ClampCap)],center=true);
		translate([0,0,(PegLength/2 + ClampCap + Protrusion)])		// peg cutout
			cube([(PegSide + ThreadWidth),(PegSide + ThreadWidth),(PegLength + Protrusion)],center=true);
		translate([0,0,-Protrusion])								// screw clearance
				PolyCyl(ClampHoleOD,2*PegLength,6);
	}