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.

Author: Ed

  • Clearing the Noto Font Clutter: Again

    Installing Atkinson Hyperlegible reminded me to clear out the Noto font clutter in this (relatively recent) Manjaro installation. Of course fonts now appear in slightly different locations with slightly different names, so this remains just a serving suggestion:

    cd /usr/share/fonts/noto
    sudo chmod a-w NotoSans-*
    sudo chmod a-w NotoSansMono*
    sudo chmod a-w NotoSansDisplay*
    sudo chmod a-w NotoSansMath*
    sudo chmod a-w NotoSansSymbol*
    sudo chmod a-w NotoSerif-*
    sudo chmod a-w NotoSerifDisplay*
    sudo chmod a-w NotoMusic*
    sudo chmod a-w NotoMath*
    sudo find . -perm /u=w -name \*ttf -delete
    

    Get rid of some other clutter:

    cd ../TTF
    sudo chmod a-w DejaVu*
    sudo chmod a-w Inconsolata-*
    sudo find . -perm /u=w -name \*ttf -delete
    cd ../droid
    sudo chmod a-w DroidSans-Bold.ttf 
    sudo chmod a-w DroidSans.ttf 
    sudo chmod a-w DroidSansFallback*
    sudo chmod a-w DroidSansMono.ttf 
    sudo chmod a-w DroidSerif-*
    cd ../adobe-source-han-sans
    sudo rm *otf
    

    For unknown reasons, we now have two font cache updaters:

    sudo fc-cache -v -f
    sudo fc-cache-32 -v -f
    

    Now font selection in, say, LibreOffice doesn’t involve paging through a myriad fonts in languages I cannot recognize, let alone read. Admittedly, Inconsolata does have more variations than I’ll ever use.

  • DIY e-Bike Conversions & Solid Modeling: Presentation

    DIY e-Bike Conversions & Solid Modeling: Presentation

    I’ll be talking about e-bikes and the solid modeling required to hang a Bafang motor and battery on your favorite bike for the Poughkeepsie Chapter of the ACM at 1930 EDT this evening:

    Bafang Battery Mount - Show view
    Bafang Battery Mount – Show view

    It’s a Zoom meeting, so (in the unlikely event you have nothing better to do) you could actually “attend”. The ACM meeting description and the Meetup announcement will get you there.

    A PDF of the presentation slides (remember slides?) includes copious linkies to sources / blog posts / distractions:

    If you’re only in it for the geometry, the OpenSCAD source code lives slumbers in a pair of GitHub Gists:

    Tour Easy

    Terry Symmetry

    Enjoy …

  • Bafang Headlight Circuit Current Limit

    Bafang Headlight Circuit Current Limit

    Having just replaced Rev 1 of the amber running light with Rev 3 (about which, more later) on Mary’s Tour Easy, both the front and rear lights began blinking erratically. Given that they have completely independent circuitry, this strongly suggests a power problem.

    Herewith, the headlight circuit voltage:

    Bafang headlight voltage - two 1 W running lights
    Bafang headlight voltage – two 1 W running lights

    The voltage should be a constant 6 or 6.3 V, depending on which description you most recently read. That is the case with only one light attached, so the problem occurs only when running both lights.

    The four pulses come from the amber LED’s Morse code “b” (dah-dit-dit-dit) with a 85 ms dits; the first dah pulse should be three times longer than the dits and definitely isn’t. The rear light’s red LED stays on continuously, except for two dark dits, so it draws a constant current and does not produce any changes in this trace.

    Both lights have 2.0 Ω sense resistors setting the LED current to 400 mA, which corresponds to 250 mA each from the Bafang controller’s 6.3 V headlight circuit. The headlight circuit’s total of 500 mA should work fine, although the “spec” seems to be basically whatever the OEM headlight requires.

    The Rev 1 amber light ran the LED at 360 mA with a supply current around 450 mA. That light and the rear light on the back ran fine, so the supply seems to have a hard maximum current limit at (a bit less than?) 500 mA.

    The least-awful solution seems to be backing off both LED currents to 360 mA to keep the total supply current well under 500 mA.

  • Improved Mini-lathe Disk Turning Fixture

    Improved Mini-lathe Disk Turning Fixture

    Unsurprisingly, the mini-lathe lacks enough stiffness to apply enough force to hold a disk in place while turning its rim:

    Tour Easy Rear Running Light - end cap fixture - swirled adhesive
    Tour Easy Rear Running Light – end cap fixture – swirled adhesive

    The old South Bend lathe had mojo, but those days are gone.

    So drill and tap that fixture for an M3 screw, then stick some coarse sandpaper to it:

    Improved disk turning tool
    Improved disk turning tool

    Snug the screw (a Torx T9 from the Small Drawer o’ Random M3 Screws) down on a rough-cut disk:

    Improved disk turning tool - in use
    Improved disk turning tool – in use

    Sissy cuts remain the order of the day, but the screw applies plenty of clamping force and doesn’t require the hulking live center.

  • UPS SLA Battery Status

    UPS SLA Battery Status

    The UPS coddling the M2 printer began complaining about a bad battery, so I ran (nearly) all the UPS batteries through the tester:

    UPS SLA 2021-10-10

    The two blue flubs in the lower left come from the failed battery, with the dotted trace after charging to 13.7 V and letting the current drop to 20 mA.

    The red and green traces come from two other UPS batteries installed in 2016, with the dotted traces after charging similarly. The orange-ish trace is from the battery in a Cyberpower UPS bought in 2016, so it looks like all batteries of that vintage fade equally.

    Except for another pair of batteries in another UPS that had discharged stone cold dead; it may have been shut down and unplugged during a power outage and they never quite recovered.

    After five years, it’s time to refresh the fleet …

  • Tube Turning Adapters

    Tube Turning Adapters

    Finishing the PVC tubes reinforcing the vacuum cleaner adapters required fixtures on each end:

    Dirt Devil adapter - pipe turning
    Dirt Devil adapter – pipe turning

    Because the tubes get epoxied into the adapters, there’s no particular need for a smooth surface finish and, in fact, some surface roughness makes for a good epoxy bond. The interior of a 3D printed adapter is nothing if not rough; the epoxy in between will be perfectly happy.

    Turning the tubes started by just grabbing the conduit in the chuck and peeling the end that stuck out down to the finished diameter, because the conduit was thick-walled enough to let that work.

    The remaining wall was so thin that the chuck would crunch it into a three-lobed shape, so the white ring in the chuck is a scrap of PVC pipe turned to fit the tube ID and provide enough reinforcement to keep the tube round.

    The conduit ID isn’t a controlled dimension and was, in point of fact, not particularly round. It was, however, smooth, which counts for more than anything inside a tube carrying airborne fuzzy debris; polishing the interior of a lathe-bored pipe simply wasn’t going to happen.

    The fixture on the other end started as a scrap of polycarbonate bandsawed into a disk with a hole center-drilled in the middle:

    Pipe end lathe fixture - center drilling
    Pipe end lathe fixture – center drilling

    Stick it onto a disk turning fixture and sissy-cut the OD down a little smaller than the eventual tube OD:

    Pipe end lathe fixture - turning OD
    Pipe end lathe fixture – turning OD

    Turn the end down to fit the tube ID, flip it around to center-drill the other side, stick it into the tube, and finally finish the job:

    Dirt Devil adapter - pipe fixture
    Dirt Devil adapter – pipe fixture

    The nice layering effect along the tube probably comes from molding the conduit from recycled PVC with no particular concern for color matching.

    A family portrait of the fixtures with a finished adapter:

    Dirt Devil adapter - fixtures
    Dirt Devil adapter – fixtures

    A fine chunk of Quality Shop Time: solid modeling, 3D printing, mini-lathe turning, and even some coordinate drilling on the Sherline.

  • Dirt Devil Vacuum Tool Adapters

    Dirt Devil Vacuum Tool Adapters

    Being the domain expert for adapters between a new vacuum cleaner and old tools, this made sense (even though it’s not our vacuum):

    Dirt Devil Nozzle Bushing - solid model
    Dirt Devil Nozzle Bushing – solid model

    The notch snaps into a Dirt Devil Power Stick vacuum cleaner and the tapered end fits a variety of old tools for other vacuum cleaners:

    Dirt Devil Nozzle Bushing top view - solid model
    Dirt Devil Nozzle Bushing top view – solid model

    Having some experience breaking thin-walled adapters, these have reinforcement from a PVC tube:

    Dirt Devil adapter - parts
    Dirt Devil adapter – parts

    A smear of epoxy around the interior holds the tube in place:

    Dirt Devil adapters - assembled
    Dirt Devil adapters – assembled

    Building the critical dimensions with a 3D printed part simplified the project, because I could (and did!) tweak the OpenSCAD code to match the tapers to the tools. Turning four of those tubes from a chunk of PVC conduit, however, makes a story for another day.

    The OpenSCAD source code as a GitHub Gist:

    // Dirt Devil nozzle adapter
    // Ed Nisley KE4ZNU 2021-10
    // Tool taper shift
    Finesse = -0.1; // [-0.5:0.1:0.5]
    // PVC pipe liner
    PipeOD = 28.5;
    /* [Hidden] */
    //- Extrusion parameters
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    Protrusion = 0.1; // make holes end cleanly
    //———————-
    // Dimensions
    TAPER_MIN = 0;
    TAPER_MAX = 1;
    TAPER_LENGTH = 2;
    Socket = [36.0,37.0,40.0];
    LockringDia = 33.5;
    LockringWidth = 4.5;
    LockringOffset = 2.5;
    Tool = [Finesse,Finesse,0] + [30.0,31.1,30.0];
    AdapterOAL = Socket[TAPER_LENGTH] + Tool[TAPER_LENGTH];
    NumSides = 36;
    $fn = NumSides;
    //———————-
    // 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);
    }
    //——————-
    // Define it!
    module Adapter() {
    difference() {
    union() {
    difference() {
    cylinder(d1=Socket[TAPER_MIN],d2=Socket[TAPER_MAX],h=Socket[TAPER_LENGTH]);
    translate([0,0,LockringOffset])
    cylinder(d=2*Socket[TAPER_MAX],h=LockringWidth);
    }
    cylinder(d=LockringDia,h=Socket[TAPER_LENGTH]);
    translate([0,0,LockringOffset + 0.75*LockringWidth])
    cylinder(d1=LockringDia,d2=Socket[TAPER_MIN],h=0.25*LockringWidth);
    translate([0,0,Socket[TAPER_LENGTH]])
    cylinder(d1=Tool[TAPER_MAX],d2=Tool[TAPER_MIN],h=Tool[TAPER_LENGTH]);
    }
    translate([0,0,-Protrusion])
    PolyCyl(PipeOD,AdapterOAL + 2*Protrusion,NumSides);
    }
    }
    //———————-
    // Build it!
    Adapter();

    The taper in the code almost certainly won’t fit whatever tool you have: measure thrice, print twice, and maybe fit once …