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.

Month: October 2011

  • Thing-O-Matic: Small Features

    Strainer - knob perimeter thread
    Strainer – knob perimeter thread

    It seems most of the stuff I build with my Thing-O-Matic involves small features and thin sections that bump hard against the minimum possible sizes. I’ve found that forcing critical solid model dimensions to be integer multiples of the the extrusion width or thickness stabilizes the whole idea→model→G-Code→object chain by encouraging Skeinforge to make the choices I prefer.

    Or perhaps I’m just constraining my choices to make Skeinforge happiest. One can view reality in many ways…

    Anyhow, my OpenSCAD programs tend to have these lines up near the top:

    ThreadThick = 0.33;
    ThreadWidth = 2.0 * ThreadThick;
    
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    

    The ThreadThick parameter matches the Skeinforge thread thickness parameter(s) and the 2.0 matches the w/t setting(s). Those correspond quite closely to the actual printed results, as tediously verified through many measurements. Throughout the rest of the OpenSCAD program, I compute the dimensions of key features using those sizes as building blocks.

    The IntegerMultiple function returns the next higher multiple of the basic Unit that’s greater-than-or-equal-to the desired Size. Feeding in the thread thickness or width as the Unit ensures that the result will be an integer multiple of the smallest-possible dimension and won’t be smaller. The integer limit happens automagically, because the printer can’t lay down anything else, but a less-than-possible size can cause features to (unpredictably, in my experience) vanish without warning. This way your model reflects the printed reality and Skeinforge seems more likely to produce a predictable result.

    So the parameter controlling the thickness of a flat sheet might look like:

    PlateThick = IntegerMultiple(2.0,ThreadThick);
    

    Given ThreadThick = 0.33, the sheet will be 7 layers thick = 2.31 mm. If the sheet must not exceed 2.0 mm, however, then you need a similar function with floor(), which may eradicate very small features.

    This trick seems most useful for thin wall sections, because the wall width directly affects the fill:

    • Less  than 1 thread width can’t be built
    • Exactly 1 thread width is the thinnest possible wall
    • Widths between 1 and 2 thread widths may be either, depending on surrounding features
    • Exactly 2 thread widths produces a nice wall
    • Widths between 2 and 3 thread widths can’t fill properly
    • Exactly 3 thread widths fills perfectly
    • Over 3 thread widths generally fill properly

    So making the rim around a recessed lid become an integral number of thread widths, with a minimum width of 1.0 mm, looks like this:

    LidMargin = IntegerMultiple(1.0,ThreadWidth);
    

    With a 0.66 mm thread width, the nominal wall is 1.5 threads wide and could print as either 1 or 2 threads, depending on other factors. Rather than leave the results to chance, I force the solid model wall to be exactly 2 threads wide to make the printed result come out at 1.32 mm. Because I don’t care exactly how wide the lid margin is, as long as it’s at least one thread, that’s fine with me.

    Generally, the values come from computations based on other dimensions, so quantizing the results keeps the printed result stable over small variations of those inputs.

    If I ever get around to changing the nozzle to from 0.5 mm to 0.4 mm, I’ll probably change the thread dimensions to 0.25 mm x 0.5 mm (keeping the same 2.0 w/t ratio). A 1.0 mm wall would then still be exactly 2 threads wide and come out looking exactly the same, but with a total width of 1.00 mm.

    That’s the intent, anyway.

  • The Embedded PC’s ISA Bus: Firmware, Gadgets, and Practical Tricks — Unleashed

    ISA Bus Book - Front Cover
    ISA Bus Book – Front Cover

    A long time ago, in a universe far away, I wrote a book that (barely) catapulted me into the ranks of the thousandaires. Time passes, companies get sold / fail / merge / get bought, and eventually the final owners decided to remainder the book; the last royalty check I recall was for $2.88.

    Anyhow, now that it’s discontinued and just as dead as the ISA bus, I own the copyright again and can do this:

    They’re both ZIP files, disguised as ODT files so WordPress will handle them. Just rename them to get rid of the ODT extension, unzip, and you’re good to go. Note, however, that I do retain the copyright, so if you (intend to) make money off them, be sure to tell me how that works for you.

    The big ZIP has the original pages laid out for printing, crop marks and all, so this is not as wonderful a deal as it might first appear. The little ZIP has the files from the diskette, which was unreadable right from the start.

    Words cannot begin to describe how ugly that front cover really is, but Steve’s encomium still makes me smile.

    The text and layout is firmly locked inside Adobe Framemaker files, where it may sleep soundly forever. The only way I can imagine to get it back into editable form would be to install Windows 98 in a VM, install Framemaker, load up the original files, and export them into some non-proprietary format. Yeah, like that would work, even if I had the motivation.

    If you prefer a dead-tree version, they’re dirt cheap from the usual used-book sources. Search for ISBN 1-57398-017-X (yes, X) and you’ll get pretty close.

    Or, seeing as how I just touched the carton of books I’ve been toting all these years, send me $25 (I’m easy to find; if all else fails, look up my amateur callsign in the FCC database) and get an autographed copy direct from the source. Who knows? It might be worth something some day…

    The back cover has some useful info:

    ISA Bus Book - Back Cover
    ISA Bus Book – Back Cover
  • 3D Printing Presentation for Long Island LUG

    Helmet mirror mount - 3D model - Fit layout
    Helmet mirror mount – 3D model – Fit layout

    The folks at the Long Island LUG asked me to give my DIY 3D Printing & the Makerbot Thing-O-Matic presentation, which will happen 11 October at 8 pm. Details & directions at lilug.org.

    Should you happen to be in the area that evening, drop in and pick up a tchotchke!

  • Kensington Trackball: Scroll Ring Tweakage

    Of late, something in the pile of input devices attached to my main PC has been feeding occasional bursts of upward scroll commands, to the extent that editing long documents (something I do quite a bit of, oddly enough) was becoming difficult. By process of elimination, the culprit turned out to be the Kensington trackball to the left of the keyboard: unplugging it eliminated the problem.

    Having had problems with that thing before and having gotten considerable feedback from other folks, I had a general idea of how to proceed: putz with the IR emitter-detector pair, but not very much. A side view of the pair with the trackball cup and scroll ring removed:

    Scroll ring IR emitter-detector quadrature pair
    Scroll ring IR emitter-detector quadrature pair

    Now, what’s weird about that setup is that the detector lens seems to be pointing in the wrong direction: away from the emitter’s lens. You know it’s the detector because it’s tinted: there’s no point in filtering the emitter’s output (although I have seen gray-tinted IR LEDs, which I think is just to mark them as different from visible LEDs). Here’s proof: a pure IR picture from my Sony DSC-F717 in Nightshot (a.k.a. IR) mode through a Hoya R72 visible-block filter:

    Quadrature pair in pure IR
    Quadrature pair in pure IR

    Some possibilities for why the detector is backwards:

    • It’s an assembly screwup (unlikely, but possible)
    • That’s not a lens, it’s a locating tab (different on emitter & detector?)
    • The backside uses the metal conductors as slits to enhance the signal (my favorite)

    Here’s a grossly image-enhanced blowup of the detector from that picture:

    Quadrature IR detector in pure IR - detail
    Quadrature IR detector in pure IR – detail

    The case becomes transparent in pure IR, so you can see the metal lead frame inside. I think they’re using the gaps between the leads to enhance the contrast of the scroll ring edges passing through the beam: absolutely no IR except when a gap aligns with a scroll ring opening.

    [Update: read the comments for a different interpretation; I’m probably wrong.]

    That would also explain why the pair seems so sensitive to alignment: there’s very little IR hitting the detector, because the IR illumination passes through the transparent-to-IR case and vanishes out the far side, with only a tiny bit reflected to the sensor!

    Anyhow, I pushed the pair minutely toward each other, just enough to feel the leads bend, and put everything back together. So far it seems to be working perfectly, but it’s done that before …

    [Comment: Jack found a different solution that might produce better results:

    Just got the Problem with my Scroll ring and thanks to your blog i digged a bit deeper.

    here is the Solution for my Problem:

    I checked this while connected and i found that bending worked only for a short time, so i gave a closer look to the contacts.

    all are soldered from below BUT two contacts are on the upper side.
    normaly solder should flow into but here it was as simple as just resolder the receiver with enough solder an its now working again. (btw a realigned the magnet to get a better response)

    Thanks
    Jack

    ps. the size of the cuts in the metall from the scroll ring differ, a shame for that price..

    It’s certainly worth trying, particularly when your Expert Mouse trackball isn’t working…

    Update: Nine years in the future, a real fix appears!