The stock Zzipper fairing handlebar mount consists of an aluminum bar with a plate welded to each end at more-or-less the correct angle to match the fairing curve. The plate has a 1/4 inch hole in one end, wherein a 1/4-20 nylon machine screw clamps the fairing to the plate, with a nylon washer distributing the stress. That doesn’t cope well with the vibrations caused by riding around here, let alone our summer vacation trips on crushed-stone rail trails, and the fairings tend to stress-crack at the holes.
These 3D printed plates are just the latest in a long series of attempts to distribute the stress over a larger area. The outside view:

The open hole gets another screw to hold the plates in position. The bump on the far side is an Oozebane turd, about which more later.
The view from inside the fairing:

You can’t see the layer of black foam rubber salvaged from a mouse pad between each plate and the fairing. That should prevent any local stress concentration at the screw and ease the transition to the tapered plate edges.
The solid model looks about like you’d expect:

The hole position depends on the fairing position, as the fairings have three holes. The pictures show the fairing on my bike; it’s in the lowest position, with the screw in the topmost hole. The OpenSCAD file has an option to put the holes where you need them.
The plates are only 8 layers thick, printed with 4 solid layers top and bottom to eliminate any fill. You could do the same by setting the fill to 100%, I suppose. Using 4 outer shells (3 additional) makes the flanged edge nice and flat and uniform.
The layer height is 0.33 mm, with w/t=1.7 for a width of 0.56 mm. Feed rate = 43 mm/s and flow rate = 255. DC Extruder, alas.
Running the first layer at feed = 0.5 and flow = 0.75 produces some fluffing in the fill, but there’s no way to get a lower flow from the DC extruder motor. Flow = 0.75 corresponds to PWM=191; anything lower sometimes fails to start the motor. If it starts, it’ll run, but … that’s not dependable.
I printed them on an aluminum plate for a nice flat bottom surface.
The OpenSCAD source code:
// Clamp plates for Zzipper fairing on Tour Easy recumbents // Ed Nisley - KE4ZNU - Mar 2011 // Build with... // extrusion parameters matching the values below // 4 outer shells // 4 solid surfaces at top + bottom // slow feeds to ensure hole perimeters stick to fill include </home/ed/Thing-O-Matic/lib/MCAD/boxes.scad> include </home/ed/Thing-O-Matic/lib/MCAD/units.scad> // Select hole layout // The if statement seems to work only for CSG object trees // Fortunately, I need only two different layouts... HoleSelect = 1; // 0 = his, 1 = hers HolesTop = (0 == HoleSelect) ? [0,1,1] : [1,0,1]; HolesBottom = (0 == HoleSelect) ? [0,1,1] : [1,0,1]; // Set these to match the extrusion parameters for successful building ThreadZ = 0.33; // extrusion thickness ThreadWidth = 0.57; // extrusion width = ThreadZ x w/t HoleWindage = ThreadWidth; // enlarge hole dia by extrusion width // Plate dimensions HoleDia = 0.25 * inch; // these are 1/4-20 bolt holes HoleSpace = (1) * inch; // center-to-center spacing // usually 1 inch, but 15/16 on one bike CornerR = 5.0; // corner rounding Layer1X = 90; // against fairing surface Layer1Y = 32; Layer1Z = 2*ThreadZ; Layer2Margin = 1.5; // uncovered edge Layer2X = Layer1X - 2*Layer2Margin; Layer2Y = Layer1Y - 2*Layer2Margin; Layer2Z = 3*ThreadZ; MountX = 46.3 + HoleWindage; // handlebar mounting bracket end plate MountHoleSpace = 13.0; // end to hole center MountY = 16.3 + HoleWindage; MountZ = 4*ThreadZ; // recess depth MountCap = 3.0; // endcap arc height MountR = (pow(MountCap,2) + 0.25*pow(MountY,2)) / (2*MountCap); // ... radius Layer3Margin = 1.5; Layer3X = Layer2X - 2*Layer3Margin; Layer3Y = max((Layer2Y - 2*Layer3Margin),(MountY + 8*ThreadWidth)); Layer3Z = 3*ThreadZ; PlateZ = Layer1Z + Layer2Z + Layer3Z; // Convenience settings BuildOffset = 3.0 + Layer1Y/2; // build Y spacing between top & bottom plates Protrusion = 0.1; // extend holes beyond surfaces for visibility //--------------- // Create plate with selectable holes module Plate(hs) { difference() { union() { translate([0,0,Layer1Z/2]) roundedBox([Layer1X,Layer1Y,Layer1Z],CornerR,true); translate([0,0,Layer1Z + Layer2Z/2]) roundedBox([Layer2X,Layer2Y,Layer2Z],CornerR,true); translate([0,0,Layer1Z + Layer2Z + Layer3Z/2]) roundedBox([Layer3X,Layer3Y,Layer3Z],CornerR,true); } if (0 != hs[0]) { translate([-HoleSpace,0,PlateZ/2]) cylinder(r=(HoleDia + HoleWindage)/2, h=(PlateZ + 2*Protrusion), center=true,$fn=10); } if (0 != hs[1]) { translate([0,0,PlateZ/2]) cylinder(r=(HoleDia + HoleWindage)/2, h=(PlateZ + 2*Protrusion), center=true,$fn=10); } if (0 != hs[2]) { translate([HoleSpace,0,PlateZ/2]) cylinder(r=(HoleDia + HoleWindage)/2, h=(PlateZ + 2*Protrusion), center=true,$fn=10); } } } //--------------- //-- Build the things... translate([0,BuildOffset,0]) Plate(HolesTop); translate([0,-BuildOffset,0]) difference() { Plate(HolesBottom); translate([-(HoleSpace + MountHoleSpace - MountX/2),0,PlateZ - MountZ/2 + Protrusion/2]) intersection() { cube([MountX,MountY,(MountZ + Protrusion)],center=true); union() { cube([(MountX - 2*MountCap),MountY,(MountZ + Protrusion)],center=true); translate([ (MountX/2 - MountR),0,0]) cylinder(r=MountR,h=(MountZ + Protrusion),center=true); translate([-(MountX/2 - MountR),0,0]) cylinder(r=MountR,h=(MountZ + Protrusion),center=true); } } }
I loves me my Thing-O-Matic, despite its annoyances…
[Update: Stepper extruder parameters and a tweak to make the mount plate track the hole position correctly.]
4 thoughts on “Tour Easy: Zzipper Fairing Upper Mount Plates”
Comments are closed.