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.

Author: Ed

  • Lenovo Q150: Opening the Case For an SSD

    A pre-Christmas sale brought a cheap SSD that rendered my oath not to install one in the Lenovo Q150 inoperative, so I had to figure out how to open the case. Removing the visible screws didn’t release the cover, but some exploratory prying eventually popped the internal snap latches. Knowing the latch & screw locations will simplify harvesting the SSD when that time comes…

    Front (with USB & SPDIF jacks):

    Lenovo Q150 - case latches - front
    Lenovo Q150 – case latches – front

    Rear (with all the other jacks):

    Lenovo Q150 - case screws - rear
    Lenovo Q150 – case screws – rear

    Top (with the heatsink outlet):

    Lenovo Q150 - case latches - top
    Lenovo Q150 – case latches – top

    Bottom (with the mounting boss):

    Lenovo Q150 - case latch screws - bottom
    Lenovo Q150 – case latch screws – bottom

    With the cover off, the inside looks like this:

    Lenovo Q150 - interior overview
    Lenovo Q150 – interior overview

    The two rubber blocks glued to the hard drive bracket (carrier / sled / whatever) conceal the screws holding that side to the chassis. However, removing the blocks and the screws didn’t release the bracket, because it had what looked like a black adhesive layer below the screw flanges:

    Lenovo Q150 - hidden drive bracket screw
    Lenovo Q150 – hidden drive bracket screw

    Gentle prying from the edge of the bracket eventually released it, showing that the black plastic was just an insulating layer. Below that, two thin foam strips had firmly affixed themselves to the PCB, despite not having any adhesive on that side:

    Lenovo Q150 - drive bracket - foam strips
    Lenovo Q150 – drive bracket – foam strips

    With the bracket on the bench, installing the SSD went exactly as you’d expect and reinstalling the cover was, quite literally, a snap.

  • Chip-on-board LED Desk Lamp Retrofit

    After the 5 mm white LEDs failed on the original desk lamp rebuild, I picked up some chip-on-board LED lamps from the usual eBay supplier:

    COB LED Desk Lamp - bottom
    COB LED Desk Lamp – bottom

    The LED’s aluminum baseplate (perhaps there’s an actual “board” inside the yellow silicone fill) is firmly epoxied to a small heatsink from the Big Box o’ Heatsinks, chosen on the basis of being the right size and not being too battered.

    The rather limited specs say the LED supply voltage can range from 9 to 12 V, suggesting a bit of slack, with a maximum dissipation of 3 W, which definitely requires a heatsink.

    The First Light test looked promising:

     COB LED Desk Lamp - first light
    COB LED Desk Lamp – first light

    That’s driven from the same 12 VDC 200 mA wall wart that I used for the failed ring light version. Measuring the results shows that the supply now runs at the ragged edge of its current rating, with the output voltage around 10.5 V with plenty of ripple:

    COB LED V I 100ma div
    COB LED V I 100ma div

    The 260 mA current (bottom, trace 1 at 100 mA/div) varies from 200 to 300 mA as the voltage (top, trace 2 at 2 V/div) varies between 10 V and a bit under 11 V. If you believe the RMS values, it’s dissipating 2.7 W and the heatsink runs at a pleasant 105 °F in an ordinary room. The wall wart gets about as warm as you’d expect; it contains an old heavy-iron transformer and rectifier, not a trendy switcher.

    The heatsink mount looks nice, in a geeky way:

    COB LED Desk Lamp - side detail
    COB LED Desk Lamp – side detail

    The left side must be that long to anchor the gooseneck; I thought about tapering the slab a bit, but, really, it’s OK the way it is. Dabs of epoxy hold the gooseneck and heatsink in place.

    The heatsink rests on a small ledge at the bottom of the slab that’s as tall as the COB LED is thick, with a wire channel from the gooseneck socket:

    COB LED Heatsink mount - Slic3r
    COB LED Heatsink mount – Slic3r

    The Hilbert Curve infill on the top produces a textured finish; I’m a sucker for that pattern.

    The old lamp base isn’t particularly stylin’, but the new head lights up my desk below the big monitors without any glare:

    COB LED Desk Lamp - overview
    COB LED Desk Lamp – overview

    Now, let’s see how long this one lasts…

    The OpenSCAD source code as a Github gist:

    // Chip-on-board LED light heatsink mount for desk lamp
    // Ed Nisley KE4ZNU December 2015
    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 = [25.0,23.0,2.5]; // Chip-on-board LED module
    Heatsink = [35.5,31.5,4.0]; // height is solid base bottom
    HSWire = [23.0,28.0,53.3]; // anchor width OC, width OAL, length OC
    HSWireDia = 1.4;
    HSLip = 1.0; // width of lip under heatsink
    BaseMargin = 2*2*ThreadWidth;
    BaseRadius = Gooseneck[OD]; // 2 x gooseneck = enough anchor, sets slab thickness
    BaseSides = 2*4;
    Base = [(Gooseneck[LENGTH] + Gooseneck[OD] + Heatsink[0] + 2*BaseRadius + BaseMargin),
    (Heatsink[1] + 2*BaseRadius + 2*BaseMargin),
    2*BaseRadius];
    //———————-
    // 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]),0,Heatsink[2] + COB[2]]) // main heatsink recess
    scale([1,1,2])
    cube((Heatsink + [HoleWindage,HoleWindage,0.0]),center=true);
    translate([(Heatsink[0]/2 + Gooseneck[OD]),0,Heatsink[2] – Protrusion]) // 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,(COB[2] – Protrusion)/2]) // wire slot
    rotate([180,0,0])
    cube([2*Gooseneck[OD],Gooseneck[ID],(COB[2] + Protrusion)],center=true);
    }
    }
    //———————-
    // Build it
    if (Layout == "Show") {
    Lamp();
    }
    if (Layout == "Build") {
    }
  • Traffic Signal Timing: Burnett Blvd at Rt 55, With Traffic

    We ride through the intersection at the Rt 55 end of Burnett Blvd a lot, because it’s the only route between Raymond Avenue and the Dutchess Rail Trail. Previous posts have documented the signal timing, but this sequence shows the situation we’ve feared from the beginning… cross traffic not stopping because we are in the intersection with an opposing green light.

    I’m towing a trailer with three bags of groceries.

    The sequence numbers indicate the frame at 60 f/s.

    T +0.000 = our signal just turned green:

    Burnett at Rt 55 2015-12-14 - 0096 - Green
    Burnett at Rt 55 2015-12-14 – 0096 – Green

    T +1.250 s = the drivers ahead of us release their brakes and begin rolling:

    Burnett at Rt 55 2015-12-14 - 0171 - Green start
    Burnett at Rt 55 2015-12-14 – 0171 – Green start

    T +2.400 s = we begin rolling:

    Burnett at Rt 55 2015-12-14 - 0240 - Green rolling
    Burnett at Rt 55 2015-12-14 – 0240 – Green rolling

    It’s worth noting that we cannot start any earlier, unless you regard jumping the green and passing cars at an intersection as Good Practices, which we don’t.

    T +7.217 s = the yellow signal goes on in our direction:

    Burnett at Rt 55 2015-12-14 - 0529 - Yellow
    Burnett at Rt 55 2015-12-14 – 0529 – Yellow

    That’s six whole seconds from the time the cars started rolling and 4.8 s from the time we started.

    Notice the white car to our right that’s stopped in the leftmost eastbound lane of Rt 55.

    T +12.100 s = our signal turns red:

    Burnett at Rt 55 2015-12-14 - 0822 - Red
    Burnett at Rt 55 2015-12-14 – 0822 – Red

    I’ve reached the middle of the intersection, Mary’s about centered on the three eastbound lanes of Rt 55.

    T +13.333 s = the opposing signal turns green:

    Burnett at Rt 55 2015-12-14 - 0895 - Opp Green
    Burnett at Rt 55 2015-12-14 – 0895 – Opp Green

    Traffic in both directions of Rt 55 can now begin moving, but the white car remains stopped; it’s almost directly behind me in the leftmost lane. Because Mary is following the curved line guide lines, she’s just entering the rightmost lane. What you can’t see is a black car approaching from behind her that didn’t have to stop.

    T +20.950 s = the car in the right lane that didn’t have to stop passes me:

    Burnett at Rt 55 2015-12-14 - 1353 - First car
    Burnett at Rt 55 2015-12-14 – 1353 – First car

    I’m 140 feet from the stop line (figured with the distance calculator):

    Burnett at Rt 55 - Intersection distance
    Burnett at Rt 55 – Intersection distance

    At 40 mph = 60 ft/s, that car passed the stop line 2.3 s earlier, at T +18.7 s, when I was still crossing the right lane.

    It’s entirely likely that the driver didn’t see either of us while approaching the intersection, because he (let’s assume a he for the sake of discussion) had a green light nearly 5 s = 300 ft before reaching the stop line. Unless he’s paying more attention than most drivers, he was intent on the signal to judge whether he must slow down; for the last 7.3 s he’s known that the intersection is clear, because nobody else should be in the intersection against his green signal.

    T +24.667 s = The white car in the left lane passes Mary:

    Burnett at Rt 55 2015-12-14 - 1576 - Second car
    Burnett at Rt 55 2015-12-14 – 1576 – Second car

    All I’m asking NYSDOT to do is lengthen the signal timing so we’re not caught in the middle of the intersection by opposing traffic with a green signal. Adding a few seconds onto the yellow and minimum cycle time doesn’t seem unreasonable, but it’s been six months since I reported the problem with no action; I’ve pinged their Bicycle & Pedestrian coordinator several times with no response.

    If their engineers are “studying” the situation, it’s not producing any visible results; they haven’t asked me for any additional data.

    I Am Not A Lawyer, but I think my collection of photos should provide sufficient evidence to convince a jury that NYSDOT is totally liable for any bicycling injuries at that intersection, based on the inability of cyclists to meet the signal timing. I really don’t want to find out if I’m right…

  • Got My Picture On The Cover Of Circuit Cellar

    Well, a picture of my circuitry, anyhow, there in the upper-right corner:

    Circuit Cellar 306 - January 2016 - Cover
    Circuit Cellar 306 – January 2016 – Cover

    It’s the avalanche noise random number generator:

    Reverse-bias noise amplifier - detail
    Reverse-bias noise amplifier – detail

    I’m pretty sure they color-negatived it to suppress that retina-burn magenta PETG holder.

    It wasn’t for my column, but the Tinny cover painting for Circuit Cellar Issue 29 (“Measurement and Control”) hangs near my desk:

    Robert Tinney - Cover for Circuit Cellar Issue 29
    Robert Tinney – Cover for Circuit Cellar Issue 29

    Back then, I was writing the Firmware Furnace column. Ah, those were the days…

     

  • Tools for Ladies

    Wandering through the Sears tool department, I found this corner:

    Sears Pink Box Tools
    Sears Pink Box Tools

    Neither of the Ladies in my life favor pink, so I wasn’t even tempted…

    Mary wonders if the designers scaled the grips and spring tensions to suit women’s hands. Her experience shows that “tools for men” are too big and require too much grip strength for her comfort; applying pink plastic won’t improve them in the least.

  • Web Security Warning: Say What?

    Having turned on my old Kindle Fire’s “security warnings” just to see what happens, I’m confronted by pop-ups like this on a regular basis:

    Web Security Warning
    Web Security Warning

    People who know what they’re talking about tell me there’s no way for ordinary civilians, such as I, to evaluate the validity of the “credentials” described by that pop-up. In this case, the credential apparently comes from DigiCert, which ought to be trust-able, and was issued to cmcore.com, an actual IBM subsidiary that apparently does Web analytics.

    It works fine through my desktop browsers. The Kindle, however, can’t even find digicert.com, so the problem must be an Amazon thing.

    The only response that makes sense is to continue loading: gizmodo.com might have cat pictures!

    I should just turn off the warnings and be done with it…

  • Blog Summary: 2015

    Page views for 2015:

    Blog Summary - YE 2015
    Blog Summary – YE 2015

    So, by and large, plumbing & home repair are where it’s at.

    When Nielsen sends out another round of money in the mail, the obvious search terms pop to the top of the list. That’s weird, because the major search engines no longer provide the keywords in the URL (so WordPress can’t track them), which means a few folks still use minor-league search sites.

    Who knew?

    Thanks to those of you who put up with my “external memory” rambling; with a bit of luck, I can still serve as a bad example. [grin]