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

  • Adding a Device to LTSpiceIV

    Searching around for an LM386 SPICE model turned up this useful thread.

    The model has some limitations, discussed there, but seems practical. So far, the main gotcha is that the output voltage doesn’t center neatly at Vcc/2, but that’s in the nature of fine tuning.

    The trick is getting the model & symbol into Linear Technology’s LTSpiceIV

    Running under WINE in Xubuntu, the emulated C drive is in your home directory at

    .wine/drive_c/

    with the Linear Tech LTSpiceIV files tucked inside that at

    .wine/drive_c/Program\ Files/LTC/LTspiceIV/

    Incidentally, WINE puts the program icon in

    .local/share/icons/05f1_scad3.0.xpm

    It’s not clear what the prefix means, but the actual executable is scad3.exe (I think that’s historical cruft, as the new overall name is LTSpiceIV).

    Copy the LM386.sub file to lib/sub and the LM386.asy file to lib/sym, then restart LTSpiceIV.

    After putting the symbol in the schematic, I had to edit its attributes (other-click the symbol), make both InstName & Value visible to see them on the schematic, then move them to somewhere other than dead-center in the symbol. I can’t figure out how to make that happen automagically, as it does with other symbols. Comparing the two files to ordinary components doesn’t show anything obviously missing.

    Link rot being what it is, here’s the LM386.sub file:

    * lm386 subcircuit model follows:
    
    ************************************original* IC pins:     2   3   7   1   8   5   6   4
    * IC pins:     1   2   3   4   5   6   7   8
    *              |   |   |   |   |   |   |   |
    .subckt lm386 g1  inn inp gnd out  vs byp g8
    ************************************original*.subckt lm386 inn inp byp  g1  g8 out  vs gnd
    
    * input emitter-follower buffers:
    
    q1 gnd inn 10011 ddpnp
    r1 inn gnd 50k
    q2 gnd inp 10012 ddpnp
    r2 inp gnd 50k
    
    * differential input stage, gain-setting
    * resistors, and internal feedback resistor:
    
    q3 10013 10011 10008 ddpnp
    q4 10014 10012 g1 ddpnp
    r3 vs byp 15k
    r4 byp 10008 15k
    r5 10008 g8 150
    r6 g8 g1 1.35k
    r7 g1 out 15k
    
    * input stage current mirror:
    
    q5 10013 10013 gnd ddnpn
    q6 10014 10013 gnd ddnpn
    
    * voltage gain stage & rolloff cap:
    
    q7 10017 10014 gnd ddnpn
    c1 10014 10017 15pf
    
    * current mirror source for gain stage:
    
    i1 10002 vs dc 5m
    q8 10004 10002 vs ddpnp
    q9 10002 10002 vs ddpnp
    
    * Sziklai-connected push-pull output stage:
    
    q10 10018 10017 out ddpnp
    q11 10004 10004 10009 ddnpn 100
    q12 10009 10009 10017 ddnpn 100
    q13 vs 10004 out ddnpn 100
    q14 out 10018 gnd ddnpn 100
    
    * generic transistor models generated
    * with MicroSim's PARTs utility, using
    * default parameters except Bf:
    
    .model ddnpn NPN(Is=10f Xti=3 Eg=1.11 Vaf=100
    + Bf=400 Ise=0 Ne=1.5 Ikf=0 Nk=.5 Xtb=1.5 Var=100
    + Br=1 Isc=0 Nc=2 Ikr=0 Rc=0 Cjc=2p Mjc=.3333
    + Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n
    + Tf=1n Itf=1 Xtf=0 Vtf=10)
    
    .model ddpnp PNP(Is=10f Xti=3 Eg=1.11 Vaf=100
    + Bf=200 Ise=0 Ne=1.5 Ikf=0 Nk=.5 Xtb=1.5 Var=100
    + Br=1 Isc=0 Nc=2 Ikr=0 Rc=0 Cjc=2p Mjc=.3333
    + Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n
    + Tf=1n Itf=1 Xtf=0 Vtf=10)
    
    .ends
    *----------end of subcircuit model-----------

    And the corresponding LM386.asy file:

    Version 4
    SymbolType CELL
    LINE Normal -64 -63 64 0
    LINE Normal -64 65 64 0
    LINE Normal -64 -63 -64 65
    LINE Normal -60 -48 -52 -48
    LINE Normal -60 48 -52 48
    LINE Normal -56 52 -56 44
    LINE Normal -48 -80 -48 -55
    LINE Normal -48 80 -48 57
    LINE Normal -44 -68 -36 -68
    LINE Normal -40 -72 -40 -64
    LINE Normal -44 68 -36 68
    LINE Normal -16 -39 -16 -64
    LINE Normal 0 32 0 48
    LINE Normal 48 -8 48 -32
    SYMATTR Value LM386
    SYMATTR Prefix X
    SYMATTR ModelFile LM386.sub
    SYMATTR Value2 LM386
    SYMATTR Description Low power audio amplifier
    PIN -16 -64 LEFT 8
    PINATTR PinName g1
    PINATTR SpiceOrder 1
    PIN -64 -48 NONE 0
    PINATTR PinName In-
    PINATTR SpiceOrder 2
    PIN -64 48 NONE 0
    PINATTR PinName In+
    PINATTR SpiceOrder 3
    PIN -48 80 NONE 0
    PINATTR PinName V-
    PINATTR SpiceOrder 4
    PIN 64 0 NONE 0
    PINATTR PinName OUT
    PINATTR SpiceOrder 5
    PIN -48 -80 NONE 0
    PINATTR PinName V+
    PINATTR SpiceOrder 6
    PIN 0 48 LEFT 8
    PINATTR PinName bp
    PINATTR SpiceOrder 7
    PIN 48 -32 LEFT 8
    PINATTR PinName g8
    PINATTR SpiceOrder 8

    Props to Roff, who actually created those files…

  • Anderson Powerpoles: Stress Relief

    This is quick & easy. When you’re making a Powerpole connector, shrink a length of small heatshrink tubing over the end of the terminal after crimping.

    Heatshrink tubing stress relief for Anderson Powerpole terminals
    Heatshrink tubing stress relief for Anderson Powerpole terminals

    You can’t cover the entire crimped region, lest the terminal not snap into the housing, but halfway seems to work fine.

    The goal is to keep the wires from flexing right at the end of the terminal, which is exactly where they’ll break.

    I’ve also wrapped a length of self-vulcanizing rubber tape around the entire connector housing and the wire, which is appropriate for high-stress applications. Looks hideous, though, not that that matters much.

  • Bike Lighting: Automotive Specs

    Having recently taken a thorough drubbing on the ‘Bentrider forums for having a rear-facing white light on my bike, I should accelerate my plans for a red / amber taillight.

    This Philips LumiLED app note gives some specs on automotive lighting. The one we bikies all tend to ignore is the surface area: greater than 37.5 square centimeters for rear combination stop-turn fixtures. Call it a scant 4 inches in diameter. You’ve never seen a bike light that large, have you?

    LED combo tail stop light
    LED combo tail stop light

    Maybe the right thing to do is start with a street-legal truck light and build some electronics around it. This is a 4 inch diameter, 44 LED rear light with both taillight and brake light terminals. At 12 V, the taillight draws 10 mA and the brake light is 250 mA. Got it from Gemplers with a recent order, but they’re certainly not the optimum supplier if that’s all you’re buying.

    Obviously, it’s unreasonable to run a 3 watt taillight on a bike, as the most recent crop of single-LED killer headlights are merely a watt or three. Battery life remains a problem.

    At 10% duty cycle the brake LEDs would average 300 mW. That might be roughly comparable to the running lights on some cars these days.

    With the taillight constantly energized and the brake flashing at 4 Hz, it’d be 120 + 0.5 * 300 = 270 mW.

    That’s more reasonable. With a 50% efficient upconverter to 12 V, that’s half a watt. Start with 4 AA cells, triple the voltage, draw 100 mA, runtime is 1500 / 100 = 15 hours. Good enough.

    And it ought to be attention-getting enough for anybody! The only trouble will be fitting the damn thing on the back of the bike; fortunately, ‘bents have plenty of room behind the seat, so maybe attaching it below the top seat rail will work.

    Memo to Self: The rear reflector must be something like 3 inches in diameter, too. We ignore that spec, too.

  • Battery Charger Thermistor: Magnetic Attachment Thereof

    Magnet and thermistor position
    Magnet and thermistor position

    A new fast NiMH pack charger that uses a thermistor to detect the abrupt temperature rise at full charge just arrived on my Electronics Workbench. The instructions say to tape (“Use rubberized fabric …”) the thermistor to a cell in the middle of the pack, a process which loses its charm fairly quickly.

    The intent is to have the thermistor bead in intimate thermal contact with the cell, but air is a rather crappy thermal conductor. We can do better than that.

    Sooo, off to the Basement Laboratory Adhesives Division we go…

    NiMH cells have a steel shell, so holding the sensor in place with a magnet makes at least some sense. I used a pair of teeny rare-earth magnets (Electronic Goldmine G16913) bridged by a snippet of steel strap. One magnet points up, the other points down, the strap provides a magnetic path, and the whole assembly sticks to the cell like glue.

    First epoxy setup
    First epoxy setup

    I trimmed the heatshrink tubing surrounding the thermistor back a bit, then applied enough epoxy to secure the magnets to the strap and smooth out the edges, leaving the thermistor sticking out in mid-air.

    Although it looks risky, the epoxy doesn’t bond well to the (sacrificial, dead) cell. Doing it this way produces a nearly perfect AA-cell-shaped contour in the epoxy on the bottom of the magnets.

    It’s JB-Kwik fast-curing epoxy, not quite so runny as its slower-setting and much stronger JB-Weld relative.

    Epoxy covering thermistor
    Epoxy covering thermistor

    After the epoxy cured, I bent the thermistor down to contact the cell and dabbed epoxy over the bead. This puts the thermistor in good thermal contact with the cell. Epoxy isn’t a great thermal conductor, but it’s a lot better than air.

    The alert reader will note that I wrapped a layer of masking tape around the cell for this operation. I wasn’t convinced I could pop the epoxy off the cell without cracking the thermistor leads, but that turned out not to be a problem.

    Trimming the edges of the epoxy around the bead gave it a certain geeky charm.

    And it works like a champ: get the assembly close to a cell and it snaps right in place. I align the thermistor more-or-less in the middle of the cell, although I suspect the temperature gradient from the middle to either end isn’t all that large.

    Magnetically attached thermal sensor
    Magnetically attached thermal sensor

    Now, one could argue that this lump increases the thermal mass surrounding the thermistor, thus slowing the charger’s reaction time. That might be true, but the pack’s end-of-charge temperature rise seems considerably subdued now; the charger used to cook the living piss right out of the cells (with the thermistor taped down): I couldn’t hold them in my hand, so they were well over 150 °F.

    Now they become just uncomfortably warm, which says they’re closer to 130 °F.

    The charger’s single page instructions (two pages if you count the sheet illustrating the rubberized fabric taping thing) cautions “Stop charging when [the cell’s surface temperature] is over 70C or it feels very hot”.

    Indeed!

  • Forgotten Alkaline D-cell: Corrosion!

    Alkaline D-cell corrosion
    Alkaline D-cell corrosion

    Found this toxic spill while I was looking for a gadget on another shelf: it seems I left an alkaline D cell standing on my electronics parts & tools carousel for much too long.

    Amazingly, although the cell’s leakage blistered the paint pretty badly, it didn’t affect the steel carousel!

    I wiped most of the crud and dead paint off, then applied white vinegar (which is essentially dilute acetic acid) to neutralize the cell’s potassium hydroxide. The grabber tool sticking  out from between the boxes had a pretty good dose of corrosion up the side, but soaking it in vinegar (wow, the bubbles!) removed that and a shot of penetrating oil expelled the rinse water.

    It’s definitely not Duracell’s fault: the cell had a best-used-by date in 1997.

    Memo to Self: throw ’em out!

  • LED Bike Light Doodles

    LED Bike Light Notes
    LED Bike Light Notes

    I need an LED taillight (and maybe headlight) with a metal case and far more LEDs than seems reasonable. This is a doodle to sort out some ideas… not all of which will work out properly.

    The general notion is that one can put today’s crop of ultrasuperbright 5 mm LEDs to good use. While the Luxeon & Cree multi-watt LEDs are good for lighting up the roadway, they’re really too bright and power-hungry for rear-facing lights. Mostly, you want bright lights facing aft, but the beam pattern & optical niceness really aren’t too critical as long as you’re not wasting too many photons by lighting up the bushes.

    I think, anyway. Must build one and see how it works. I know that a narrow beam is not a Good Thing, as cars do not approach from directly behind and it make aiming the light rather too finicky.

    The problem with commercial bike taillights is that they use piddly little LEDs and not enough of them. If you’ve ever actually overtaken a bicyclist at night with a blinky LED taillight, you’ve seen the problem: they’re too damn small. Automobile taillights must have a very large surface area for well and good reason.

    But who wants to lug the taillight off a ’59 Caddy around?

    So the diagram in the pic explores the notion of arranging a bunch of red & amber LEDs in a fairly compact array. The shaded ones are red, the open ones are amber (with two more side-facing ambers to meet legal requirements), and there are eight of each. The OD is about 40 mm. Figure 5 mm LEDs with 2.5 mm of aluminum shell between them. If the center four LEDs were spaced right, an axial (socket-head cap?) screw could hold the entire affair together.

    Turns out both the red & amber LEDs in the bags of 100 I just got from Hong Kong run at 2 V forward drop @ 30-ish mA, so that’s 16 V total for eight in series.

    Four AA NiMH cells fit neatly behind the array, so the supply will be 4 – 5 V, more or less. The outer casing could be plastic pipe.

    What to do for a battery charging port? Must be mostly weatherproof. Ugh.

    Rather than a regulated supply and a current sink / resistor, use an inductor: build up the desired forward current by shorting the inductor to ground, then snap the juice into the LEDs. The voltage ratio is about 4:1, so the discharge will happen 4x faster than the charge for a duty cycle around 20%. At that ratio, you can kick maybe 50 mA into the poor things.

    Governing equation: V = L (ΔI/ΔT)

    If they’re running continuously, 2 V x 50 mA x 0.2 = 20 mW. The full array of red or amber is 160 mW, 320 mW for both. If you’re powering them at 10% duty cycle, then the average power dissipation is pretty low. Not much need for an external heatsink in any event.

    A 1 kHz overall cycle means a 200 µs inductor charging period. With low batteries at 4 V and 50 mA peak current, the inductor is 16 mH. That’s a lot of inductor. I have a Coilcraft SMD design kit that goes up to 1 mH: 12 µs charge and 16 kHz overall. Well, I wouldn’t be able to hear that.

    No need for current sensing if the microcontroller can monitor battery voltage and adjust the charge duration to suit; three or four durations would suffice. Needs an ADC input or an analog window comparator.

    Automotive LED taillights seem to run at about 10% duty cycle just above my flicker fusion frequency; say between 50 – 100 Hz. If that’s true, red & amber could be “on” simultaneously, but actually occupy different time slots within a 100 Hz repeat and keep the overall duty cycle very low.

    I’d like red on continuously (10% of every 10 ms) with amber blinking at 4 Hz with a 50% duty cycle. When they’re both on the total would be 60% duty.

    The legal status of blinking taillights is ambiguous, as is their color; more there. Motorcycles may have headlight modulators. Bikes, not so much.

    Battery life: assume crappy 1500 mAh cells to 1 V/cell. Red = 50 mA x 0.2 x 0.1 = 1 mA. Amber = 50 mA x 0.2 x 0.5 = 5 mA. Thus 1500 / 6 = 250 hours. Figure half of that due to crappy efficiency, it’s still a week or two of riding.

    Rather than a power switch, use a vibration sensor: if the bike’s parked, shut off the light after maybe 5 minutes. It wouldn’t go off when you’re on the bike, even stopped at a light, because you’re always wobbling around a little.

    Memo to Self: put the side LEDs on the case split line?

  • Maxwell 10 F Ultracapacitor: First Charge

    Maxwell PC10 Ultracapacitors
    Maxwell PC10 Ultracapacitors

    My buddy Mark One dropped off a pair of Maxwell PC10 10 farad Ultracapacitors. We both recall our respective professors saying that a farad is an impractical unit, there’d never be such a thing as a 1 F capacitor, and it would be the size of a barn anyway…

    These are 25x30x3 mm.

    The downside, of course, is that they’re rated at 2.5 V DC with an absolute maximum of 2.7 V.

    On the other paw, they have a maximum current of 2.5 A and a whopping 19 A short-circuit current. Serious risk of fire & personal injury there…

    Charged one up from an AA NiMH cell I had lying around on the desk, which took a while, then let it discharge all by itself while taking notes. The results look like this:

    10 uF Ultracap - Self DischargeTime    Voltage – mV
    13:02    1353
    13:08    1350
    13:36    1338
    13:56    1333
    14:09    1329
    14:21    1326
    14:54    1318
    15:13    1314
    15:49    1308
    16:06    1305
    17:42    1291
    18:49    1283
    19:03    1282

    Now, maybe that’s not exactly the extreme top left end of an exponential drop, but it looks close enough:

    V(t) = V0 * exp (-t/τ)

    Pick any two points on the curve to find τ, the time constant:

    V(t1) / V(t2) = exp (-t1/τ) / exp (-t2/τ)

    Take the log of both sides and remember that the log of a ratio is the difference of the logs:

    log V(t1) – log V(t2) = (-t1 + t2) / τ

    Plug in the first and last data points to get:

    0.02341 = 21.6 ks / τ

    Reshuffle and τ = 923 ks. Close enough to a megasecond for my purposes.

    How to find the capacitance? Charge the cap up fram a pair of NiMH cells, discharge it at a constant current using a battery tester, thusly:

    10 uF Ultracap - 100 mA Load
    10 uF Ultracap – 100 mA Load

    That curve isn’t exactly linear, but it’s close enough that we can use the familiar capacitor equation:

    ΔV/ΔT = I/C

    Reshuffle to get capacitance over there on the left side:

    C = I * ΔT / ΔV

    The lower axis is minutes, not seconds, with truly poor grid values. Eyeballometrically, call it 4 min * 60 = 240 seconds.

    Plug in the appropriate numbers and find that

    C = 0.1 A * 240 s / 2.5 V = 9.6 F.

    Close enough.

    Knowing τ and C, find the self-discharge resistance R = τ/C = 96 kΩ. That seems pretty low, but at 2 V it amounts to 25 µA. The cap’s self-discharge current is rated at 40 µA, so that’s well within spec.

    Now, admittedly, the cap doesn’t hold much energy:

    • NiMH 2 x AA = 1 Ah @ 2.4 V = 2.4 Wh = 8600 Ws = 8600 J
    • Ultracap 10 F @ 2.4 V = 1/2 * C * V^2 = 29 J

    But, heck, it’s pretty slick anyway… it’ll make a dandy backup power source for a clock I’m thinking of making.

    Memo to Self: Datasheet says to add balancing resistors that carry 10x the self-discharge current when stacking in series. That’d be 10 kΩ, more or less, which seems scary-low.