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: Repairs

If it used to work, it can work again

  • Another Failed CFL Bulb

    Unlike the last CFL failure, this time I noticed the faint smell of electrical death near the Electronics Workbench, but I couldn’t track it down until the can light over the the Bench didn’t start:

    Another Hot-Failed CFL Bulb
    Another Hot-Failed CFL Bulb

    The date code suggests it’s been in the fixture for over a decade, so I can’t complain. Having two unrelated bulbs fail within a week, after years of service, is surely coincidence. If another fails within a week or two, however, it will definitely be Enemy Action.

  • Sandisk Extreme Plus: End of Life

    The Fly6 rear camera on my bike started giving off three long beeps and shutting down. Doing the reformatting / rebooting dance provides only temporary relief, so I think the card has failed:

    Sandisk Extreme Plus vs. Samsung EVO MicroSD cards
    Sandisk Extreme Plus vs. Samsung EVO MicroSD cards

    The Fly6 can handle cards up to only 32 GB, which means I should stock up before they go the way of the 8 GB card shipped with the camera a few years ago.

    Some back of the envelope calculations:

    • It’s been in use for the last 19 months
    • The last 22 trips racked up 88 GB of video data = 4 GB/trip
    • They occurred over the last 6 weeks = 3.6 rides/week
    • Call it 250 trips = 1 TB of data written to the card = 32 × capacity

    That’s only slightly more than the failure point of the Sony 64 GB MicroSDXC cards. The Fly6 writes about a third of the data per trip, so the card lasts longer on a calendar basis.

    So now let’s find out how long the Samsung cards last …

  • Failed Compact Fluorescent Bulb

    An overhead light in the Basement Laboratory went dark:

    Failed CFL bulb
    Failed CFL bulb

    One end of the twisty tube got really really hot as it failed!

    The Lab didn’t smell of electrical death, so the bulb must have failed while I was elsewhere. Metal enclosures with actual UL ratings suddenly seem like a Good Idea …

  • Model M Keyboard Surprise

    A friend gave me a New Old Stock IBM Model M keyboard, built by Lexmark on 1/30/96. Although I intended to try it out, I first showed it to Mary and it immediately ended up at her desk:

    IBM Model M 1996 - media keys
    IBM Model M 1996 – media keys

    I favor off-lease Dell boxes intended for office use, so the PS/2 plug on the end of the (permanently attached) cable slid right into the PS/2 jack on the back panel. Gotta love it.

    She’d been hammering out testcases and doc on Model M keyboards basically forever, so her fingers snapped into position and the room sounds like her old IBM office.

    The “101 key” layout predates frippery along the lines of multimedia keys, so I gimmicked the top row of the numeric pad to control the mixer volume and muting toggle:

    • /amixer sset 'Master' 10%-
    • *amixer sset 'Master' 10%+
    • amixer sset 'Master' toggle

    While doing that, I found the semicolon key fired at the slightest touch, so I popped the keycap to see if I could frighten it into compliance:

    IBM Model M 1996 - dome switch
    IBM Model M 1996 – dome switch

    Huh.

    It seems Lexmark replaced the classic buckling spring mechanism with less clicky rubber dome switches, even back in 1996, perhaps for use in libraries & suchlike. Come to think of it, this place is more like a library than an office, so muted clickiness seems appropriate.

    For completeness:

    IBM Model M 1996 - label
    IBM Model M 1996 – label
  • Vacuum Tube LEDs: PAR30 Halogen Spotlight

    Breaking the fake heatsink off the big floodlight, drilling out the guts, and rebuilding it with a WS2812 RGBW LED left the PET braid too short for a nice curve from socket to bulb, so I swapped in a smaller and equally defunct PAR30 halogen spotlight:

    PAR30 Halogen - red phase
    PAR30 Halogen – red phase

    And in green:

    PAR30 Halogen - green phase
    PAR30 Halogen – green phase

    The white glass frit ring around the perimeter lights up nicely in the dark.

    The knockoff Arduino Nano now runs the RGBW program, with Morse transmissions disabled and the white LED dialed back to MaxPWM = 32.

  • RAMPS 1.4: LCD Board QC FAIL

    When I plugged the LCD into the RAMPS board, the USB current jumped from 70-ish mA to about 700 mA, which seemed odd. Eventually the problem followed the “Smart Adapter Board”, which has no active components and simply rearranges two pin headers into two ribbon cables, so what could go wrong?

    This stared me in the face for a while until I recognized it:

    RAMPS 1.4 - Smart Adapter - solder mask failure
    RAMPS 1.4 – Smart Adapter – solder mask failure

    Yup, that trace is supposed to run around the corner without merging into the ground plane and, of course, it carries the +5 V power supply to the LCD board. Just another production goof and, I’m certain, the boards don’t get any testing because they’re so simple.

    Two cuts, a bit of scraping, a snippet of Wire-Wrap wire, and it’s all good:

    RAMPS 1.4 - LCD panel
    RAMPS 1.4 – LCD panel

    The white-on-blue display is reasonably legible in person, even if it’s nearly invisible here. Might have something to do with polarization vs. the Pixel’s camera.

    Everything else on the LCD board works fine. I set the beep to 50 ms and the tone to 700 Hz, which suit my deflicted ears better than the defaults.

    Phew!

  • Streaming Radio Player: OLED SPI Speed Fix

    The OLED displays on the streaming radio players have SH1106 controllers supported by the Luma library, which works just fine. Digging into the source shows the default SH1106 setup (see the class spi() at the bottom) uses an 8 MHz clock:

        def __init__(self, spi=None, gpio=None, port=0, device=0,
                     bus_speed_hz=8000000, transfer_size=4096,
                     gpio_DC=24, gpio_RST=25):
    assert(bus_speed_hz in [mhz * 1000000 for mhz in [0.5, 1, 2, 4, 8, 16, 32]])
    

    Alas, the SH1106 doc suggests a maximum SPI clock of 2 to 4 MHz, the latter only with fair skies, a tailwind, and a stiff power supply:

    SH1106 OLED Controller - SPI timing
    SH1106 OLED Controller – SPI timing

    The display doesn’t get updated all that often, so there’s no point in rushing things:

    serial = spi(device=0,port=0,bus_speed_hz=1000000)
    device = sh1106(serial)
    

    They’ve been ticking along without mysterious blanking or mirroring for a bit over two weeks, so I’ll call it a fix.