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

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

  • Satco PAR30 LED Spotlight Teardown

    Satco PAR30 LED Spotlight Teardown

    One of those LED spotlights may have barely outlasted its worthless warranty, but not by much, and has been languishing on the back of the bench with “Flickers hot” scrawled on its side.

    The metal base didn’t respond to twisting, so I slit the threads with a cutoff wheel:

    Satco PAR30 - thread slit
    Satco PAR30 – thread slit

    Applying the screwdriver removed the base to reveal a silicone rubber casting:

    Satco PAR30 - thread silicone
    Satco PAR30 – thread silicone

    The small wire emerging near the edge of the plastic case seems to be the neutral contact to the shell, with a poor enough joint to suggest it might have been why the lamp flickered when it got hot.

    Some brute force snapped the silicone off at the bottom of the plastic case and broke the two wires bringing AC to the PCB:

    Satco PAR30 - thread silicone base
    Satco PAR30 – thread silicone base

    Digging around inside produced a debris field of silicone crumbs, broken resistors, torn caps, and various other components, with zero progress toward removing the shell:

    Satco PAR30 - silicone extraction
    Satco PAR30 – silicone extraction

    A little lathe work converted a chunk of PVC pipe into a crude mandrel supporting the mangled case:

    Satco PAR30 - base cutting setup
    Satco PAR30 – base cutting setup

    A few millimeters of sissy cuts released a silicone O-ring sealing the shell against the reflector:

    Satco PAR30 - O-ring seal
    Satco PAR30 – O-ring seal

    Continuing the cuts eventually revealed the three screws holding the shell to the reflector and the two wires powering the LED:

    Satco PAR30 - reflector separated
    Satco PAR30 – reflector separated

    Chopping off the screws with a diagonal cutter freed the shell and revealed the top of the PCB:

    Satco PAR30 - electronics top
    Satco PAR30 – electronics top

    It really does have a surprising number of components!

    Those three screws connected the LED panel / heatsink to the shell through the back of the double-walled reflector. More brute force peeled the outer shell away and released the panel:

    Satco PAR30 - lens assembly
    Satco PAR30 – lens assembly

    Each of the 5050 packages contains a pair of white LEDs with 5.2 V forward drop for the pair, at the very low test current. They’re all in series, so you’re looking at well over 60 V total forward drop:

    Satco PAR30 - LED panel detail
    Satco PAR30 – LED panel detail

    Note that the wiring, which nobody will ever see, follows the electrical color code of white = common and gray = hot.

    Perhaps I should turn the lens into an interesting art object

  • Discrete LM3909: Blue LED

    Discrete LM3909: Blue LED

    Once again, the discrete LM3909 circuitry can blink a blue LED while running a pair of alkaline cells all the way down to about 1 V, with one cell ending at 0.2 V and the other at 0.8 V. They started out discharged to 1.2 V each during their useful life, then blinked for a month; it’s as good a use for dead cells as I can think of.

    With another pair of not-dead-yet cells providing 2.4 V, it started up again:

    Blue LM3909 2.4V alkaline - 042
    Blue LM3909 2.4V alkaline – 042

    That’s a frame from a short video taken in subdued light, just to show it really does work.

  • Cordomatic 500P Disassembly

    Cordomatic 500P Disassembly

    A pair of antique collectible Cordomatic reels get occasional use in the Basement Laboratory:

    Cordomatic 500P reel - installed
    Cordomatic 500P reel – installed

    The extension cord reel didn’t latch reliably when needed, so …

    There’s an obvious screw on the other side and a non-obvious screw hidden in the obvious place:

    Cordomatic 500P reel - hidden screw
    Cordomatic 500P reel – hidden screw

    The electrical contacts were in good shape, although I smeared the grease around the rings just to make it seem like I did something:

    Cordomatic 500P reel - contacts
    Cordomatic 500P reel – contacts

    The ratchet pawls hide under a riveted cover:

    Cordomatic 500P reel - pawl cover
    Cordomatic 500P reel – pawl cover

    The duct tape shows I’d been in there once before, likely for the same problem, and had already drilled out the rivets.

    Alas, I forgot to take a picture after removing the cover, but the general idea is to put just a dot of oil on the pivots (which, as you’d expect, are the rivets), wiggle everything around, and reassemble in reverse order.

    It’ll surely work long enough that I can forget I was in there twice before …

  • Bafang USB Programming Adapter

    Bafang USB Programming Adapter

    Changing (“programming”) the Bafang BBS02 motor controller parameters requires a USB-to-serial adapter with a connector matching the end of the cable from the motor to the display. While you can buy such things directly from the usual randomly named Amazon sellers, I happen to have a wide variety of bare adapter boards, so I just bought a display extender cable and cut it in half to get the connector; you can apparently buy pigtailed connectors (for more than the price of an extender) if you dislike cutting cables in half.

    Various documents provide versions of the canonical illustration of the motor end of the display cable, as ripped from Penoff’s original documentation:

    Bafang BBS02 display cable pinout
    Bafang BBS02 display cable pinout

    The pin colors correspond to the wiring inside the motor cable, but the extender uses different colors, because nobody will ever know:

    Bafang programmer - wire colors
    Bafang programmer – wire colors

    A bit of work with a continuity meter gave the pinout:

    Bafang BBS02 display extender - wire colors
    Bafang BBS02 display extender – wire colors

    Don’t trust stuff you read on the Intertubes: make your own measurements and draw your own diagrams!

    You want the cable end carrying the sockets to mate with the pins on the motor cable (coming in from the left):

    Bafang programmer - cable ends
    Bafang programmer – cable ends

    Soldering the cable to a known-counterfeit FTDI USB adapter went swimmingly:

    Bafang programmer - USB adapter wiring
    Bafang programmer – USB adapter wiring

    Note that the yellow-blue connection carries the full 48 V from the battery and may or may not have any current limiting / fusing / protection, so be a little more careful than usual in your wiring layout.

    The red jumper from DTR to CTS, shown in all the Amazon and eBay listIngs, turns out to be unnecessary.

    A quick and dirty case (eventually held together with generous hot-melt glue blobs) protects the PCB and armors the cables:

    Bafang USB-serial adapter interior
    Bafang USB-serial adapter interior

    The solid model over on the right looks about like you’d expect:

    Bafang Battery Mount - complete build view
    Bafang Battery Mount – complete build view

    Most of the instructions will tell you to hot-plug the cable to the motor with the battery connected, which strikes me as foolhardy; not all of those pins make contact in the right order, which means you will slap 50-odd volts across the wrong parts of the circuitry.

    Instead:

    • Disconnect the battery
    • Unplug the display
    • Plug the adapter cable into the motor connector
    • Plug the USB cable into the Token Windows Laptop
    • Reconnect the battery
    • Fire up the “programming” routine
    • Send the new configuration to the motor controller
    • Disconnect the battery
    • Unplug the adapter cable
    • Reconnect the display cable
    • Reconnect the battery

    Makes more sense to me, even if it’s more tedious.

    Tuck this OpenSCAD source code for the case into the original program that produces the battery mounts:

    Layout = "Build";               // [Frame,Block,Show,Build,Bushing,Cateye,Case]
    
    … snippage …
    
    // Programming cable case
    
    ProgCavity = [70.0,19.0,10.0];
    ProgBlock = [85.0,25.0,15.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);
        }
    }
    
    // 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")
                translate([0,0,-Kerf/2])
                    ProgrammerCase();
            else
                translate([0,0,ProgBlock.z/2])
                    ProgrammerCase();
        }
    }
    
    … snippage …
    
    // tuck this into the Build conditional
    
        translate([0,3*Block.x,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");
    

  • Tour Easy: Bafang Brake Sensors

    Tour Easy: Bafang Brake Sensors

    Over the decades, we have devoted considerable time and attention to adjusting the reach and travel of the brake levers on Mary’s bike, so I ordered a pair of brake sensors for the Bafang BBS02 motor to mount on the existing hardware:

    Tour Easy Bafang BBS02 - brake sensor - installed
    Tour Easy Bafang BBS02 – brake sensor – installed

    The sensor is the black block secured to the brake mount (with good outdoor foam tape), with the bar magnet similar secured to the handle. The magnet ended up slightly off-center from the switch due to the overlapping joint between the lever and the mount; I can’t detect any difference from having it centered.

    The Bafang switches included cute little disk-shaped neodymium magnets which weren’t suited for the levers and stuck out in all directions without getting particularly close to the sensor. As a result, the least pressure on the brake handle produced a hair-trigger switch activation.

    So I harvested two bar-shaped magnets from a defunct Philips Sonicare toothbrush head, reducing the rather large assortment I’ve been saving for just such an occasion by one item. Each brush head contains a pair magnets attached to a steel backing plate, seen here after removing the lower magnet:

    Tour Easy Bafang BBS02 - brake sensor - donor magnet assembly
    Tour Easy Bafang BBS02 – brake sensor – donor magnet assembly

    I don’t know how Philips attaches the magnets, but a few shots to the steel backing plate with a drift punch breaks the bond without any obvious damage:

    Tour Easy Bafang BBS02 - brake sensor - donor magnet loosened
    Tour Easy Bafang BBS02 – brake sensor – donor magnet loosened

    Neodymium magnets have a nickel plating to prevent corrosion, but AFAICT the only way to know whether I’ve cracked the plating is waiting to see if the magnet falls apart. If it does, I promise to be more careful with the next toothbrush head.

    They’re magnetized through the thinnest section, not along the length like an old-school bar magnet, but the disk magnets are similarly magnetized and I think the net effect is about the same.

    The bars fit the brake handles more closely, put more of the magnet closer to the switch, and allow about 5 mm of travel before tripping the switch.

    Pending more road testing, the switches seem more usable.

    Protip 1: Demagnetize your tools after working with neodymium magnets.

    Protip 2: Don’t put a loose magnet anywhere near your bench block, because it will shatter when it snaps onto the block from a surprising distance.

  • Tour Easy: Bafang Shift Sensor

    Tour Easy: Bafang Shift Sensor

    The shift sensor detects motion of the rear derailleur cable so the Bafang BBS02 can briefly cut motor power while the chain moves across the sprockets:

    Tour Easy Bafang BBS02 - shift sensor - installed
    Tour Easy Bafang BBS02 – shift sensor – installed

    This should be a drop-in fit on most bikes, but the Tour Easy’s front brazed cable stop is a little shorter than the ferrule. Trimming a plastic tube poses little problem:

    Tour Easy Bafang BBS02 - shift sensor - bushing
    Tour Easy Bafang BBS02 – shift sensor – bushing

    The ferrule now fits neatly in the stop, although the sensor casing sits at a slight angle because the stop’s centerline puts the cable slightly closer to the frame than the back of the sensor body will allow. You could mount it elsewhere, but the cable stop sits directly above the motor and doesn’t require an extension cable.

    The sensor works wonderfully well, with the motor pausing for perhaps a second during the shift: just shift normally and it’s done.

    A red LED (the small dot to the right of the label) blinks when the sensor detects a shift, so you can verify its operation on the work stand.