The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Recumbent Bicycling

Cruisin’ the streets

  • Tire Liner Abrasion

    Just fixed a flat on my bike which, like that one, came from the tire liner chewing through the tube. The holes are above the raised 28″ molded into the tube, at the upper-left corner of the tire liner impression.

    Schwalbe tube with tire liner abrasion
    Schwalbe tube with tire liner abrasion

    In this case, the tire liner (which, judging from the color, was a Slime) was too short by maybe 50 mm. This view inside the tire shows a 10 mm gap where the ends didn’t overlap as they should:

    Schwalbe Maration tire with liner abrasion
    Schwalbe Maration tire with liner abrasion

    I don’t trim the rear-tire  liners, but comparing a handful in the drawer shows that the as-sold lengths differ by a few tens of millimeters. The Marathons are husky tires, but the tread OD isn’t all that much different from stock tires: that’s the definition of a 700-series tire.

    That we’re getting repeated flats from tire liners intended to eliminate flats is, mmmm, disturbing. Looking at the condition of the tire treads, however, shows we’re not getting an order of magnitude more flats from road debris, so it’s a net win. I doubt we could get through a month of riding without a flat; I replace tires when the carcasses accumulate enough gashes that the tire liners begin extruding through the tread.

    Also, remember that these samples come from three bikes that travel upwards of 2000 miles a year (each!), not just one bike ridden along a nice rail trail on weekends…

  • Tour Easy: Zzipper Fairing Upper Mount Plates

    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:

    Fairing mount - outside
    Fairing mount – outside

    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:

    Fairing mount - inside
    Fairing mount – inside

    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:

    Fairing Mount Plates - Upper
    Fairing Mount Plates – Upper

    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.]

  • Tour Easy: New Rear Brake

    While I had the bike up on the stand to replace the seat strut screws, I installed a new rear brake. The old brake hadn’t been braking well for a while, which I attributed to different brake pads, but nothing seemed to help.

    New rear brake
    New rear brake

    I had to drive the old brakes off the mounting studs with a drift punch; the studs were pretty well rusted after a decade of continuous use under the hostile conditions that pass for normal around here.  Shined them up, applied a generous layer of Never-Seez, and bolted the new brakes in place.

    Turns out that the rear brakes on a Tour Easy are backwards from their orientation on an upright bike: the studs point spinward, so the cable exits on the right side of the frame. Doesn’t make any difference, as that’s how the front brake studs work, but if you’re thinking of buying some fancy brake with odd mounting requirements, you probably shouldn’t.

    The installation specs require “more than 39 mm” of cable between the clamp bolt and the bracket on the other arm. The Tour Easy frame tubes are closer together than that, allowing a bare 25 mm of cable.

    Rear brake cable and boot
    Rear brake cable and boot

    I trimmed the boot to fit, but the real problem is that the arms aren’t at quite the right angle with respect to the braking surface on the rim and provide a bit less leverage than you’d like; the pad alignment is also trickier. I tried adding spacers to the brake pads, but the mounting studs aren’t quite long enough for that.

    The first road test indicates the new brakes work much better than the old ones…

  • Another Fractured Seat Strut Screw

    Having replaced both screws back in March, I wasn’t expecting this:

    Fractured screw surfaces
    Fractured screw surfaces

    Of course, it broke at the first pedal stroke while pushing off across an intersection, which is why I never try to ace out oncoming cars.

    This was, mercifully, on the left side of the bike, so I could replace it without removing the rear wheel. Being that sort of bear, I now carry spare screws and we were back on the road in about ten minutes.

    A closer look at the head end of the screw shows some interesting details:

    Fractured screw - head
    Fractured screw – head

    The tail end has matching cracks:

    Fractured screw - tail
    Fractured screw – tail

    Notice how the cracks are all oriented in the same direction. The screw fractured at the edge of the brazed-on frame fitting, so I suspect the seat stay clamp must be moving just enough to flex the screw across that plane.

    I mooched a pair of hardened socket head cap screws from Eks, ground down the head of the right-side screw for better chain clearance around the sprockets, buttered ’em up with Never-Seez, and we’ll see how long Real Steel lasts.

    Right-side screw with ground-down head
    Right-side screw with ground-down head

    I really should conjure up a clamp that mounts to the frame tubing, rather than depend on that puny brazed-on fitting, shouldn’t I?

    It appears that new Tour Easy ‘bents come with more brazed-on fittings and a more secure seat stay mounting bracket. A photo was there when I looked.

  • New Eyeglasses

    Just got two eyeglasses from a different supplier halfway around the planet, with satisfactory results.

    The frames have the largest lenses I could find that weren’t totally dorky; I still want slightly taller lenses, but that’s not the style these days. Their 35 mm lenses are slightly larger than the 35 mm lenses from previous vendor, but IMHO still not quite tall enough for progressive bifocals. The closeup curves seem to start lower on the lens, which is fine.

    The 20 mm nose bridge is a Good Thing and made the nosepiece adjustments much easier than before.

    Metal Eyeglasses-Vincent
    Dimensions
    Width 137 mm
    Earpiece 144 mm
    Lens width 50 mm
    Lens height 35 mm
    Nose bridge 20 mm
    

    I used a 60 mm Near Pupillary Distance (for the bifocal lens area), which worked fine, although 1 mm might be better.

    The regular glasses have the usual options and work fine. The 1.6 “super thin” refractive index (vs 1.5 “regular” in the sunglasses) makes the lenses noticeably thinner than the sunglasses, but I’m not sure it’s worth the upcharge.

    - I use my Glasses for: Progressive - Bifocal without a line
    - Lens upgrades 5: Progressive Lens (no line)
    - Right Sphere(SPH): -3.50
    - Right Cylinder (CYL): +0.50
    - Right Axis: 180
    - Right Addition (near) ADD: +2.25
    - Left Sphere(SPH): -3.50
    - Left Cylinder (CYL): +0.75
    - Left Axis: 155
    - Left Addition (near) ADD: +2.25
    - Pupillary Distance (PD): 62
    - Near PD: 60
    - Lens upgrades 3: Super Thin (1.6)
    - Eye Protection and Eyeglasses 1: Anti-Scratch
    - Eye Protection and Eyeglasses 2: Anti-Reflective
    - Eye Protection and Eyeglasses 3: UV Coating
    

    For the sunglasses I tried Old School with-a-line bifocals and, frankly, don’t like them much at all. The line is very distracting in sunlight, which is where I wear sunglasses. Good news: the line falls directly across the fairing on my bike, so I can see the “dashboard” on the handlebars quite clearly. Bad news: the correction is a bit much for the automobile dashboard and, unlike the no-line bifocals, I can’t tune for best picture by nodding my head.

    Their 80% gray tint is significantly lighter than the previous vendor’s 80%; next time go for 90%. Good news: unlike the previous vendor, these folks have no trouble with AR/UV coatings over a tint.

    - I use my Glasses for: Bifocal - Both distance and reading with a line
      - Lens upgrades 4: Bifocal Lens (with line)
      - Division of lenses: 70% Distance - 30% Reading
      - Right Sphere(SPH): -3.50
      - Right Cylinder (CYL): +0.50
      - Right Axis: 180
      - Right Addition (near) ADD: +2.25
      - Left Sphere(SPH): -3.50
      - Left Cylinder (CYL): +0.75
      - Left Axis: 155
      - Left Addition (near) ADD: +2.25
      - Pupillary Distance (PD): 62
      - Near PD: 60
      - Lens upgrades 1: Standard (1.5)
      - Eye Protection and Eyeglasses 1: Anti-Scratch
      - Eye Protection and Eyeglasses 2: Anti-Reflective
      - Eye Protection and Eyeglasses 3: UV Coating
      - Tint Key: Grey 80%
      - Eye Protection and Eyeglasses 4: Color Tint
    

    A list of old frame sizes is there.

  • Another Bike Flat: Michelin Hair

    Rode around the big block on some errands, stopped at the Vassar Farm garden to haul some squash home, rode off… and the bike handled poorly. Well, with a few dozen pounds of produce in the panniers that’s not unusual, but this was worse. Yup, another flat.

    This time, however, our daughter was home and could rescue me in the van. Back in the shop, I found this obvious suspect:

     

    Embedded glass fragment
    Embedded glass fragment

     

    Once again, however, this wasn’t the problem, as the tire liner was barely scuffed. Those are glass fragments inside the gash, which might actually be the same one as before.

    There weren’t any other pointy objects embedded in the tire, but the tube wouldn’t stay inflated long enough to find the leak. I took the tube upstairs, submerged it in a pan of water, and found a rash of holes. Not pinholes, not a failed tube, but a series of punctures.

     

    Steel wire fragment
    Steel wire fragment

     

    Examining the tire liner revealed the cause: a strand of what my buddy DBM calls Michelin Hair poking through the tire liner. It’s a fragment of the steel belt from a car or truck tire, most likely shed from a disintegrating semitrailer recapped tire.

    There is absolutely no defense against these things, because they have razor-sharp points on both ends where the wire fractured. When the tire picks one up, every rotation drives it through the rubber, the Kevlar belt, the tire liner, and the tube. The usual symptom is a slow leak, eventually followed by a row of holes in the tube as it shifts position under low pressure.

    In fact, the tube had a slow leak since I installed it a few weeks ago after a tube failure. I wondered if I’d inadvertently installed a fold, but now I think I ran over this wire during the first few rides and it’s been getting worse ever since.

    That tube is a goner! I installed another Schwalbe tube and we’ll see what happens; one has been working fine on Mary’s bike for the last three months.

    Here’s a look at the steel wire from the side:

     

    Steel wire fragment through tire liner
    Steel wire fragment through tire liner

     

    It was completely through the liner, with only a stub sticking out on the tire side. There’s certainly a matching hole somewhere on the tire, but it’ll be indistinguishable from all the other nicks and gashes.

  • Biting Through the Bite Valve

    I carry a water pack behind the seat on my Tour Easy, with the hose over my left shoulder and the valve captured by a magnetic thingie pinned to my shirt. On a recent ride I hit a substantial pothole while drinking from the tube and managed to bite completely through the miracle plastic “Bite Me” valve, mostly due to clenching my teeth in concentration rather than from the impact.

    Bitten bite valve
    Bitten bite valve

    A few days later my dim consciousness finally took note that the water kept draining down into the pack between sips: every sip came with a mouthful of air.

    A year or so ago, the original valve developed a nasty case of embedded gunk and I picked up a quartet of Genuine Nalgen valves (or a credible imitation thereof) from the usual eBay supplier. I wonder if the reservoir and tubing will outlast the remaining two valves?