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.

Tag: Improvements

Making the world a better place, one piece at a time

  • Presta Valve to Schraeder Hole Adapter

    The front rim on my Tour Easy developed a distinct bulge, of the sort usually caused by ramming something, but I’m not Danny McAskell and the bulge got worse over the course of a few weeks, suggesting the rim was deforming under tire pressure. Having ridden it upwards of 35 k miles with plenty of trailer towing and too much crushed-stone trail riding, the brake tracks were badly worn and it’s time for a new rim.

    An Amazon seller had an identical (!) rim, except for the minor difference of having a hole sized for a Schraeder valve stem, rather than the Presta valves on the original rims. One can buy adapters / grommets, but what’s the fun in that?

    The brake track walls are 1.5 mm thick on the new rim and a scant 1.0 mm on the old rim, so, yeah, it’s worn.

    A few measurements to get started (and for future reference):

    Presta to Schraeder Adapter - dimension doodle
    Presta to Schraeder Adapter – dimension doodle

    If you don’t have an A drill, a 15/64 inch drill is only half a mil larger and, sheesh, anything close will be fine.

    Introduce a suitable brass rod to Mr Lathe:

    Presta-Schraeder Adapter - parting off
    Presta-Schraeder Adapter – parting off

    Break all the edges and drop it in place:

    Presta-Schraeder Adapter - installed
    Presta-Schraeder Adapter – installed

    One could argue for swaging the adapter to fit flush against the curved rim, but commercial adapters don’t bother with such refinements and neither shall I.

    The 7.0 mm length got shortened to fit flush with the center of the rim:

    Presta-Schraeder Adapter - valve stem installed
    Presta-Schraeder Adapter – valve stem installed

    It’s brass, because the rim is heaviest on the far side where the steel pins splicing the ends live, and, with the tube & tire installed, the rim came out almost perfectly balanced. Which makes essentially no difference whatsoever, of course.

    The shiny new rim sports shiny new reflector tape (from the same stockpile, of course).

    That was easy …

  • Cheap Flashlight Boost Converter: Capacitor FAIL

    A long time ago, a pair of white LED + red laser flashlights powered by an AA cell diverged: one flashlight worked fine, the other always had a dead battery. The latter ended up on my “one of these days” pile, from which it recently emerged and accompanied me to a Squidwrench Tuesday session:

    Small Sun flashlight - original wiring
    Small Sun flashlight – original wiring

    The black wire trailing from the innards goes to the battery negative terminal, with the aluminum body providing the positive terminal connection to the wavy-washer spring contact visible atop the rear PCB inside the front shell.

    The switch connects each red wire to the battery negative terminal, so there’s a color code issue in full effect. The two red wires burrow through holes in the rear PCB (shown above) and connect to the negative terminal of the laser module (the brass cylinder near the top) and the negative terminal ring on the front PCB holding the seven white LEDs:

    Small Sun flashlight - original wiring - LED laser board
    Small Sun flashlight – original wiring – LED laser board

    Continuing the color code issue, the black wire from the laser is its positive terminal. The out-of-focus wire (an LED pin) sticking up near the top of the picture carries the positive connection to the LED ring. The red wires from the switch are the negative connections for the LEDs and laser.

    Voltages applied to the LED ring and the currents flowing therein:

    Small Sun flashlight - 7x white LED current vs voltage
    Small Sun flashlight – 7x white LED current vs voltage

    Seven LEDs at 20 mA each = 140 mA, so the voltage booster must crank out slightly more than 3.2 V. They’re not the brightest white LEDs I’ve ever seen, but suffice for a small flashlight.

    A crude sketch of the PCB layout, with a completely incorrect schematic based on the mistaken assumption the SOT23-3 package was an NPN transistor:

    Small Sun flashlight - schematic doodle
    Small Sun flashlight – schematic doodle

    Obviously, that’s just not ever going to oscillate, even if the 2603 topmark meant a 2SC2603 transistor, which it doesn’t.

    A bit more searching suggests it’s a stripped-down Semtech SC2603A boost converter, normally presented in a SOT23-6 package. If you order a few million of ’em, you can strip off three unused pins, do some internal rebonding, and (presumably) come out with an SOT23-3:

    Small Sun flashlight - correct schematic doodle
    Small Sun flashlight – correct schematic doodle

    That topology makes more sense!

    Before going further, I had to rationalize the colors:

    Small Sun flashlight - rewired LED laser board
    Small Sun flashlight – rewired LED laser board

    Soldering longer leads to the PCB allows current & voltage measurements:

    Small Sun flashlight - LED current test
    Small Sun flashlight – LED current test

    With the LEDs and laser disconnected, the converter seems to be struggling to keep the capacitor charged:

    Small Sun flashlight - V boost I 200mA-div - idle
    Small Sun flashlight – V boost I 200mA-div – idle

    Those purple spikes come from the current probe at 200 mA/div: maybe half an amp in 5 μs pulses at 6 kHz works out to a 15 mA average current, which is pretty close to the 11 mA I measured; it’s not obvious the Siglent SDM3045 meter was intended to handle such a tiny duty cycle.

    Obviously, the output capacitor is junk and, after removing it, the AADE L/C meter says NOT A CAPACITOR. Perhaps it never was one?

    Measuring the cap in the good (well, the other flashlight) suggests something around 100 nF, so I installed a random 110 nF cap from the stash. The current peaks are about the same size:

    Small Sun flashlight - I 200mA-div - 110nF cap
    Small Sun flashlight – I 200mA-div – 110nF cap

    The cap voltage (not shown) is now nearly constant and the 50 Hz PWM rate reduces the average battery current to 100-ish μA:

    Small Sun flashlight - I 200mA-div - color-grade - 110nF cap
    Small Sun flashlight – I 200mA-div – color-grade – 110nF cap

    Not great, but tolerable; a 1000 mA·h battery will go flat in a few months.

    The LED current runs a bit hotter than I expected:

    Small Sun flashlight - I 200mA-div - LED current - 110nF cap
    Small Sun flashlight – I 200mA-div – LED current – 110nF cap

    The bottom is about 200 mA and the average might be 350 to 400 mA.

    Compared with the other flashlight:

    Small Sun flashlight other - I 200mA-div - LED current
    Small Sun flashlight other – I 200mA-div – LED current

    So the cap is maybe a bit too small, but it likely doesn’t matter.

    Done!

  • Tour Easy Daytime Running Light: 18650 Cell Extraction Tab

    The running lights on our Tour Easy fairing sit just about perfectly level, despite how they appear in relation to the fairing edge:

    Flashlight Mount - LC40 - finger ball - side
    Flashlight Mount – LC40 – finger ball – side

    And, because they’re firmly attached to the fairing mount, there’s no way to tilt them to extract the 18650 cell.

    This took entirely too long to figure out:

    Lithium 18650 Cell Extractor Tab
    Lithium 18650 Cell Extractor Tab

    The LC40 end caps have a recess exactly where it’ll do the most good: capturing the tab inside the cap means it can’t interfere with the rear contact spring:

    Lithium 18650 Cell Extractor Tab - Anker LC40
    Lithium 18650 Cell Extractor Tab – Anker LC40

    Swapping cells no longer requires muttering!

  • Amazon Basics AA Cells: Capacity

    Being that sort of bear, I (sometimes) note the date on cells when I change them, as with this notation on the AA alkaline cells in the Logitech trackball:

    Amazon Basics AA cell - mouse runtime
    Amazon Basics AA cell – mouse runtime

    These Amazon Basics AA cells lasted almost exactly two years, compared with 15 and 20 months from the previous two pairs of Duracell AAs. A few months one way or the other probably don’t mean much, but the Amazon cells aren’t complete duds.

    The new Amazon Basics cells have a gray paint job, so they’ve either changed suppliers or branding.

  • Tour Easy Front Fender Clip: Longer and Stronger

    We negotiated the Belmar Bridge connection stairway from the Allegheny River Trail to the Sandy Creek trail:

    Belmar Bridge Stairs - Overview
    Belmar Bridge Stairs – Overview

    We’re maneuvering Mary’s bike, but you get the general idea. Our bikes aren’t built for stairways, particularly ones with low overheads:

    Belmar Bridge Stairs - Low Overhead
    Belmar Bridge Stairs – Low Overhead

    The front fender clip on my Tour Easy snapped (at the expected spots) when the mudflap snagged on one of the angles:

    Belmar Bridge Stairs - First Turn
    Belmar Bridge Stairs – First Turn

    For some inexplicable reason, I didn’t have a roll of duct tape in my packs, so the temporary repair required a strip of tape from a battery pack, two snippets of hook-and-loop tape, and considerable muttering:

    Tour Easy front fender clip - expedient repair
    Tour Easy front fender clip – expedient repair

    It was good for two dozen more miles to the end of our vacation, so I’d say that was Good Enough.

    The new version has holes in the ferrules ten stay diameters deep, instead of six, which might eliminate the need for heatstink tubing. I added a small hole at the joint between the curved hooks and the ferrules to force more plastic into those spots:

    Front Fender Clip - Slic3r
    Front Fender Clip – Slic3r

    I also bent the hanger extension to put the fender’s neutral position closer to the wheel.

    We’ll see how long this one lasts. By now, I now have black double-sticky foam tape!

    The OpenSCAD source code as a GitHub Gist:

    // Tour Easy front fender clip
    // Ed Nisley KE4ZNU July 2017
    Layout = "Build"; // Build Profile Ferrule Clip
    //- Extrusion parameters must match reality!
    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
    // special case: fender is exactly half a circle!
    FenderC = 51.0; // fender outside width = chord
    FenderM = 21.0; // height of chord
    FenderR = (pow(FenderM,2) + pow(FenderC,2)/4) / (2 * FenderM); // radius
    echo(str("Fender radius: ", FenderR));
    FenderD = 2*FenderR;
    FenderA = 2 * asin(FenderC / (2*FenderR));
    echo(str(" … Arc: ",FenderA," deg"));
    FenderThick = 2.5; // fender thickness, assume dia of edge
    ClipHeight = 15.0; // top to bottom, ignoring rakish tilt
    ClipThick = IntegerMultiple(2.5,ThreadWidth); // thickness of clip around fender
    ClipD = FenderD; // ID of clip against fender
    ClipSides = 4 * 8; // polygon sides around clip circle
    BendReliefD = 2.5; // bend arch diameter
    BendReliefA = 2/3 * FenderA/2; // … angle from dead ahead
    BendReliefCut = 1.5; // factor to thin outside of bend
    ID = 0;
    OD = 1;
    LENGTH = 2;
    StayDia = 3.3; // fender stay rod diameter
    StayOffset = 15.0; // stay-to-fender distance
    StayPitch = -5; // angle from stay to fender arch
    DropoutSpace = 120; // stay spacing at wheel hub
    StayLength = 235; // stay length: hub to fender
    StaySplay = asin((DropoutSpace – FenderC)/(2*StayLength)); // outward angle to hub
    echo(str(" … Pitch: ",StayPitch," deg"));
    echo(str(" … Splay: ",StaySplay," deg"));
    FerruleSides = 2*4;
    Ferrule = [StayDia,3*FenderThick/cos(180/FerruleSides),10*StayDia + StayOffset]; // ID = stay rod OD
    FerruleHoleD = 0.1; // small hole to create solid plastic at ferrule joint
    //———————-
    // 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);
    }
    //———————-
    // Clip profile around fender
    // Centered on fender arc
    module Profile(HeightScale = 1) {
    linear_extrude(height=HeightScale*ClipHeight,convexity=5) {
    difference() {
    offset(r=ClipThick) // outside of clip
    union() {
    circle(d=ClipD,$fn=ClipSides);
    for (i=[-1,1])
    rotate(i*BendReliefA) {
    translate([ClipD/2 + BendReliefD/2,0,0])
    circle(d=BendReliefD,$fn=6);
    }
    }
    union() { // inside of clip
    circle(d=ClipD,$fn=ClipSides);
    for (i=[-1,1])
    rotate(i*BendReliefA) {
    translate([ClipD/2 + BendReliefCut*BendReliefD/2,0,0])
    circle(d=BendReliefD/cos(180/6),$fn=6);
    translate([ClipD/2,0,0])
    square([BendReliefCut*BendReliefD,BendReliefD],center=true);
    }
    }
    translate([(FenderR – FenderM – FenderD/2),0]) // trim ends
    square([FenderD,2*FenderD],center=true);
    }
    for (a=[-1,1]) // hooks around fender
    rotate(a*(FenderA/2))
    translate([FenderR – FenderThick/2,0]) {
    difference() {
    rotate(1*180/12)
    circle(d=FenderThick + 2*ClipThick,$fn=12);
    rotate(1*180/8)
    circle(d=FenderThick,$fn=8);
    rotate(a * -90)
    translate([0,-2*FenderThick,0])
    square(4*FenderThick,center=false);
    }
    }
    }
    }
    //———————-
    // Ferrule body
    module FerruleBody() {
    translate([0,0,Ferrule[OD]/2 * cos(180/FerruleSides)])
    rotate([0,-90,0]) rotate(180/FerruleSides)
    difference() {
    cylinder(d=Ferrule[OD],h=Ferrule[LENGTH],$fn=FerruleSides,center=false);
    translate([0,0,StayOffset + Protrusion])
    PolyCyl(Ferrule[ID],Ferrule[LENGTH] – StayOffset + Protrusion,FerruleSides);
    }
    }
    //———————-
    // Generate entire clip at mounting angle
    module FenderClip() {
    difference() {
    union() {
    translate([FenderR,0,0])
    difference() { // angle and trim clip
    rotate([0,StayPitch,0])
    translate([-(FenderR + ClipThick),0,0])
    Profile(2); // scale upward for trimming
    translate([0,0,-ClipHeight]) // trim bottom
    cube(2*[FenderD,FenderD,ClipHeight],center=true);
    translate([0,0,ClipHeight*cos(StayPitch)+ClipHeight]) // trim top
    cube(2*[FenderD,FenderD,ClipHeight],center=true);
    }
    for (j = [-1,1]) // place ferrules
    translate([Ferrule[OD]*sin(StayPitch) + (Ferrule[OD]/2)*sin(StaySplay),j*(FenderR – FenderThick/2),0])
    rotate(-j*StaySplay)
    FerruleBody();
    }
    for (i=[-1,1]) // punch stiffening holes
    translate([FenderThick/2,-i*(FenderR – FenderThick/2),Ferrule[OD]/2])
    rotate([0,-90,i*StaySplay])
    PolyCyl(FerruleHoleD,Ferrule[OD],FerruleSides);
    }
    }
    //———————-
    // Build it
    if (Layout == "Profile") {
    Profile();
    }
    if (Layout == "Ferrule") {
    FerruleBody();
    }
    if (Layout == "Clip") {
    FenderClip();
    }
    if (Layout == "Build") {
    FenderClip();
    }

    As a bonus for paging all the way to the end, here’s the descent on the same stairway:

    Belmar Bridge Stairs - Descent
    Belmar Bridge Stairs – Descent

    No, I wasn’t even tempted …

  • Mint Extract: Results

    Six weeks later, the mint seemed about as extracted as it was going to get and I now have nearly a liter of decidedly green mint extract:

    Mint Extract - liquid color
    Mint Extract – liquid color

    Correspondingly, the leaves turned from bright green to dull brown:

    Mint Extract - spent leaf colors
    Mint Extract – spent leaf colors

    The smaller and darker pile in the rightmost bowl came from the smaller jar (on the left) with a higher alcohol-to-leaf ratio:

    Mint Extract - start - 2018-05-29
    Mint Extract – start – 2018-05-29

    Perhaps packing the jars before pouring in the alcohol doesn’t extract as efficiently. Or maybe, as in so many things, it doesn’t really matter.

    A liter of mint extract may not be a lifetime supply, but it’ll suffice for quite a while!

  • Tek A6302 Current Probe: Reason for Being

    The question occasionally comes up as to why one would want a Tektronix A6302 Hall effect current probe and AM503 amplifier. The answer is simple: non-contact, essentially non-invasive current monitoring.

    I used the venerable dead-battery Astable Multivibrator to check out the rebalanced A6302 probe:

    Tek A6302 Current Probe vs Astable Multivibrator
    Tek A6302 Current Probe vs Astable Multivibrator

    The scope screen in the background shows the two base voltages at the top, plus the overall battery current along the bottom:

    Tek A6302 - Astable multivibrator - LED current 1 mA-div
    Tek A6302 – Astable multivibrator – LED current 1 mA-div

    The current at 1 mA/div shows plenty of noise, but the 200 ms LED pulse is barely 1 mA tall. The two AA alkaline cells have faded to 2.5 V, so the “wearable” white-LED-with-dyed-overcoat runs far under its nominal 3.6-ish V spec.

    There’s basically no other way to get that result, because inserting a current-sense resistor into the circuit will alter the results, plus be intractably difficult to measure, particularly if you need the current in a non-ground-referenced branch of the circuit.

    The AM503 has terrible thermal drift, by contemporary standards, but after the first half-hour or so it’s manageable for short durations. I’m thinking of epoxying a small knob to the screwdriver-adjustable twiddlepot to simplify the baseline adjustment.

    Alas, even non-working probes and amps have become eBay collectables. You could, of course, buy new.