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: Electronics Workbench

Electrical & Electronic gadgets

  • Tour Easy: Amber Running Light

    Tour Easy: Amber Running Light

    Having seen a few bikes with amber “headlights” and being desirous of reducing the number of batteries on Mary’s bike, this seems like an obvious first step:

    Fairing Mounted Side Marker - First Light
    Fairing Mounted Side Marker – First Light

    It descends from the fairing flashlight mount with an entry to suit a 15 mm truck side marker body:

    LightBodies = [
      ["AnkerLC90",26.6,48.0],
      ["AnkerLC40",26.6,55.0],
      ["J5TactV2",25.0,30.0],
      ["InnovaX5",22.0,55.0],
      ["Sidemarker",15.0,20.0],
      ["Laser",10.0,30.0],
    ];
    

    The rest of the code gets a few cleanups you’d expect when you compile code untouched for a few years using the latest OpenSCAD.

    The markers are allegedly DOT rated, which matters not for my use case: SAEP2PCDOT.

    The mount is grossly overqualified for a wide-beam light with little need for aiming:

    Fairing Mounted Side Marker - test light
    Fairing Mounted Side Marker – test light

    Eventually, the marker should slip into a prealigned cylindrical holder, with a dab of epoxy to keep it there.

    The lights are a buck apiece, so there’s no reason to form a deep emotional attachment. They are the usual poorly molded and badly assembled crap, although the next step up from a nominally reputable supplier is a factor of five more expensive.

    It’s generated for the left side of the fairing, although I think having a pair of them would improve conspicuity:

    Fairing Mounted Side Marker - installed
    Fairing Mounted Side Marker – installed

    Being automotive, it runs from a 12 V supply, which comes from a boost converter driven by the Bafang 6 V headlight output. The absurdity of bucking a 48 V lithium battery to a 6V switched headlight output, then boosting it to 12 V to drive a single amber LED with a 1.5 V forward drop does not escape me.

    It’s possible to slice the lens off (using a lathe), remove / replace the resistor, then glue it back together, which would be worthwhile if you were intending to drive it from, say, an Arduino-ish microcontroller to get a unique blink pattern.

    Given the overall lack of build quality, it might make more sense to slap a condenser lens in front of a Piranha LED.

    Bonus: contrary to what you (well, I) might expect, the black lead is positive and the white lead is negative.

  • Bafang BBS02: Assist Power Levels

    Bafang BBS02: Assist Power Levels

    Although Gee’s Terry Symmetry is sized for female bodies, I managed to ride it up and down the driveway while watching the power display:

    Voltage52.5
    Rated Current24
    Max current18
    PowerPower
    PASAssistAmpCalcObservedRatio
    00%0.000~
    14%0.7382669%
    26%1.1575292%
    39%1.6857892%
    413%2.312310485%
    520%3.618918296%
    630%5.428425891%
    750%9.047345396%
    885%15.380367584%
    9100%18.094590095%
    Bafang BBS02 on Terry Symmetry – actual voltage

    The variations in the last column suggest my data-taking is … wobbly, at best.

    I think the displayed power does not come from actual current and voltage measurements, because recalculating the power using the nominal 48 V battery value produces an unnatural agreement:

    Voltage48
    Rated Current24
    Max current18
    PowerPower
    PASAssistAmpCalcObservedRatio
    00%0.000~
    14%0.7352675%
    26%1.15252100%
    39%1.67878100%
    413%2.311210493%
    520%3.6173182105%
    630%5.4259258100%
    750%9.0432453105%
    885%15.373467592%
    9100%18.0864900104%
    Bafang BBS02 on Terry Symmetry – nominal voltage

    The motor controller may measure the actual winding currents while generating the BLDC waveforms, but the values may not be available to the display at the end of the cable. If Bafang documented the commands & responses, we’d know for sure, but they don’t.

    Those assist values come from Mary’s Tour Easy, a much heavier bike than the Symmetry, but the first few levels work well in my limited tests. The highest levels may be too peppy for Gee’s normal routes, but having some serious boost in reserve can defang (hah) the worst hills.

    Terry Symmetry - Tour Easy
    Terry Symmetry – Tour Easy

    IMO, the bike would burn rubber at the motor’s full 24 A current …

  • Discrete LM3909: Green and Blue vs. Dead Alkalines

    Discrete LM3909: Green and Blue vs. Dead Alkalines

    These two discrete LM3909 circuits recently stopped blinking:

    LM3909 AA alkaline - Green and Blue
    LM3909 AA alkaline – Green and Blue

    The green LED (on the left) took six months to wear its pair of not-dead-yet AA alkalines from 2.7 V down to nearly zero.

    The blue LED in the radome took two months to go from 1.0 V (!) to nearly zero. It didn’t start very bright and went decidedly dim along the way, but the LM3909 circuitry still managed to jam a few microamps through the LED.

    In both cases, one of the cells was reverse-charged by a few hundred millivolts, although neither leaked.

    Both got another set of not-quite-dead AA cells and they’re back in action.

  • Bafang BBS02 Programming Adapter: CP2102 Version

    Bafang BBS02 Programming Adapter: CP2102 Version

    The last view before sticking the lid in place with hot melt glue:

    Bafang BBS02 - CP2102 Programming Adapter
    Bafang BBS02 – CP2102 Programming Adapter

    The cable on the right goes to the motor controller through the display pigtail cable, sporting colors from a parallel universe.

    A (possibly not counterfeit) CP2102 USB-to-serial adapter allows a slightly smaller case than one with the known-fake FTDI adapter and added some identification:

    Bafang BBS02 - CP2102 Programming Adapter - case solid model
    Bafang BBS02 – CP2102 Programming Adapter – case solid model

    It splits along the midline for printing, of course.

    The OpenSCAD source code replaces the previous version:

    // Programming cable case
    
    ProgCavity = [60.0,18.0,7.0];
    ProgBlock = [70.0,24.0,13.0];
    ProgCableOD = 4.0;
    
    module ProgrammerCase() {
    
        difference() {
            hull() {
                for (i=[-1,1], j=[-1,1])
                    translate([i*(ProgBlock.x/2 - CornerRadius),j*i*(ProgBlock.y/2 - CornerRadius),-ProgBlock.z/2])
                        cylinder(r=CornerRadius,h=ProgBlock.z,$fn=12);
                }
            translate([-ProgBlock.x,0,0])
                rotate([0,90,0])
                    PolyCyl(ProgCableOD,3*ProgBlock.x,6);
            cube(ProgCavity,center=true);
    
            translate([0,0,ProgBlock.z/2 + ProgCavity.z/2 - EmbossDepth])
                cube(ProgCavity,center=true);
            translate([0,0,-(ProgBlock.z/2 + ProgCavity.z/2 - EmbossDepth)])
                cube(ProgCavity,center=true);
    
        }
    
        translate([0,4,ProgBlock.z/2 - EmbossDepth])
            linear_extrude(height=EmbossDepth)
                text(text="Bafang BBS02",
                     size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                     halign="center",valign="center");
    
        translate([0,-4,ProgBlock.z/2 - EmbossDepth])
            linear_extrude(height=EmbossDepth)
                text(text="Programmer",
                     size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                     halign="center",valign="center");
    
        translate([0,4,-ProgBlock.z/2])
            linear_extrude(height=EmbossDepth)
                mirror([1,0])
                    text(text="Ed Nisley",
                        size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                        halign="center",valign="center");
        translate([0,-4,-ProgBlock.z/2])
            linear_extrude(height=EmbossDepth)
                mirror([1,0])
                    text(text="softsolder.com",
                        size=5,spacing=1.00,font="Bitstream Vera Sans:style=Bold",
                        halign="center",valign="center");
    
    }
    
    // Half case sections for printing
    
    module HalfCase(Section = "Upper") {
    
        intersection() {
           translate([0,0,ProgBlock.z/4])
                cube([2*ProgBlock.x,2*ProgBlock.y,ProgBlock.z/2],center=true);
            if (Section == "Upper")
                ProgrammerCase();
            else
                translate([0,0,ProgBlock.z/2])
                    ProgrammerCase();
        }
    }
    
    // .. snippage ..
    
            translate([0,2*Block.x/2 * gap,0]) {
    
                translate([gap*ProgBlock.x/2,0,ProgBlock.z/2])
                    rotate([180,0,0])
                        HalfCase("Upper");
                translate([-gap*ProgBlock.x/2,0,0])
                    HalfCase("Lower");
            }
    

    My friend rides about the same way we do, except from a much higher perch, so I’ll start her off with a configuration similar to the one we settled on for Mary’s Tour Easy.

  • Aceco FC1002 Battery Re-replacement

    Aceco FC1002 Battery Re-replacement

    My old Aceco FC1002 frequency meter stopped working without being plugged into the charger. It runs from a quartet of NiMH cells taped into a tray I made seven years ago:

    Aceco FC1002 - hacked battery
    Aceco FC1002 – hacked battery

    One of the cells was completely dead and the other three will blink LEDs for the rest of their lives.

    The Eneloops have trickled down from the DSC-H5 and still seem perfectly fine for ordinary use.

    The faceplate bears the scars of its cracked acrylic (?) coating, so I pushed it out, traced the outline on a flat piece of polypropylene clamshell packaging, cut it out, and stuck it in place with tapeless sticky:

    Aceco FC1002 - polypropylene faceplate
    Aceco FC1002 – polypropylene faceplate

    That removes the branding, but IMO improves the appearance.

    It should continue working for another half decade or so!

  • Bafang Programming Adapter: More Cable Colors

    Bafang Programming Adapter: More Cable Colors

    In the process of installing a Bafang BBS02 mid-drive motor on a friend’s diamond-frame bike, I discovered, once again, how little anybody cares about the colors inside cables:

    Bafang Display Extension Cable - internal colors
    Bafang Display Extension Cable – internal colors

    The cheerful rainbow on the right is the stub end of the Bafang display extension cable I built into the previous adapter.

    The new cable on the left seemed like it might match the canonical colors:

    Bafang BBS02 display cable pinout
    Bafang BBS02 display cable pinout

    It comes heartbreakingly close:

    Bafang Display Cable - extension colors
    Bafang Display Cable – extension colors

    Brown and Orange connect as the naive user might expect, which does reduce the likelihood of incinerating the motor controller / USB adapter / laptop by connecting the 48 V battery directly to the logic-level electronics.

    However, White wasn’t on the original menu, Green is now TXD, and Black has become, comfortingly, GND.

    Verily, it is written: Hell hath no fury like that of an unjustified assumption.

    This socket connector has a watertight shell making it extremely difficult to mate and unmate with the pin connector on the bike. Watertightness being unnecessary, a little razor-knife action seems in order:

    Bafang Display Extension Cable - shroud trimming
    Bafang Display Extension Cable – shroud trimming

    Visually, they’re both green-ish, but sometimes the Pixel camera accentuates any differences.

  • Nuheara IQbuds² MAX vs. Bose Hearphones

    Nuheara IQbuds² MAX vs. Bose Hearphones

    [Update: I pointed to this post in a comment on the Bose Community forum, wherein I mentioned the lack of Bluetooth in their Sound Control hearing aids. It seems “Posts on any board, including Hearphones, on the Bose Community regarding the Bose SoundControl Hearing Aids will be removed by our moderators”, so they edited out those paragraphs. Fair enough: it’s their playground, so they set the rules’]

    Having recently bought a set of Nuheara IQbuds² MAX hearing assistance buds, I get “So, what do you think?” invitations to leave a review. As expected, the third-party company handling the reviews will strip-mine my personal bits for their own ends; I see plenty of upside for them and none for me.

    So these brief notes, compiled before I read the Okendo TOS, should serve the same purpose as an actual review, minus the nonsense of providing even more of my sensitive bits.

    Bose discontinued their Hearphones last year. While I’m reasonably happy with how mine work, they seem to last about a year before something fails. Bose replaced the first unit after its covering delaminated, replaced the second unit when a wire failed in the left microphone, and the third unit is now approaching one year of steady use.

    The Hearphone necklace curled around the IQbuds charging case:

    Bose Hearphones - Nuheara IQbuds2 MAX
    Bose Hearphones – Nuheara IQbuds2 MAX

    Comparing the IQBuds² MAX to the Bose Hearphones:

    • Heavier in the ears, but without the necklace
    • Poor battery runtime, both have non-replaceable batteries
    • Poor ear seal with silicone tips, OK with Nuheara’s foam tips
    • Immediate access to “World off” mode!
    • “World off” mode seems noisier, even with ANC on
    • Better dynamic noise control / filtering

    The tradeoff for not having the Bose necklace is, of course, carrying a smaller battery in each ear. Everybody’s claimed run times are optimistic, but after a year the Hearphones still last the better part of a day, while new IQbuds generate range anxiety after a morning and must then spend a while recharging in their case.

    The stock IQbud silicone tips exert entirely too much pressure on my ear canals. The foam tips produce a much better seal and were easier to wear for more than a few hours. The Bose “Stayhear” shaped silicone tips fit much better and suppress external sound just as well as the IQbud foam tips.

    Replacing the stock IQbuds foam tips (described as “Comply memory foam”) with actual Comply memory foam tips directly from Comply was a definite step up that should not be necessary; they are similar, but visibly different. According to Comply’s online fit selector, you need their Isolation T-167 Sennheiser-specific tips, even though Nuheara hardware appears in Comply’s selector.

    The IQbuds tap controls, except for the simplest single tap, barely work. I cannot perform a double-tap, because the bud registers the first tap as a single tap and either discards the second tap or registers it as another single tap. Long taps generally work, except when they don’t, having nothing to do with tap duration or force. Tech support tells me the buds use the audio signal to determine when a finger taps the bud, but AFAICT tap sensitivity is much too high and the discrimination entirely too unfussy.

    Amusingly, nibbling dark chocolate can produce exactly the correct audio signal to trigger the “World off” tap in the right bud and, occasionally, the “Play / Pause” tap in the left bud. I rest my case.

    For someone requiring far more audio gain than a typical hipster, firmly tapping an ear bud is an … uncomfortable … user interface.

    Fortunately, a single correctly executed tap on the right bud mutes the microphones and turns on Active Noise Cancellation; the Hearphones bury that vital function on a tiny icon inside the Bose app, requiring many seconds to start and activate.

    The IQbuds app (and, presumably, the bud firmware) does not allow assigning any tap function to any bud + tap pattern. For example, there’s no way to access both “change location” and “change focus” by tapping, because both those functions can be activated only by the right bud’s long tap: you may select one or the other. Weirdly, volume and media controls appear nearly everywhere and, if double taps worked, they’d be useful.

    The Hearphones are much better at muting relatively quiet ambient sound, to the extent that I thought the IQbud “World off” function didn’t work. It does, even though it seems tuned to suppress much higher noise levels. Both do a surprisingly good job suppressing loud yard tools, perhaps due to my inability to hear frequencies over a few kHz.

    The IQbud noise suppression exhibits horrible gain pumping in noisy environments and windy conditions. It rolls off the overall gain and filters the higher frequencies as the ambient noise increases, then restores them in a rush as the noise subsides: repeating the cycle as the noise level changes. This is very unpleasant and, AFAICT, there is no way to forcibly set a specific gain / bandwidth other than turning the suppression completely off, which misses the point.

    Bottom line: I use the IQbuds and they definitely help my hearing, but I don’t particularly like them.

    To be fair, I don’t like the Hearphones necklace very much, either, even though, overall, Bose did a better job with the actual earpieces.