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

  • Proto Board Holders: 80×120 mm

    Another stack of proto boards arrived, this time 80×120 mm, and I ran off another pair of holders:

    Proto Board Holder - 80x120 - tooling
    Proto Board Holder – 80×120 – tooling

    Not wanting to, ahem, screw around with the lathe, the screws got themselves shortened the old-fashioned way: by hand, with the screw cutter, then filed and passed through a 4-40 die to clean up the threads.

    Bah!

  • Bandsaw Worklight

    Having hacked back the end of the USB gooseneck extension, a tweak of the COB LED heatsink mount for my desk lamp produces a smaller version for a 1.8 W LED:

    Chip On Board Heatsink Mount - Bandsaw Lamp - solid model
    Chip On Board Heatsink Mount – Bandsaw Lamp – solid model

    That fits half of a random heatsink, bandsawed just to the far side of the middle fin and milled flat.

    Ream out the 5 mm hole with a #8 drill for a snug fit around the gooseneck, jam gooseneck in place, dab epoxy on the corners of the recess, mash the heatsink in place, solder wires to LED, smear epoxy on the aluminum backplate, clamp while curing:

    USB Gooseneck - LED assembly
    USB Gooseneck – LED assembly

    And it looks pretty good, if I do say so myself:

    USB Gooseneck - on bandsaw
    USB Gooseneck – on bandsaw

    The hook-n-loop tape holding the cable to the bandsaw gotta go, but should suffice until I conjure a better mount.

    The alert reader may wonder how a 9 V COB LED runs from a 5 V USB cable with nary a trace of a voltage booster to be seen. Well, that’s not really a USB cable any more; I paralleled the red+white and black+green wires for lower resistance, then hacked a 9 VDC power supply into an old USB hub:

    Hacked USB hub - PCB mods
    Hacked USB hub – PCB mods

    I ripped out the upstream USB plug, hotwired the 9 V supply where the 5 V USB wires used to be, soldered jumpers on the downstream sockets to short the outer two pin pairs together, razor-knifed the power leads going into the epoxy-blobbed USB controller, and declared victory:

    Hacked USB hub - in use
    Hacked USB hub – in use

    Admittedly, that “In Use” LED runs a bit brighter now.

    I have a few other tools on that bench in need of LED lights; when I build ’em, they can all plug into this hub. No reason to invent new connectors & cables & all that. It may need a power switch.

    Turns your stomach, eh?

    The OpenSCAD source code as a GitHub Gist:

    // Chip-on-board LED light heatsink mount for desk lamp
    // Ed Nisley KE4ZNU December 2015
    // February 2017 – rectangular COB, smaller heatsink
    Layout = "Show"; // Show Build
    //- Extrusion parameters must match reality!
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    //———————-
    // Dimensions
    ID = 0; // for round things
    OD = 1;
    LENGTH = 2;
    Gooseneck = [3.0,5.0,15.0]; // anchor for end of gooseneck
    COB = [30.0,11.0,2.5]; // Chip-on-board LED module
    Heatsink = [37.1,19.2,10.0]; // overall
    HeatsinkBase = 2.0; // solid base below fins
    HSLip = 1.0; // width of lip under heatsink
    BaseMargin = 2*2*ThreadWidth;
    BaseRadius = 3*ThreadThick + Gooseneck[OD]/2; // defines slab thickness
    BaseSides = 2*4;
    Base = [(Gooseneck[LENGTH] + Gooseneck[OD] + Heatsink[0] + 2*BaseRadius + BaseMargin),
    (Heatsink[1] + 2*BaseRadius + 2*BaseMargin),
    2*BaseRadius];
    echo(str("Slab thickness: ",Base[2]));
    //———————-
    // Useful routines
    module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
    Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
    FixDia = Dia / cos(180/Sides);
    cylinder(r=(FixDia + HoleWindage)/2,
    h=Height,
    $fn=Sides);
    }
    //– Lamp heatsink mount
    module Lamp() {
    difference() {
    translate([(Base[0]/2 – BaseRadius – Gooseneck[LENGTH]),0,0])
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*(Base[0]/2 – BaseRadius),j*(Base[1]/2 – BaseRadius),Base[2]/2])
    sphere(r=BaseRadius/cos(180/BaseSides),$fn=BaseSides);
    translate([(Heatsink[0]/2 + Gooseneck[OD]), // main heatsink recess
    0,
    (Base[2] + Heatsink[2]/2 – HeatsinkBase)])
    cube((Heatsink + [HoleWindage,HoleWindage,0.0]),center=true);
    translate([(Heatsink[0]/2 + Gooseneck[OD]),0,HeatsinkBase]) // lower lip to shade lamp module
    scale([1,1,2])
    cube(Heatsink – [2*HSLip,2*HSLip,0],center=true);
    translate([0,0,Base[2]/2]) // goooseneck insertion
    rotate([0,-90,0]) rotate(180/8)
    PolyCyl(Gooseneck[OD],Base[0],8);
    translate([0,0,Base[2]/2 + Gooseneck[ID]/2]) // wire exit
    rotate([180,0,0])
    PolyCyl(Gooseneck[ID],Base[2],6);
    translate([Gooseneck[OD],0,(Base[2] – HeatsinkBase – Protrusion)/2]) // wire slot
    rotate([180,0,0])
    cube([2*Gooseneck[OD],Gooseneck[ID],(Base[2] – HeatsinkBase + Protrusion)],center=true);
    }
    }
    //———————-
    // Build it
    if (Layout == "Show") {
    Lamp();
    }
    if (Layout == "Build") {
    }

     

  • USB Gooseneck: Unwinding

    The USB gooseneck extension consists of a spring-steel helix with an aluminum filler strip to smooth the outside:

    USB Gooseneck - filler unwound
    USB Gooseneck – filler unwound

    A pin vise holds the intact part of the gooseneck.

    The filler unwinds easily, but the spring required several bashes with a drift punch to loosen the first coil. The pin vise can’t apply enough grip to immobilize the spring, so you (well, I) bashed more-or-less radially outward, rather than at a tangent; that’s almost as difficult to do as to describe.

    After enough bashing to get a grip with sturdy needlenose pliers, the spring unwound in short sections, again applying force radially to avoid turning the gooseneck in the pin vise:

    USB Gooseneck - spring unwinding
    USB Gooseneck – spring unwinding

    The black helix aimed off to the side seems to be plastic from the USB shell injection-molded around the connector hardware.

    Chopping the spring with the tip of a hardened diagonal cutter (don’t do this with a copper-wire dike!) and bashing the tail ends back around the wire core produced a passable result:

    USB Gooseneck - reshaped ends
    USB Gooseneck – reshaped ends

    The black thing sticking out beyond the spring seems to be the jacket around the wires.

    All the conductors are the same diameter, which isn’t shouldn’t be particularly surprising.

  • NESDR Mini 2+ vs. Input Terminator

    A tiny handful of known-good-quality SMA terminators arrived from eBay:

    KDI T187GS - 50 ohm 1 W SMA attenuators
    KDI T187GS – 50 ohm 1 W SMA attenuators

    They’re described as KDI Triangle T187GS SMA Female Terminator, 50Ω, 1W, 0-4GHz. A bit of searching suggests MCE (whoever they are) borged KDI quite a while ago (their website, last updated in 2003, has been lightly vandalized) and a datasheet won’t be forthcoming.

    In any event, a NooElec NESDR Mini 2+ radio connected to a dual-band VHF-UHF antenna perched near a window shows this for a local FM station:

    FM 101.5 NESDR - direct
    FM 101.5 NESDR – direct

    Zooming to 5 dB/div:

    FM 101.5 NESDR - 5 dB steps
    FM 101.5 NESDR – 5 dB steps

    Installing the terminator at the end of an MCX-to-SMA adapter cable:

    FM 101.5 NESDR - 50 ohm terminator
    FM 101.5 NESDR – 50 ohm terminator

    Haven’t a clue about those tiny little spikes with the terminator in place, but they don’t line up with any of the high-energy inputs and are, most likely, junk brewed up within the radio. That’s with the RF gain set to 49.6 dB and AGC turned off.

    The hardware looks like this:

    NESDR with SMA attenuators
    NESDR with SMA attenuators

    The MCX connector on the radio isn’t the most durable-looking thing I’ve ever seen, so strapping the adapter cable to the case seems like a Good Idea. You can get an NESDR radio with an SMA connector for about the same price, which I’d have done if were available a while ago.

    The terminated input looks to be about -75 dBFS, about 15 dB below the between-station noise, and the carrier tops out around -25 dBFS, for a “dynamic range” of 50 dB. Oddly, that’s just about dead on the maximum dynamic range you can get from the 8 bit RTL2832U demodulator / ADC stuffed inside the NESDR: 8 bits × 6 dB/bit.

    It is not obvious to me the signal from a randomly chosen (albeit powerful) FM station should exactly fill the receiver’s dynamic range, particularly without AGC riding herd on the RF gain. Some hardware tinkering seems in order.

    The GNU Radio flow graph:

    FM Broadcast - GNU Radio flow
    FM Broadcast – GNU Radio flow

     

  • Monthly Science: WWVB Reception Sample

    Further results from the SDR-based WWVB receiver:

    60 kHz Receiver - preamp HIT N3 Pi3 - attic layout
    60 kHz Receiver – preamp HIT N3 Pi3 – attic layout

    Seven hours of mid-January RF, tight-zoomed in both frequency and amplitude, from 0350 to 1050 local:

    WWVB waterfall - N3 - 2017-01-24 1050 - composite
    WWVB waterfall – N3 – 2017-01-24 1050 – composite

    The yellow line of the WWVB carrier comes out 2 ppm high, which means the local oscillator chain is 2 ppm low. We know the WWVB transmitter frequency is exactly 60.000 kHz, translated up by 125 MHz to the N3’s tuning range; you can, ahem, set your clock by it.

    The blue band marks the loop antenna + preamp passaband, which isn’t quite centered around 60.000 kHz. Tweaking the mica compression caps just a bit tighter should remedy that situation.

    Given that input, a very very tight bandpass filter should isolate the WWVB carrier and then it’s all a matter of fine tuning…

  • WWVB Receiver: First Light!

    All the blocks for a WWVB receiver, lined up on the attic floor:

    60 kHz Receiver - preamp HIT N3 Pi3 - attic layout
    60 kHz Receiver – preamp HIT N3 Pi3 – attic layout

    The dramatis personae:

    The headless Pi connects to the house WLAN through its built-in WiFi link, so I can run the whole mess from the Comfy Chair at my desk through Remmina / VNC.

    Recording 24 hours of WWVB shows it works:

    WWVB - 24 hr reception AGC - 2017-01-16 to 17 - cropped
    WWVB – 24 hr reception AGC – 2017-01-16 to 17 – cropped

    The wavy line along the left edge looks like a birdie formed by a local oscillator in the attic, because the frequency varies (inversely) with temperature. It’s probably a signal on the Pi board, rectified by some junction, and translated in-band by some Ham-It-Up harmonic. Whatever.

    The other traces come out bar-straight, suggesting that the 0.5 ppm (presumably, per °C) temperature-compensated oscillators along the whole RF chain behave as they should.

    There’s a slight frequency shift, on the order of a few parts-per-million, between the absolutely accurate WWVB carrier and the indicated display. Not a big deal.

    The broad, albeit irregular, orange band down the middle shows the loop antenna / preamp bandwidth, which is on the order of 2 kHz at -3 dB and a few kilohertz more down to the noise level.

    The broad horizontal gashes seem to come from the N3’s on-board hardware AGC reacting to signals far outside the waterfall. Various birdies appear & disappear, even in this limited view, so you can just imagine what’s happening off-screen; anything popping up within the SDR’s tuning range clobbers the gain, which becomes painfully visible when zoomed this far in along both frequency and amplitude. Turning AGC off should stabilize things; perhaps software can tweak the SDR gain based on a very narrowband filter around 60.000 kHz.

    The upper half of the waterfall shows decent reception for most of the night. The bottom half shows there’s basically nothing goin’ down during the day, which is about what I’d expect based watching the Alpha Geek Clock for seven years.

    In any event, another 24 hours with the AGC turned off looks better:

    WWVB 24 hr waterfall - Thumbnet N3 - 2017-01-19
    WWVB 24 hr waterfall – Thumbnet N3 – 2017-01-19

    Various sources still clobber the receiver response, but it’s not quite so dramatic.

     

  • X10 TM751 RF Transciever: End of Life

    X10 control from the two HR12A remotes got much worse over the last few months and eventually failed completely, which meant I had to actually walk over to the lights and click the switches. Not to be tolerated, sez I, so I would walk to the bedroom and poke the appropriate buttons on the wired controller (long since obsolete) by the bed. That worked perfectly, which eventually convinced me to dismantle the TM 751 transceiver.

    It’s not good when soot plates the case:

    X10 TM751 - Smoked case
    X10 TM751 – Smoked case

    I like how they capacitively coupled RF from the antenna for complete line-voltage isolation.

    The PCB looked like it got rather hot over there on the left side:

    X10 TM751 - Overheated PCB
    X10 TM751 – Overheated PCB

    A Zener diode on the component side of the PCB looked a bit toasty, so I decided this gadget had passed its best-used-by-date and dropped it in the electronics recycling box (after harvesting the antenna, just in case).

    A new-in-box TM 751 from eBay arrived a few days ago and works just fine.

    Done!