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

  • Makergear M2 vs. LinuxCNC: Project Overview

    M2 - cushwa Owl - half scale
    M2 – cushwa Owl – half scale

    During the course of my Makerbot Thing-O-Matic experience, I concluded:

    • Enthusiasm may get a product out, but engineering makes it work
    • Plywood and plastic do not produce a stable 3D printer
    • Measurements matter
    • 8-bit microcontrollers belong in the dustbin of history

    With that in mind, I’ve long thought that LinuxCNC (formerly EMC2) would provide a much better basis for the control software required for a 3D printer than the current crop of Arduino-based microcontrollers. LinuxCNC provides:

    • Hard real time motion control with proven performance
    • A robust, well-defined hardware interface layer
    • Ladder-logic machine control
    • Isolated userspace programming
    • Access to a complete Linux distro’s wealth of programs / utilities
    • Access to an x86 PC’s wealth of hardware gadgetry

    Rather than (try to) force-fit new functions in an Arduino microcontroller, I decided it would be interesting to retrofit a DIY 3D printer with a LinuxCNC controller, improve the basic hardware control and sensing, instrument the extruder, then take measurements that might shed some light on DIY 3D printing’s current shortcomings.

    The overall plan looks like this:

    • Start with a Makergear M2
    • See what the stock hardware can do
    • Replace the RAMBo controller with LinuxCNC
    • See what the hardware can do with better drivers
    • Adapt the G-Code / M-Code processing to use more-or-less stock Marlin G-Code
    • Add useful controllers along the lines of the Joggy Thing
    • Improve the platform height / level sensing
    • Rebuild the extruder with temperature and force sensors
    • Start taking measurements!

    My reasons for choosing the Makergear M2 as the basis for this project should be obvious:

    • All metal: no plywood, no acrylic (albeit a plastic filament drive)
    • Decent stepper motors (with one notable exception)
    • Reasonable hot end design
    • Good reputation

    The first step of the overall plan included a meticulously documented M2 build that I figured would take a month or two, what with the usual snafus and gotchas that accompany building any complex mechanism. Quite by coincidence, a huge box arrived on my birthday (the Thing-O-Matic arrived on Christmas Eve, so perhaps this is a tradition), the day when I learned that Mad Phil had entered his final weeks of life.

    As the Yiddish proverb puts it: If you wish to hear G*d laugh, tell him of your plans.

    So I converted a box of parts into a functional M2 3D printer over the course of four intense days, alternating between our living room floor and a card table in Phil’s home office, showing him how things worked, getting his advice & suggestions, and swapping “Do you remember when?” stories. Another few days sufficed for software installation, configuration, and basic tuneup; I managed to show him some shiny plastic doodads just before he departed consensus reality; as nearly as I can tell, we both benefited from the distractions.

    Which means I don’t have many pictures or much documentation of the in-process tweakage that produced a functional printer. The next week or so of posts should cover the key points in enough detail to be useful.

    Not to spoil the plot or anything: a stock M2 works wonderfully well.

    Owl - half size - left
    Owl – half size – left

    For example, a half-scale cushwa owl printed in PLA at 165 °C with no bed cooling and these Slic3r parameters:

    • 500 mm/s move
    • 300 mm/s infill
    • 200 mm/s solid infill
    • 100 mm/s internal perimeter
    • 50 mm/s bottom layer
    • 30 mm/s external perimeter
    • 1 mm retract @ 300 mm/s

    The beak came out slightly droopy and each downward-pointing feather dangles a glittery drop. There’s room for improvement, but that’s pretty good a week after opening a box o’ parts…

  • LED Forward Voltages vs. Color

    Running a random set of colored LEDs from the Basement Laboratory Parts Warehouse Wing through the LED Curve Tracer produced this pleasant plot:

    ROYGBUIW

    The white LED doesn’t match up with either the blue or the UV LED. Perhaps the blue LED uses a completely different chemistry that shoves further to the right than seems proper? I suppose I should run a handful of white, blue, and UV LEDs through the thing just to see what’s going on…

    The Bash / Gnuplot source code:

    #!/bin/sh
    numLEDs=8
    #-- overhead
    export GDFONTPATH="/usr/share/fonts/truetype/"
    base="${1%.*}"
    echo Base name: ${base}
    ofile=${base}.png
    echo Input file: $1
    echo Output file: ${ofile}
    #-- do it
    gnuplot << EOF
    #set term x11
    set term png font "arialbd.ttf" 18 size 950,600
    set output "${ofile}"
    set title "${base}"
    set key noautotitles
    unset mouse
    set bmargin 4
    set grid xtics ytics
    set xlabel "Forward Voltage - V"
    set format x "%4.1f"
    set xrange [0.5:4.5]
    #set xtics 0,5
    set mxtics 2
    #set logscale y
    #set ytics nomirror autofreq
    set ylabel "Current - mA"
    set format y "%3.0f"
    set yrange [0:35]
    set mytics 2
    #set y2label "right side variable"
    #set y2tics nomirror autofreq 2
    #set format y2 "%3.0f"
    #set y2range [0:200]
    #set y2tics 32
    #set rmargin 9
    set datafile separator whitespace
    set label 1 "IR" at 1.32,32 center
    set label 2 "R"  at 1.79,32 center
    set label 3 "O"  at 2.10,32 center
    set label 4 "Y"  at 2.65,32 center
    set label 5 "G"  at 2.42,32 center
    set label 6 "B"  at 4.05,32 center
    set label 7 "UV" at 3.90,32 center
    set label 8 "W"  at 3.25,32 center
    #set arrow from 2.100,32 to 2.125,31 lt 1 lw 2 lc 0
    plot \
     "$1" index 0 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "red" ,\
     "$1" index 1 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "orange" ,\
     "$1" index 2 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "dark-yellow" ,\
     "$1" index 3 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "green" ,\
     "$1" index 4 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "blue" ,\
     "$1" index 5 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "purple" ,\
     "$1" index 6 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "magenta" ,\
     "$1" index 7 using (\$5/1000):(\$2/1000) with linespoints pt 1 lw 2 lc rgb "dark-gray"
    EOF
    

    And the raw data file:

    # LED Curve Tracer
    # Ed Nisley - KE4ZNU - March 2013
    # VCC at LED: 4897 mV
    # Bandgap reference voltage: 1041 mV
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 1
    0	0	4892		3889		1002		0	0	0	3889
    5	4613		4892		3264		1627		1990		48	1942		3216
    10	10148	4892		3216		1675		2092		106 1985		3109
    15	15223	4892		3182		1709		2199		159 2039		3022
    20	19836	4892		3148		1743		2271		208 2063		2940
    25	24910	4897		3129		1767		2354		261 2092		2867
    30	30446	4897		3104		1792		2431		319 2111		2785
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 2
    0	0	4892		3884		1007		0	0	0	3884
    5	4613		4892		3124		1767		1985		48	1937		3075
    10	9687		4897		3037		1860		2111		101 2010		2935
    15	14761	4897		2964		1932		2189		155 2034		2809
    20	19836	4897		2906		1990		2271		208 2063		2697
    25	24910	4897		2848		2048		2349		261 2087		2586
    30	30446	4892		2794		2097		2431		319 2111		2475
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 3
    0	0	4892		3826		1065		0	0	0	3826
    5	4613		4897		2862		2034		1990		48	1942		2814
    10	10148	4897		2688		2208		2097		106 1990		2581
    15	15223	4897		2552		2344		2194		159 2034		2392
    20	19836	4892		2436		2455		2276		208 2068		2228
    25	24910	4897		2349		2547		2354		261 2092		2087
    30	29985	4897		2257		2639		2426		314 2111		1942
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 4
    0	0	4892		3734		1157		0	0	0	3734
    5	5074		4892		2935		1956		1976		53	1922		2882
    10	10148	4897		2823		2073		2102		106 1995		2717
    15	15223	4892		2722		2170		2199		159 2039		2562
    20	20297	4897		2649		2247		2276		213 2063		2436
    25	24910	4897		2567		2329		2349		261 2087		2305
    30	29985	4897		2489		2407		2426		314 2111		2174
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 5
    0	0	4892		4485		406 0	0	0	4485
    5	4613		4897		1724		3172		1990		48	1942		1675
    10	10148	4892		1443		3448		2097		106 1990		1336
    15	15223	4897		1249		3647		2199		159 2039		1089
    20	19836	4892		1099		3792		2276		208 2068		891
    25	24910	4897		983 3913		2354		261 2092		721
    30	29985	4892		862 4030		2426		314 2111		547
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 6
    0	0	4892		4165		726 0	0	0	4165
    5	5074		4892		1448		3443		1985		53	1932		1395
    10	10148	4897		1322		3574		2102		106 1995		1215
    15	15223	4892		1220		3671		2194		159 2034		1060
    20	20297	4892		1147		3744		2276		213 2063		934
    25	25372	4892		1075		3816		2354		266 2087		808
    30	29985	4892		1002		3889		2426		314 2111		687
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 7
    0	0	4892		4247		644 0	0	0	4247
    5	5074		4892		3647		1244		1981		53	1927		3594
    10	10148	4892		3618		1273		2107		106 2000		3511
    15	14761	4892		3603		1288		2170		155 2015		3448
    20	20297	4892		3584		1307		2271		213 2058		3371
    25	25372	4892		3574		1317		2354		266 2087		3308
    30	29523	4892		3565		1327		2412		310 2102		3255
    
    # Insert LED, press button 1 to start...
    # INOM	ILED		VccLED	VD	VLED		VG	VS	VGS VDS <--- LED 8
    0	0	4892		4945		-53 0	0	0	4945
    5	5074		4892		2160		2731		1985		53	1932		2107
    10	10148	4892		2034		2857		2097		106 1990		1927
    15	15223	4897		1927		2969		2194		159 2034		1767
    20	19836	4892		1826		3066		2271		208 2063		1617
    25	25372	4897		1734		3162		2349		266 2082		1467
    30	29523	4892		1666		3225		2412		310 2102		1356
    
    # Insert LED, press button 1 to start...
    
  • Why Vacant Houses Lose Metals

    Scrap Metal Receipt - 2013-02
    Scrap Metal Receipt – 2013-02

    This receipt from a recent trip to the scrap metal dealer explains everything I’ve read about what happens when “cheap commodities” become “precious metals”…

    That having been the case for some years, the weighman now scans your (well, my) drivers license to establish traceability in the event the metal turns out to be stolen, with your ID printed on the receipt. The receipt turns into cash at a fortress-like ATM structure out front, far from the actual metal-handling operation.

    Despite having a computerized metal scale below what looks to be a cable modem bolted to the wall of the small-lot bay, EMR has no web presence whatsoever. That’s not yet a crime, but …

    Some explanations:

    • B241 = brass plumbing fittings, chrome OK
    • CABL1 = house wiring and other copper-heavy cable
    • CABL2 = electronic gadget cables & connectors
    • C273 = pure copper with no fittings or solder, no enameled wire
    • C275 = copper bonded to any other metal or coated with insulation

    We immediately converted those two Grants into a tank of gas and two bags of groceries, so the day came out about even.

  • Dayton 4X221 Snap-Around Volt-Amp-Ohm Meter

    Mad Phil forced me to take this little gem:

    Dayton 4X221 Snap-Around Ammeter
    Dayton 4X221 Snap-Around Ammeter

    Judging from the much-folded Dayton 4X221 Snap-Around Ammeter Operating Instructions (a scanned copy that I folded around the original and tucked inside the case), the ammeter dates back to 1979, which says Mad Phil probably used it in the early 80s, when he was repairing AV equipment. Unlike most vintage clamp-on ammeters, this one can also measure voltage and resistance:

    Dayton 4X221 Snap-Around Ammeter - Specifications
    Dayton 4X221 Snap-Around Ammeter – Specifications

    The resistance function requires a single AAA alkaline cell in the bulky probe, so this should come as no surprise:

    Dayton 4X221 Resistance Probe - battery contact corrosion
    Dayton 4X221 Resistance Probe – battery contact corrosion

    The probe housing contains a 1 A fast-blow fuse, which blocked the corrosion from getting deeper into the probe tip:

    Dayton 4X221 Resistance Probe - battery and fuse
    Dayton 4X221 Resistance Probe – battery and fuse

    The AAA cell was “Best if installed by Jan 1999”, which I’m sure was true. Somehow, you never recognize the last time you use something; I suppose old instruments get used to not seeing the light over the workbench after a while.

    Anyhow.

    Douse the corrosion with vinegar to neutralize the potassium hydroxide, rinse out the probe body, polish the top of the fuse, buff up the battery contact on the test lead, and it’s all good again.

  • 6C21 Triode

    Aitch bestowed this gem on me while cleaning out his collection:

    6C21 Triode
    6C21 Triode

    It’s a 6C21 triode, originally used as a radar modulator, atop a letter-size sheet of graph paper. The plate terminal is on top, the grid sticks out to the side, and the filament is common with the cathode through the base pins.

    It has impressive specs (datasheet and pictures):

    • 30 kV plate voltage
    • 15 A pulsed plate current, 100 ms max
    • 7.5 V filament at 15 A = 112 W (!)
    • Pulse duty cycle 0.2%

    The gray film inside the bulb shows that it’s been used, but the filament still has continuity. Ordinarily, you could turn something like this into a night light by running the filament at a voltage somewhat under its rating, but my bench supply maxed out at @ 3 A without even warming it up; a dim orange night light that burns maybe 75 W is Not A Good Idea.

    The base has some intriguing holes, originally used for forced-air cooling, that lead directly to the glass envelope:

    6C21 Triode - base
    6C21 Triode – base

    One could mount discrete LEDs in those holes, maybe a slightly turned-down 10 mm cool-white LED in the middle flanked by red and blue, and run a low-power Arduino-based mood light; by some cosmic coincidence, the hole spacing matches up almost perfectly with those LED strips. Or one could go full analog with three red LEDs driven by the WWVB signal.

    I’m thinking a plain black acrylic case, with the tube base sunk into the middle, would be about right. No readouts, no dials, no buttons, just a gently glowing tube.

    Maybe a 3D printed socket holding everything in place?

  • Kensington Expert Mouse Trackball: Scroll Ring Aperture Alignment

    That comment suggested scroll ring failures on a Kensington Expert Mouse (it’s a trackball) might occur when the apertures become misaligned from the IR emitter-detector pair, although later results were equivocal. I tore apart a failed unit to see what the alignment looked like for a known-bad scroll ring.

    The right side view shows the receiver roughly centered in an aperture:

    Kensington Expert Mouse - Scroll Ring aperture - right
    Kensington Expert Mouse – Scroll Ring aperture – right

    The left side view shows that the ring is almost flush against the circuit board, with the isolating cutout just in front, and it’s not obvious how to lower it any further:

    Kensington Expert Mouse - Scroll Ring aperture - left
    Kensington Expert Mouse – Scroll Ring aperture – left

    So I think there’s no way to realign this one, other than to raise the aperture ring a bit, but that doesn’t seem like it would make any difference: the detector already has a good view of the emitter.

    If your trackball has a failed scroll ring, tweaking the aperture ring’s alignment certainly can’t hurt: try it and report back.

    If you don’t expect a miracle, you probably won’t be disappointed, alas.

    The pix come from the Canon pocket camera mounted on the macro lens / illuminator, handheld with manual focus. The dust speck on the detector is just slightly out of focus, but you get the general idea.

    Update: 2015-07-29 – A success story from Tom:

    Hi, I wanted to leave a comment for your page here: [this url]

    I’ve got an expert mouse trackball that was having intermittent scroll ring problems, then finally quit working altogether. Dismantled it easily using the instructions on this site.

    Cleaned it and it still wasn’t working. Tried changing the alignment of the IR emitter/detectors and it still wasn’t working. Then we kept on fiddling with the alignment and voilà.

    Like others have said, the alignment seems to be SUPER sensitive. So if any others are reading this with the same problem, keep persevering.

    Thanks to everyone who has posted to help find solutions!

    Another update: Seven years in the future, a real fix appears!

  • Stepper Motor Thermal Coefficient vs. Thermal Compound and Forced Air

    Prompted by that comment, a bit more data emerges.

    This unsteady ziggurat barely supports the aluminum CPU heatsink atop a PC CPU exhaust duct; the two came from different PCs and have no relation to each other.  The vise in the background keeps the whole affair from falling over. The fan sucks air through the heatsink and exhausts it out the front.

    NEMA 17 Stepper - Heatsink with Fan
    NEMA 17 Stepper – Heatsink with Fan

    Throughout all this, the stepper driver runs at a bit over 10 k step/sec, tuned to avoid the howling mechanical resonances in that stack. At 1/8 microstepping, that’s 6.25 rev/s = 375 RPM, which would drive the Thing-O-Matic at 210 mm/s and the M2 at 225 mm/s. Your speed will vary, of course, depending on the pulley diameter / number of teeth / belt pitch, etc.

    Under the same conditions as before (i.e., no thermal compound, fan off), the stepper stabilized at 143 °F = 62 °C in the 57 °F = 14 °C Basement Laboratory ambient, with 1.91 A peak current (I don’t believe that second decimal place, either) and a 6.6 °C/W case-to-ambient coefficient. That’s close enough to the 63 °C and 6.7 °C/W coefficient from the earlier test, so the conditions seem roughly the same.

    Smoothing a thin layer of heatsink compound on the butt of the motor, then squishing it firmly atop the heatsink, cut the temperature to 130 °F = 53 °C without the fan. That suggests the case-to-ambient coefficient is now 5.3 °C/W: the thermal compound helps by 1.3 °C/W.

    Turning on the fan drops the case temperature to 84 °F = 29 °C, which works out to a coefficient of 2.1 °C/W. Obviously, moving air over that heatsink helps the cooling a lot: the heatsink felt cold to the touch and the motor case was barely warm.

    Increasing the current to 2.37 A dissipates 11.2 W, which would be scary without the heatsink and air flow. The temperature stabilized at 91 °F = 33 °C, for a coefficient of 1.7 °C/W.

    At 2.83 A = 16 W, the temperature rises to 100 °F = 38 °C, with a coefficient of 1.5 °C/W. While it’s not unstoppable with that much current, the motor has plenty of torque! The motor becomes pleasantly warm, the heatsink stays just above cool, and all seems right with the world. I suspect the windings get a bit toasty in there, but they can’t possibly be worse off than inside a case at boiling-water temperatures.

    Using the original insulated-motor coefficient of 19 °C/W, 16 W would cook the motor at 320 °C. Perhaps the case would make a nice extruder heater after it stopped being a motor?

    [Update: See the comments for the results of just blowing air over the motor case.]