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

  • Streaming Radio Player: Timing Tweaks

    Slowing the SPI clock and updating the drivers having had no noticeable effect on the OLED display corruption, I once again pondered the SH1106 controller timing specs.

    The chip reset seems remarkably slow, even at maximum VCC:

    SH1106 - Reset Timing Specs
    SH1106 – Reset Timing Specs

    I think the relevant code is in the luma.core driver’s serial.py file. On the RPi, it resides in /usr/local/lib/python2.7/dist-packages/luma/core/interface/.

    As far as I can tell, the bitbang class handles all the setup and teardown around the actual data transfers, but it’s not clear (to me, anyway) how it interacts with the underlying hardware SPI machinery.

    So, let’s add some sleepiness to the Reset code:

            if self._RST is not None:
                self._gpio.output(self._RST, self._gpio.LOW)  # Reset device
                time.sleep(1.0e-3)
                self._gpio.output(self._RST, self._gpio.HIGH)  # Keep RESET pulled high
                time.sleep(1.0e-3)
    

    A few milliseconds, rather than a few (hundred) microseconds, won’t make any perceptible difference.

    Similarly, the Chip Select and Address (Command/Data) signals require more delay than might occur between successive Python statements:

    SH1106 - SPI Address and Select Timing Specs
    SH1106 – SPI Address and Select Timing Specs

    This should do the trick, again with excessive delay:

            if self._DC:
                self._gpio.output(self._DC, self._cmd_mode)
                time.sleep(1.0e-3)
    
    ... snippage ...
    
            if self._DC:
                self._gpio.output(self._DC, self._data_mode)
                time.sleep(1.0e-3)
    
    ... snippage ...
    
            if self._CE:
                gpio.output(self._CE, gpio.LOW)  # Active low
                time.sleep(1.0e-3)
    
    ... snippage ...
    
            if self._CE:
                gpio.output(self._CE, gpio.HIGH)
                time.sleep(1.0e-3)
    

    Although it shouldn’t be necessary, I blew away the pyc files to prevent future confusion over who’s doing what with which.

    Once again, this will require several weeks to see whether the situation changes for the better.

  • Sena PS410 Serial Server: Burnin’ In

    The USB serial adapters I use to capture HP54602 scope and HP8591 spectrum analyzer screenshots, as well as monitor the HP Z8501 GPS time standard, lack unique identifiers and appear as unpredictable device nodes.

    After putting up with this for far too long, I dropped $15 on a Sena Technologies PS410 serial server:

    Sena PS410 Serial Server - interior
    Sena PS410 Serial Server – interior

    It needed a new lithium coin cell, of course:

    Sena PS410 Serial Server - as-received CR2032
    Sena PS410 Serial Server – as-received CR2032

    The PCB and chip date codes suggest a 2009 build, so “98” might mean August 2009. Whether that’s the manufacturing date or the best used by date, ya never know.

    The eBay deal didn’t include the power supply, so I hacked a coaxial jack on the back:

    Sena PS410 Serial Server - hacked power jack
    Sena PS410 Serial Server – hacked power jack

    A 14 VDC IBM laptop brick from the pile suits the “9 to 36 V” range printed on the case.

    Poking the “factory reset” switch did what you’d expect and the “console” serial port on the front worked fine. I plugged in the scope, the spectrum analyzer, and the GPS receiver, whereupon the bench took on the unmistakable aroma of electronic death:

    Sena PS410 Serial Server - charred ferrite chip
    Sena PS410 Serial Server – charred ferrite chip

    Some probing suggests FB9 used to be a ferrite bead between serial port 2’s ground pin and the frame ground.

    To compress an afternoon of tinkering into one sentence, there seems to be an occasional 35 VAC difference between the spectrum analyzer and the scope, but only when one or the other is plugged into the PS410. Everything is (now!) plugged into the same branch circuit and, in fact, the same outlet via many power strips, but the difference remains. A different power supply makes no difference, either.

    I managed to burn out the ferrite bead on Port 1 with only the scope and the power supply plugged in, by connecting the scope’s ground lead to the shell of Port 2. That makes no sense: there is no voltage difference between the scope’s serial ground and its probe ground.

    Something Is Not Right, but I’m baffled.

    I have established that the server works fine, even with the charred beads, which is a Good Thing.

  • Bottle Cap Rehabilitation

    Mary acquired this bottle a long time ago and has used it forever, so it has Historic Connotations and cannot be discarded. Alas, the cardboard-and-plastic seal in the cap finally disintegrated; I replaced it with various plastic foams and sheets, none of which worked.

    Finally, I found the cork sheet stash while looking for something else and cut out a disk:

    Rehabilitated bottle cap
    Rehabilitated bottle cap

    It works perfectly, of course, because cork.

    That was easy.

  • Baofeng BL-5 Battery Pack: Recharge and Reassembly

    Separately charging all four cells from the Baofeng BL-5 packs covered the Electronics Bench with wires:

    Baofeng BL-5 cell charging
    Baofeng BL-5 cell charging

    The cell sits on a ceramic tile as a nod to fire safety, although I doubt it makes any difference.

    The discharge tests showed two nearly identical pairs:

    Baofeng BL-5 Cells - Separate Charge - 2018-02-24
    Baofeng BL-5 Cells – Separate Charge – 2018-02-24

    Surprisingly, cells A and B (upper traces) were deaders in the original packs. Cells C and D (lower traces) were more-or-less fully charged, but now have a lower terminal voltage and slightly lower capacity. I have no explanation for that, nor for the voltage undulations.

    The rebuilt packs pair up A+B and C+D.

    Reassembling pairs into the pack shell and resoldering all the leads produces a good pack:

    Baofeng BL-5 battery rebuild
    Baofeng BL-5 battery rebuild

    I later added a snippet of heavy manila paper under the nickel tape bent around the edge of the pack as a third level of insulation, in the interest of having the nickel tape not produce a dead short between the isolated – terminal and the + cell case.

    Memo to Self: tape the long wiggly leads from the protection PCB to the radio contacts (at the left side) before soldering the PCB to the cell terminals, because an inadvertent short will convert the 8205A battery protection IC into a Light-Emitting IC, at least for a moment, and subsequently release the Acrid Smell of Electrical Death. A handful of charge PCBs are en route halfway around the planet, from which I intend to liberate one IC for this board; with luck, I didn’t incinerate anything else.

    The pack works fine in the radio, as does the APRS interface:

    APRS Coverage in Poughkeepsie - 2018-03-01
    APRS Coverage in Poughkeepsie – 2018-03-01

    Unfortunately, two APRS iGates vanished in the last year, leaving poor coverage south of Poughkeepsie.

  • Baofeng BL-5 Battery Pack: Disassembly

    Not much to my surprise, both Baofeng BL-5 lithium batteries went bad on the shelf:

    Baofeng BL-5 Packs - Final Failure - 2018-02-21
    Baofeng BL-5 Packs – Final Failure – 2018-02-21

    The longer traces show their original capacity, back in the day.

    Whacking a chisel into the obvious split lines broke the solvent glue bonds holding the case sections together, after which some slow prying defeated the double sticky foam tape on the cells:

    Baofeng BL-5 battery pack - innards
    Baofeng BL-5 battery pack – innards

    A closer look at the (dis)charge controller PCB:

    Baofeng BL-5 battery pack - protection PCB
    Baofeng BL-5 battery pack – protection PCB

    The other side of the PCB has no components, so what you see is what you get. The larger IC proclaims FS8205A EP050C, which may indicate a vague relation to an S8205 protection IC. The datasheet shows a 16 pin TSSOP package containing an IC for four or five cell batteries, completely unlike the 8 pin package on the PCB, but when you buy enough of anything, you can get anything you want.

    In common with all cheap lithium batteries around here, the “thermistor” terminal connects to a 10 kΩ SMD resistor steadfastly maintaining its resistance in the face of all temperature variations.

    Some probing shows one feeble cell in each pack. Perhaps a Frankenbattery built from the debris will have enough capacity for a standard ride around the block.

  • APRS/Voice HT Interface: Cap Failure

    The TinyTrak3 on the Wouxun adapter wasn’t working, showing a dim red Power LED to indicate it wasn’t getting enough juice. A bit of tracing showed my adapter board provided just over 5 V to the poor thing, not the nearly 9 V it should be getting, which led me to believe the transistor switching the supply had failed. A bit more tracing, however, revealed the true problem:

    Failed electrolytic cap
    Failed electrolytic cap

    The schmutz on the black cap matches up with a crater in the rear of the (originally not so) brown cap.

    The Little Box o’ SMD Caps revealed two nearly identical sets of 33 μF caps, one with a 6 V rating, the other with 16 V rating. Yup, when I added that cap in the hopes of reducing RFI troubles, I soldered the wrong one onto the PCB: it’s my fault!

    The poor thing lasted for over six years with just under 9 V applied to it, so I can’t complain.

    I removed the corpse and reassembled the box without the additional cap (and without the terminals contacting the back of the Wouxun, because reasons). If RFI turns out to be a problem, I’ll take another look at the situation.

  • APRS/Voice HT Interface: Baofeng Mods

    My carefully contrived plug plates for Wouxun radios:

    Wouxun plug plate - epoxy cap
    Wouxun plug plate – epoxy cap

    … of course don’t fit the Baofeng radio. This being in the nature of a final fix, I chopped off enough protrusions to make the remainder fit snugly into the recess.

    APRS-voice HT interface - Baofeng mods
    APRS-voice HT interface – Baofeng mods

    The case containing the TinyTrak3 GPS board and the APRS-voice adapter PCB of course doesn’t fit in place of the Baofeng battery pack, so I replaced the battery contact studs with simple 4-40 screws to prevent heartache & confusion.

    Based on one ride, both Baofeng batteries have very little capacity left after several years on the shelf, which comes as absolutely no surprise whatsoever.