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: Machine Shop

Mechanical widgetry

  • An Atom for the Sherline Milling Machine

    Somewhat against the recommendations of the experts on the EMC2 mailing list, I bought a Foxconn R30-D2 with an Intel Atom D520 from Newegg during a sale: add 2 GB of memory from Crucial, a spare SATA drive from my collection, and it’s ready to go. I also bashed a spare parallel printer port card into the box, although it isn’t really needed right now: unlike the Intel system board, Foxconn brings the on-board parallel port directly to the back panel.

    The Foxconn support site is a nightmare and was, AFAICT, dead for the first few weeks I had the box. The key fact to remember is that the -D2 part of the number specifies the system board / CPU, so the same downloads / BIOS updates apply to the R10, R20, R30, and R40 models. There is no new BIOS available to fix the “fan runs all the time” problem reported by so many people.

    I installed Ubuntu 10.04 LTS from the distro CD, then ran the EMC2 installation script. All that is routine, as described there. You probably want to install the EMC2 Live CD, though, and to get much the same result with less fiddling.

    Turn off Hyperthreading in the BIOS, which seems to make the RTAI real-time hypervisor happier. Under those conditions, the default install has an interrupt latency of about 13 µs.

    The Atom D520 is a dual-core processor and you can devote one core to EMC2’s real-time functions, thus eliminating much of the usual contention and interrupt latency. That works surprisingly well and is completely automagic after you add the isolcpus=1 kernel option to the appropriate line in /boot/grub/grub.cfg. Thusly:

    linux	/boot/vmlinuz-2.6.32-122-rtai root=UUID=57fe2b04-ffe4-4de3-a597-89bd4ed01018 ro  vga=758  noquiet nosplash isolcpus=1
    

    With that done, the latency drops down under 8 µs, which is entirely satisfactory. I can push it to 10 µs by doing stupid things: scrubbing a glxgears window over a Flash video in Firefox, for example.

    The catch is that the wonderful new grub2 bootloader rewrites its boot configuration file on the fly, based on a set of rules that, evidently, cannot apply different kernel configuration parameters to different kernels within the same partition. As a result, you must choose between:

    • Running stock Ubuntu on one core
    • Manually tweaking grub.cfg after every kernel update

    Given that an Atom isn’t exactly a blinding flash and a deafening report in the performance department, I opted for the second method. If Ubuntu was still using Legacy Grub, then I’d just tweak menu.lst and be done with it. This is, I suppose, progress.

    Memo to Self: Adjust grub.cfg every mumble time.

    [Update: There’s now a fix for that, as described in the EMC2 wiki. Go for it!]

  • Opening a USB Stick

    After I failed to fix that old USB memory, my friend suggested a brain transplant: swap the Flash chip from the dead stick into a new one. That has a low chance of success because the innards will be different for every manufacturer and, even for USB sticks of the same vintage, nothing remains the same from lot to lot.

    Anyhow, I removed the fancy end caps from the donor stick, which looks to be swag from a medical conference:

    Case caps removed
    Case caps removed

    The key step is to crack the case open without damaging anything inside. This technique works wonderfully well:

    Cracking the case
    Cracking the case

    Grab diagonally opposing corners in a bench vise and slowly increase the clamping force until the case snaps apart. Poke a screwdriver in the gap, remove the case from the vise, and pry the thing open.

    As it turned out, the innards were completely different: different Flash controllers and different Flash memory chips. So it goes.

    Not surprisingly, you can find the data sheets / manuals / configuration utilities for the Flash controller chips by searching for the obvious keywords. Machine translation is your friend…

  • Salvaged Heatsink Reconstruction

    Heatsink mounting flanges
    Heatsink mounting flanges

    I decided to replace the sawed-off flanges on that salvaged heatsink to make all three use the same mounting arrangement, whatever that might turn out to be.

    Nothing particularly fancy about it: two random chunks of aluminum sheet and two thinner strips, sanded to roughen their surfaces, and epoxied into place.

    The repaired heatsink is marginally taller than its siblings, but not so anybody will ever notice, and it’s no more off-kilter than they are, either.

    A quartet of 5/16-inch lathe bits provided the right spacing to hold the heatsink over its new flanges while the epoxy filled in all the gaps and irregularities. I probably should have paid a bit more attention to squaring things up, but it’s good enough for what it’ll need to do.

    Heatsink up on blocks
    Heatsink up on blocks

     

  • Tour Easy: New Rear Brake

    While I had the bike up on the stand to replace the seat strut screws, I installed a new rear brake. The old brake hadn’t been braking well for a while, which I attributed to different brake pads, but nothing seemed to help.

    New rear brake
    New rear brake

    I had to drive the old brakes off the mounting studs with a drift punch; the studs were pretty well rusted after a decade of continuous use under the hostile conditions that pass for normal around here.  Shined them up, applied a generous layer of Never-Seez, and bolted the new brakes in place.

    Turns out that the rear brakes on a Tour Easy are backwards from their orientation on an upright bike: the studs point spinward, so the cable exits on the right side of the frame. Doesn’t make any difference, as that’s how the front brake studs work, but if you’re thinking of buying some fancy brake with odd mounting requirements, you probably shouldn’t.

    The installation specs require “more than 39 mm” of cable between the clamp bolt and the bracket on the other arm. The Tour Easy frame tubes are closer together than that, allowing a bare 25 mm of cable.

    Rear brake cable and boot
    Rear brake cable and boot

    I trimmed the boot to fit, but the real problem is that the arms aren’t at quite the right angle with respect to the braking surface on the rim and provide a bit less leverage than you’d like; the pad alignment is also trickier. I tried adding spacers to the brake pads, but the mounting studs aren’t quite long enough for that.

    The first road test indicates the new brakes work much better than the old ones…

  • Another Fractured Seat Strut Screw

    Having replaced both screws back in March, I wasn’t expecting this:

    Fractured screw surfaces
    Fractured screw surfaces

    Of course, it broke at the first pedal stroke while pushing off across an intersection, which is why I never try to ace out oncoming cars.

    This was, mercifully, on the left side of the bike, so I could replace it without removing the rear wheel. Being that sort of bear, I now carry spare screws and we were back on the road in about ten minutes.

    A closer look at the head end of the screw shows some interesting details:

    Fractured screw - head
    Fractured screw – head

    The tail end has matching cracks:

    Fractured screw - tail
    Fractured screw – tail

    Notice how the cracks are all oriented in the same direction. The screw fractured at the edge of the brazed-on frame fitting, so I suspect the seat stay clamp must be moving just enough to flex the screw across that plane.

    I mooched a pair of hardened socket head cap screws from Eks, ground down the head of the right-side screw for better chain clearance around the sprockets, buttered ’em up with Never-Seez, and we’ll see how long Real Steel lasts.

    Right-side screw with ground-down head
    Right-side screw with ground-down head

    I really should conjure up a clamp that mounts to the frame tubing, rather than depend on that puny brazed-on fitting, shouldn’t I?

    It appears that new Tour Easy ‘bents come with more brazed-on fittings and a more secure seat stay mounting bracket. A photo was there when I looked.

  • Aluminum-Housed Resistor Hole Locations and Derating

    The battle plan is to mount some resistors on those heatsinks to warm up the disinsector.

    These seem to be the right hammer for the job:

    Aluminum housed resistors
    Aluminum housed resistors

    The big one is rated 50 W @ 25 °C ambient. Use two, derated by 50%, times three air-cooled heatsinks for 150 W of low-temperature heating. The little one is 25 W @ 25 °C.

    The derating curve is linear from 100% @ 25 °C down to 10% @ 250 °C, when mounted to a square foot of flat aluminum plate: -0.40% / °C.

    Assuming a max heater ambient of  150 °F = 65 °C, you can use 84% of full power. Derating by 50% isn’t all that unreasonable.

    The relevant hole locations:

    • 50 W: X=1.562 inch / 39.67 mm Y=0.844 inch / 21.44 mm
    • 25 W: X=0.719 inch / 18.26 mm Y=0.781 inch / 19.84 mm
    • 10 W: X=0.562 inch / 14.27 mm Y=0.625 inch / 15.88 mm

    Divide those by 2.0 for from-the-center offsets, which may be more useful for manual CNC operations: zero at the resistor mounting center, then back-and-forth from there.

    The mounting hole size for 25 & 50 W resistors: 0.125 inch / 3.18 mm diameter, just exactly what you want for a 4-40 mounting screw. Tap drill #43, clearance drill #32 (close fit) or #30 (loose fit).

    The mounting hole size for 10 W resistors: 0.094 inch / 2.39 mm to fit a 2-56 screw. Tap drill #50 (better: #49 for 50% threads), clearance drill #43 (close) or #41 (loose).

    The Vishay-Dale data sheet is there

  • Heatsink Thermal Coefficient

    To get an idea of how those recycled heatsinks performed, I soldered a pair of 8 Ω 25 W power resistors in series, clamped them to the first heatsink out of the dishwasher, fired up a bench power supply, and took some quick data.

    Ambient is about 63 °F with more-or-less still air. Temperature measured with an IR non-contact thermometer aimed at a strip of masking tape on the edge of the heatsink. The resistors (and the center of the heatsink) are somewhat hotter than that, as you’d expect. The numbers include the resistor case-to-heatsink thermal coefficient, too.

    Held edgewise in a vise with the fins horizontal (like this: ===, the second-worst possible orientation), a few inches above the bench, the temperature stabilizes in about an hour:

    • 16 W -> 101 °F: 2.4 °F/W
    • 32 W -> 132 °F: 2.2 °F/W
    • 64 W -> 188 °F: 2.0 °F/W

    The alert reader will note that 64 W is somewhat excessive, given that the resistors are 25 W each. The temptation to run the supply at constant currents of 1.0, 1.4, and 2.0 amps was just impossible to resist, OK?

    Heatsink - vertical
    Heatsink – vertical

    Held edgewise with the fins vertical (like this: |||), also with a few inches of clearance to the bench, the temperature stabilized in a matter of 10-20 minutes. I didn’t bother with the lower power tests:

    • 64 W -> 166 °F: 1.6 °F/W

    Putting a bare CPU case fan 2 inches from one side of the heatsink, aimed directly at the middle, with no attention whatsoever to ducting or air flow rates, produced a stable temperature in a few minutes:

    • 64 W -> 85 °F: 0.3 °F/W

    That’s under 0.2 °C/W with airflow on only one side. Zowie!

    While I must run these tests again with the resistors & fans I intend to use (and better control over the air flow), things are looking good.