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.

The New Hotness

  • Bafang BBS02: Terry Cable Stop Cap

    The Terry Symmetry had shift cables running along the down tube, with cable housing stop bushings at the top:

    Terry Bafang - OEM shift stop
    Terry Bafang – OEM shift stop

    Without the front derailleur and with the wiring harness cable on the left side, a tidy cap seemed in order:

    Terry Bafang - shift stop cap
    Terry Bafang – shift stop cap

    The oversize passage give the cable a little flex room, although that’s probably unnecessary. I reused the original M5 screw, with a washer to spread the load.

    The solid model is basically a hull around some cylinders:

    Terry - Bafang shift cap - solid model
    Terry – Bafang shift cap – solid model

    The interior matches the stud brazed onto the downtube:

    Terry - Bafang shift cap - interior - solid model
    Terry – Bafang shift cap – interior – solid model

    The only practical way to build the thing required a brim stabilizing it on the platform:

    Terry - Bafang shift cap - slice preview
    Terry – Bafang shift cap – slice preview

    My usual 0.25 mm layers came out a bit crude on the vast overhang, but 0.15 mm layers worked fine.

    The OpenSCAD source code snippet:

    CapBlock = [18,18,16.5];
    
    module ShiftCap() {
    
    Rounding = 3.5;
    CapM = 3.0;
    StudBase = [12.5,12.5,4.5];
    Stud = [5.0,9.3,15.5];
    
        difference() {
            hull() {
                translate([0,0,CapBlock.z - 0.5])
                    PolyCyl(Washer5[OD],0.5,12);
                for (i=[-1,1], j=[-1,1])
                    translate([i*(CapBlock.x/2 - Rounding),j*(CapBlock.y/2 - Rounding),0])
                        sphere(r=Rounding,$fn=12);
                translate([-CapBlock.x/2,-Harness[ID]/2 - StudBase.y/2,StudBase.z/2])
                    rotate([0,90,0])
                        cylinder(d=Harness[ID] + 2*WallThick,h=CapBlock.x,$fn=12);
            }
    
            translate([0,0,-(FrameTube.z/2 - CapM)])
                Frame();
    
            PolyCyl(Screw5[ID],2*CapBlock.z,6);
    
            PolyCyl(Stud[OD],Stud[LENGTH],12);
    
            translate([0,0,StudBase.z/2])
                cube(StudBase,center=true);
    
            translate([0,-StudBase.y/2,StudBase.z/2])
                cube(StudBase + [0,-StudBase.y/2,0],center=true);
    
           translate([-CapBlock.x,-Harness[ID]/2 - StudBase.y/2,StudBase.z/2])
                rotate([0,90,0])
                    cylinder(d=1.5*Harness[ID],h=2*CapBlock.x,$fn=12);
    
        }
    }
    

    Of course, I needed three tries to get the correct dimensions, but that’s what rapid prototyping is all about.