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 Battery Replacement

    Nuheara IQbuds² MAX Battery Replacement

    Nuheara predicts two to three years of battery lifetime for their IQbuds² MAX not-really-hearing-aids and, indeed, after 2-½ years of more-or-less steady use, the right bud developed a bad case of not charging fully and discharging quickly. The batteries are not, of course, customer-replaceable, so one can:

    • Buy a single bud
    • Buy a complete new pair + case + accessories
    • Ask about their repair service

    Unsurprisingly, a single bud costs more than half the cost of the full set and the repair service is a complete mystery. Given that the left bud’s battery will likely fail in short order, let’s find out what’s inside.

    Your ear sees this side:

    Nuheara IQbud - bottom view
    Nuheara IQbud – bottom view

    The dark oval is a (probably IR) sensor telling the bud when it’s jammed in your ear.

    Everybody else sees this side:

    Nuheara IQbud - top view
    Nuheara IQbud – top view

    The small slit over on the right and the two holes around the top seem to be for various microphones.

    Jamming a plastic razor blade into the junction between the two parts of the case, just under the mic slit, and gently prying around the perimeter eventually forces the adhesive apart:

    Nuheara IQbud - case splitting
    Nuheara IQbud – case splitting

    Do not attempt to yank the two pieces apart, because a ribbon cable joins the lower and upper PCBs:

    Nuheara IQbud - ribbon cable
    Nuheara IQbud – ribbon cable

    The metallic disk in the lower part is the lithium battery.

    Ease the upper part away, being very careful about not tugging on the ribbon cable:

    Nuheara IQbud - raising battery
    Nuheara IQbud – raising battery

    The battery has moved upward, revealing the lower PCB.

    Rolling the upper part toward the ribbon cable eventually produces enough space to extract the battery:

    Nuheara IQbud - battery freed
    Nuheara IQbud – battery freed

    Note the orientation:

    • The rebated end is the negative terminal and faces outward
    • The wider end is the positive terminal and faces inward

    With the battery out, you can admire the PCBs and ribbon cable:

    Nuheara IQbud - interior view
    Nuheara IQbud – interior view

    What is not obvious from the picture: two pairs of spring-loaded pogo pins contacting the battery. There is no actual battery holder, as it’s just tucked into the structure of the bud, with the perimeter adhesive providing the restraining force for the pogo pins.

    The battery seems a variant of a standard 1654-size lithium cell:

    Nuheara IQbud - OEM ZJ1654A lithium cell
    Nuheara IQbud – OEM ZJ1654A lithium cell

    The 1654 cells I got came with wire leads welded to the cell and a complete Kapton enclosure; apparently other devices use soldered connections rather than pins. They proudly proclaim their “Varta” heritage, but I have no way to prove they actually came from Germany.

    I snipped off the wires, carved a pair of holes through their Kapton for the contact pins, tucked the cell in the bud, pressed the halves together, applied a clamp, then wrapped a strip of Kapton tape around the perimeter:

    Nuheara IQbud - reassembled
    Nuheara IQbud – reassembled

    It seems remarkably easy to wrap the tape over the front microphone, but don’t do that. Conversely, sealing the entire perimeter is the only way to prevent acoustic feedback, so I added a snippet of tape just under the front mic opening.

    Do that for the other bud and declare victory.

    That is, fer shure, not the most stylin’ repair you’ve ever seen, but I was (for what should be obvious reasons) reluctant to glue the halves together. I expect the tape to peel off / lose traction after a while, but I have plenty of tape at the ready. Worst case, I can glop some adhesive in there and hope for the best.

    Because the buds lost power during their adventure, they required a trip through their charging case to wake them up again. After that, they work as well as they did before, with consistently longer run time from both buds.

    Whew!

  • Moonlander Keyboard vs. Board Chow

    Moonlander Keyboard vs. Board Chow

    The Moonlander keyboard has per-key LEDs that I’ve denatured enough that most show a pale gray, with a few others highlighted in orange. A few weeks ago the LEDs on the right-hand thumb cluster and the N key went nuts, cycling through a surprising assortment before settling on bright red; the obvious resets / firmware reflashing / tapping were all unavailing.

    ZSA’s tech support recommended taking the thumb cluster apart to check the ribbon cable connecting it to the main keyboard half:

    Moonlander thumb cluster - PCB bottom
    Moonlander thumb cluster – PCB bottom

    Come to find out my unclean personal habits lodged a particularly corrosive nugget of board chow on the cable:

    Moonlander - corroded ribbon cable
    Moonlander – corroded ribbon cable

    It’s a more-or-less standard 0.5 mm pitch cable, but only 20-ish mm long, much shorter than the cables carried by the usual sources. ZSA sells them for $2 each, plus $25 courier shipping, so I bought three; they arrived in two days from halfway around the planet.

    Because I don’t foresee my personal habits changing any time soon, I tucked a Kapton tape snippet in the gap to serve as a gutter:

    Moonlander thumb cluster - tape shield installation
    Moonlander thumb cluster – tape shield installation

    That’s with the two hinge screws out and the cluster eased down-and-away from the keyboard enough to get the tape pressed against the keyboard.

    With the screws installed and the cluster at its normal most-downward angle, the gutter closes up:

    Moonlander thumb cluster - tape shield folded
    Moonlander thumb cluster – tape shield folded

    With the cluster in its normal operating position (for me, anyway), the gutter is nearly invisible:

    Moonlander thumb cluster - normal position
    Moonlander thumb cluster – normal position

    For the record, I tucked the remaining ribbon cables inside the left-hand thumb cluster against future need.

  • Cheap Rechargeable Kitchen Scale: FAIL

    Cheap Rechargeable Kitchen Scale: FAIL

    While pondering what to do with the shattered kitchen scale, I got a bottom-dollar replacement touting its rechargeable lithium battery. After giving it the obligatory charge-before-using, I put it in service. Five days later, its battery was dead flat discharged.

    So I gutted it to extract the battery:

    Cheap digital scale - lithium cell
    Cheap digital scale – lithium cell

    It’s a cute little thing, isn’t it?

    Much to my surprise, the obligatory battery rundown test showed it matches its 0.74 W·hr label:

    Kitchen Scale - Charge1
    Kitchen Scale – Charge1

    We all know where this is going, right?

    Crunche a connector on the battery, another on the scale, and make up a suitable current tap for a meter:

    Cheap digital scale - current measurement setup
    Cheap digital scale – current measurement setup

    Which looked like this:

    Cheap digital scale - active current
    Cheap digital scale – active current

    That’s about what I found for the craptastic scale running from a pair of CR2032 primary cells, so it’s not out of line.

    Turn off the scale and measure the idle current:

    Cheap digital scale - inactive current
    Cheap digital scale – inactive current

    Do you think I got a dud?

    For all I know, the little microcontroller under the epoxy blob is running a continuous attack on my WiFi network, with the intent of siphoning off all my sensitive bits. Ya never know.

    Dividing the battery’s 200 mA·hr rating by 4 mA says it really should be dead in 50 hours, which is close enough to five days: diagnosis confirmed!

    Rather than fight, I switched to a battery with more capacity:

    Cheap digital scale - NP-BX1 replacement
    Cheap digital scale – NP-BX1 replacement

    It’s long past its prime, but ought to last for a month, which is about as long as the shattered scale survived on a similar battery.

    Sheesh & similar remarks.

  • Newmowa NP-BX1

    Newmowa NP-BX1

    After a year’s service in my Sony AS-30V helmet camera, the Newmowa NP-BX1 lithium cells perform pretty nearly as well as they started out:

    NP-BX1 - Newmowa 2022 - 2023-08
    NP-BX1 – Newmowa 2022 – 2023-08

    Recharging the cells after that test averaged 907 mA·hr within 2%, so they’re still reasonably well grouped.

    The camera burns 1.9 W, so the worst of the cells has a 100 minute runtime = 3.3 W·hr/1.9 W × 60 min/hr,.

    Our usual weekday rides run a little over an hour and I change the batteries during our longer weekend rides, so they rarely see more than an hour’s use.

    A recent 1-¼ hour = 75 minute ride soaked up 687 mA·hr, just about exactly 75% of 907 mA·hr. Gotta love it when the numbers work.

    Surprisingly good performance, given the drama involved in finding those cells. I wonder if that will hold next year when I buy another set?

  • Eneloop AAA Cells: Six Years of Blinkiness

    Eneloop AAA Cells: Six Years of Blinkiness

    With the rear running lights up and mmmm running on our Tour Easy recumbents, I could finally retire the Planet Bike Superflash blinkie after a decade of constant use:

    Superflash on Tour Easy
    Superflash on Tour Easy

    For the last six years, a set of eight Panasonic Eneloop AAA cells have been marching in pairs through the Superflashes in lockstep alphabetic order. We ride several times a week, less in the winter, and I changed the batteries once a week whether they need it or not, so they’ve gone through maybe 200 charge cycles. With four pairs and two bikes, that’s 100 cycles each.

    They’re not dead yet, but they’re showing signs of age:

    Eneloop AAA - final - 2023-08
    Eneloop AAA – final – 2023-08

    In round numbers, the capacity is down 20% from their original 850 mW·hr. The 50 to 75 mV depression is probably more significant for an LED power supply intended for alkaline cells, as the light was running from 2.3 V instead of 3 V.

    They worked surprisingly well, all things considered.

    Nowadays, one might use bucked lithium cells with a constant 1.5 V output for their entire discharge curve, although I absolutely do not believe a claimed 1000+ mW·hr capacity.

  • Tour Easy Running Lights: Firmware

    Tour Easy Running Lights: Firmware

    The optoisolator carrying the Bafang controller’s LIGHT signal pulls Pin 2 down to turn the LED on constantly for night riding:

        if (!Morser.continueSending())
            if (digitalRead(PIN_LIGHTMODE) == HIGH)
                Morser.startSending();
            else
                digitalWrite(PIN_OUTPUT,HIGH);      // constantly turn on in headlight mode
    

    That’s the entirety of the program’s loop() function, so there’s not much to the firmware.

    Imagine that: a whole computer devoted to sampling an input bit a zillion times a second and persistently setting an output bit:

    Tour Easy Running Light - Arduino view
    Tour Easy Running Light – Arduino view

    The Morse output to the rear is now “s” rather than “i” for more blinkiness, but I doubt anybody will ever notice.

    The next time I raise the hood on this thing, I’ll add a digital input to select FRONT or REAR mode to get me out of having to remember which hardware goes where.

    The Arduino source code as a GitHub Gist:

    // Tour Easy Running Light
    // Ed Nisley – KE4ZNU
    // September 2021
    // 2023-03 preprocessorize for front/rear lights
    // https://github.com/markfickett/arduinomorse
    #include <morse.h>
    // Bafang headlight output pulls pin low
    #define PIN_LIGHTMODE 2
    #define PIN_OUTPUT 13
    #define FRONT
    #if defined(FRONT)
    #define BLINKS "b e "
    #define POLARITY false
    #elif defined(REAR)
    #define BLINKS "s "
    #define POLARITY true
    #else
    #error "Needs FRONT or REAR"
    #endif
    // second param: true = active low output
    LEDMorseSender Morser(PIN_OUTPUT,POLARITY,(float)10.0);
    void setup()
    {
    pinMode(PIN_LIGHTMODE,INPUT_PULLUP);
    Morser.setup();
    Morser.setMessage(String("qst de ke4znu "));
    Morser.sendBlocking();
    Morser.setSpeed(75);
    Morser.setMessage(String(BLINKS));
    }
    void loop()
    {
    if (!Morser.continueSending())
    if (digitalRead(PIN_LIGHTMODE) == HIGH)
    Morser.startSending();
    else
    digitalWrite(PIN_OUTPUT,HIGH); // constantly turn on in headlight mode
    }

  • Tour Easy Running Lights: Mechanics

    Tour Easy Running Lights: Mechanics

    The running lights have the same general structure as before and fit into the same front and rear holders:

    Tour Easy Running Light - rear installed
    Tour Easy Running Light – rear installed

    I made the recess slightly deeper to provide a bit more protection to the lens:

    Tour Easy Running Light - front installed
    Tour Easy Running Light – front installed

    The lenses have a 10° beam angle, so a few more millimeters of sidewall doesn’t intercept much light.

    The layout doodle grew a few more notes:

    Tour Easy running light - housing dimensions
    Tour Easy running light – housing dimensions

    I had the good idea of boring the tube, knurling the rod, then epoxying the two together before cutting the rod:

    Tour Easy Running Light - heatsink curing
    Tour Easy Running Light – heatsink curing

    Which let the lathe hold them in perfect alignment during curing:

    Tour Easy Running Light - heatsink plug alignment
    Tour Easy Running Light – heatsink plug alignment

    The rod fits through the lathe spindle and I intended to use it as an arbor while turning the tube exterior, then cut the finished heatsink off flush.

    Which really good idea lasted until the next morning, when I looked at the setup and immediately cut the rod flush with the tube. Because reasons, perhaps excess blood in my caffeine stream.

    So I had to finish the heatsink on hard mode right up against the chuck:

    Tour Easy Running Light - turning heatsink rebate
    Tour Easy Running Light – turning heatsink rebate

    Flipping it around and gripping that little rebate to skim the OD down to 25 mm seemed fraught with peril, so I stabilized the open end with a chuck and plenty of oil; the live center was just too big around for the job.

    Dang, I hate it when I screw up a nice plan.

    Then drill various holes on the Sherline and epoxy the circuit support plate:

    Tour Easy Running Light - circuit plate curing
    Tour Easy Running Light – circuit plate curing

    After boring the PVC pipe to 23 mm ID, I made a pair of Delrin fixtures to simplify turning the exterior to 25 mm before parting it off:

    Tour Easy Running Light - turning body OD
    Tour Easy Running Light – turning body OD

    The PVC is so thin the Arduino’s LEDs shine right through:

    Tour Easy Running Light - installed top view
    Tour Easy Running Light – installed top view

    The radioactive green endcap is ordinary laser-cut fluorescent edge-lit acrylic with sunlight through the garage door on the left. I used red acrylic for the taillight to encourage their separate identities.

    The knockoff Arduino Nano fits on one side of the support plate:

    Tour Easy Running Light - Arduino view
    Tour Easy Running Light – Arduino view

    And the current regulator on the other:

    Tour Easy Running Light - current regulator
    Tour Easy Running Light – current regulator

    Because these run from a dedicated 6.3 V step-down regulator, rather than the Bafang controller’s headlight output, the 2.0 Ω sense resistor sets the LED current to 0.8 V / 2.0 Ω = 400 mA, which is pretty close to the LED 1 W spec.

    The white blob at the end of the two ribbon cable wires is the optoisolator pulling down a pin when the LIGHT signal is active, telling the firmware to stop the normal blink pattern and just turn the LED on all the time. This will come in handy if I ever do any night riding.

    The LED is epoxied to the aluminum shell (with metal-filled JB Weld) and the whole affair never gets more than comfortably warm even with the LED running constantly.

    I think they came out All Good™, despite various blunders along the way.