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: Science

If you measure something often enough, it becomes science

  • MAKE Magazine 2015 Test Objects

    Just for completeness, here’s how the MAKE Magazine 2015 Test Objects came out on my somewhat modified MakerGear M2. I ignored the instructions, lumped all the models together, sliced ’em with my ordinary Slic3r settings, and printed the entire lot in one go:

    MAKE Magazone 2015 Test Objects - on platform
    MAKE Magazone 2015 Test Objects – on platform

    Some details…

    There’s no point in showing the Dimension Accuracy Tower-of-Hanoi (hiding behind the smokestack), as it looks exactly like it should. The 20 mm diameter platter came out at 19.7 ± 0.05 mm in both X and Y, so that’s a score of 2 or 3. It’s exactly the same along both axes, both diagonals, and, in fact, all the way around, within ±0.07 mm tolerance. In fact, all the layers worked out about that way; it’s consistently a bit too small. That’s what I’d expect for an uncalibrated model.

    The Bridging Performance lattice gets a 5, with all the bars having dead-flat perimeters and no dropped infill. That would be a 1 if “dropped” should be “drooped”; I have no idea which is correct or exactly what they mean, but I have seen bridge threads drop off the sides, so I’ll assume it means what it says.

    The front view shows the first bridging layer getting droopy under the longer bars, as you’d expect:

    Bridging - front
    Bridging – front

    All those drooping threads remain above the 2 mm tolerance, assuming that’s what they intended.

    The bottom view shows the loose strands below the bars:

    Bridging - bottom
    Bridging – bottom

    The Overhang Performance arch gets a 5, because the top surface finish remains pretty much the same from 30° through 70° overhang:

    Overhang - upper
    Overhang – upper

    Underneath, things look weirder:

    Overhang - lower
    Overhang – lower

    I think the oddness on the left (the underside of the 30° section) is due to interference from the Fine Positive Space Features spire array; the nozzle came directly from there. The 70° overhang looks ugly, but I wouldn’t have imagined that would work at all, let alone as well as it did.

    The Negative Space Tolerance block weighs in at 2, as the pins with 0.6 and 0.5 mm clearance pushed out with finger pressure. The 0.3 and 0.4 mm clearance pins have air nearly all the way around, but would require a sharp rap from a mallet. The 0.2 mm pin remains firmly stuck:

    Negative Space Tolerance
    Negative Space Tolerance

    I don’t know how to judge the Fine Positive Space Features bed-o’-nails:

    Fine Positive
    Fine Positive

    I think it’s either a 2 or a 3, but opinions will certainly differ. Hot off the platform, five of the nine spires completed successfully. Three other got almost done, but broke off in handling. The collection of drool on the left-middle spire seems to be from the uncompleted spires in the foreground; I think there just wasn’t enough adhesion to hold them together. The perimeters ran at 50 mm/s and the infill at 150 mm/s, because it’s printed with everything else, so it wasn’t done with the delicacy it would get in isolation.

    Both Mechanical Resonance in XY boxes look fine to me:

    XY Resonance - notch
    XY Resonance – notch

    The ripples are visible, but barely perceptible to the thumbnail. The Rules call for 0 or 2, I’d give it a 1: if those ripples pose a problem, then sheesh you’re using the wrong process.

    Also, the perimeters ran at 50 mm/s perimeter and the thick walls got 150 mm/s infill.

    A corner of the single-wall box looks about the same as the corresponding point on the 1 mm box (which isn’t shown):

    XY Resonance - corner
    XY Resonance – corner

    I think the Mechanical Resonance in Z smokestack gets a 1 (the Rules allow either 0 or 2); I stopped it after 100 mm, because bedtime. The bottom section shows the influence of all the other stuff going on around it:

    Z Resonance - lower
    Z Resonance – lower

    That’s not a missed step over there on the far left: it lines up with the bottom bar of the adjacent Bridging Performance lattice. The next glitch lines up with the top of the Negative Space block. And so forth and so on.

    The top, done all by itself at 11 mm/s, shows some misalignment:

    Z Resonance - upper
    Z Resonance – upper

    Each layer took 15 seconds, so I suspect it’d look better with more cooling.

    So, using ordinary default settings for everything and with all the handwaving in mind, I’ll call the total score 19-ish of a possible 29. The M2 would definitely do better on individual objects sliced with carefully hand-tuned parameters after considerable iteration; this is its ordinary, day-in-and-day-out performance on crazy models that I’d never attempt without tweaking.

    The score would be much much much higher if I judged it with criteria similar to what I see applied to some of the Thingiverse groupings.

    The M2 works well for me, anyhow.

    For reference, here’s the current Slic3r configuration:

    # generated by Slic3r 1.2.1 on Sun Dec 7 12:19:19 2014
    avoid_crossing_perimeters = 0
    bed_shape = -100x-125,100x-125,100x125,-100x125
    bed_temperature = 70
    bottom_solid_layers = 3
    bridge_acceleration = 0
    bridge_fan_speed = 100
    bridge_flow_ratio = 1
    bridge_speed = 150
    brim_width = 0
    complete_objects = 0
    cooling = 1
    default_acceleration = 0
    disable_fan_first_layers = 1
    dont_support_bridges = 1
    duplicate_distance = 6
    end_gcode = ;-- Slic3r End G-Code for M2 starts --\n; Ed Nisley KE4NZU - 15 November 2013\nM104 S0 ; drop extruder temperature\nM140 S0 ; drop bed temperature\nM106 S0 ; bed fan off\nG1 Z160 F2000 ; lower bed\nG1 X130 Y125 F30000 ; nozzle to right, bed front\nM84 ; disable motors\n;-- Slic3r End G-Code ends --
    external_perimeter_extrusion_width = 0
    external_perimeter_speed = 50
    external_perimeters_first = 0
    extra_perimeters = 1
    extruder_clearance_height = 25
    extruder_clearance_radius = 15
    extruder_offset = 0x0
    extrusion_axis = E
    extrusion_multiplier = 1.07
    extrusion_width = 0.4
    fan_always_on = 0
    fan_below_layer_time = 30
    filament_diameter = 1.72
    fill_angle = 45
    fill_density = 20%
    fill_pattern = 3dhoneycomb
    first_layer_acceleration = 0
    first_layer_bed_temperature = 70
    first_layer_extrusion_width = 0.4
    first_layer_height = 100%
    first_layer_speed = 25
    first_layer_temperature = 175
    gap_fill_speed = 50
    gcode_arcs = 0
    gcode_comments = 0
    gcode_flavor = reprap
    infill_acceleration = 0
    infill_every_layers = 2
    infill_extruder = 1
    infill_extrusion_width = 0
    infill_first = 1
    infill_only_where_needed = 0
    infill_speed = 150
    interface_shells = 0
    layer_gcode =
    layer_height = 0.2
    max_fan_speed = 100
    min_fan_speed = 75
    min_print_speed = 4
    min_skirt_length = 15
    notes =
    nozzle_diameter = 0.35
    only_retract_when_crossing_perimeters = 1
    ooze_prevention = 0
    output_filename_format = [input_filename_base].gcode
    overhangs = 1
    perimeter_acceleration = 0
    perimeter_extruder = 1
    perimeter_extrusion_width = 0.4
    perimeter_speed = 150
    perimeters = 2
    post_process =
    raft_layers = 0
    resolution = 0.01
    retract_before_travel = 1
    retract_layer_change = 0
    retract_length = 1
    retract_length_toolchange = 5
    retract_lift = 0
    retract_restart_extra = 0
    retract_restart_extra_toolchange = 0
    retract_speed = 60
    seam_position = nearest
    skirt_distance = 3
    skirt_height = 1
    skirts = 3
    slowdown_below_layer_time = 10
    small_perimeter_speed = 50
    solid_fill_pattern = rectilinear
    solid_infill_below_area = 5
    solid_infill_every_layers = 0
    solid_infill_extrusion_width = 0
    solid_infill_speed = 150
    spiral_vase = 0
    standby_temperature_delta = -5
    start_gcode = ;-- Slic3r Start G-Code for M2 starts --\n; Ed Nisley KE4NZU - 15 Nov 2013\n; 28 Feb 2014 - 6 Mar 2014 - tweak Z offset June July 2014\n; Z-min switch at platform, must move nozzle to X=130 to clear\nM140 S[first_layer_bed_temperature] ; start bed heating\nG90 ; absolute coordinates\nG21 ; millimeters\nM83 ; relative extrusion distance\nG92 Z0 ; set Z to zero, wherever it might be now\nG1 Z10 F1000 ; move platform downward to clear nozzle; may crash at bottom\nG28 Y0 ; home Y to be sure of clearing probe point\nG92 Y-127 ; set origin so 0 = center of plate\nG28 X0 ; home X\nG92 X-95 ; set origin so 0 = center of plate\nG1 X130 Y0 F30000 ; move off platform to right side, center Y\nG28 Z0 ; home Z with switch near center of platform\nG92 Z-4.65 ; set origin to measured z offset\nG0 Z2.0 ; get air under switch\nG0 Y-127 F10000 ; set up for priming, zig around corner\nG0 X0 ; center X\nM109 S[first_layer_temperature] ; set extruder temperature and wait\nM190 S[first_layer_bed_temperature] ; wait for bed to finish heating\nG1 Z0.0 F500 ; put extruder at plate \nG1 E30 F300 ; prime to get pressure, generate blob\nG1 Z5 F2000 ; rise above blob\nG1 X15 Y-125 F20000 ; jerk away from blob, move over surface\nG1 Z0.0 F1000 ; dab nozzle to attach outer snot to platform\nG4 P0.5 ; pause to attach\nG1 X35 F500 ; slowly smear snot to clear nozzle\nG1 Z1.0 F2000 ; clear bed for travel\n;-- Slic3r Start G-Code ends --
    support_material = 0
    support_material_angle = 0
    support_material_enforce_layers = 0
    support_material_extruder = 1
    support_material_extrusion_width = 0
    support_material_interface_extruder = 1
    support_material_interface_layers = 3
    support_material_interface_spacing = 0
    support_material_interface_speed = 100%
    support_material_pattern = pillars
    support_material_spacing = 2.5
    support_material_speed = 150
    support_material_threshold = 0
    temperature = 175
    thin_walls = 1
    threads = 2
    toolchange_gcode =
    top_infill_extrusion_width = 0
    top_solid_infill_speed = 50
    top_solid_layers = 3
    travel_speed = 250
    use_firmware_retraction = 0
    use_relative_e_distances = 0
    vibration_limit = 0
    wipe = 0
    xy_size_compensation = 0
    z_offset = 0
    
  • 3D Printed Chain Mail Armor: Bridging

    With about two meters of black PLA left on the spool, a pair of spare joiner links and a few tchotckes seemed in order:

    Chain Mail Armor - spares and samples
    Chain Mail Armor – spares and samples

    The underside of the samples shows the bridges between the pillars and the cap layer between the sides:

    Chain Mail Armor - link bottom
    Chain Mail Armor – link bottom

    The bridge strands start out droopy, then pull into a more-or-less straight thread as the plastic cools and shrinks. The next layer up looks much, much better.

    I can spend a long time watching the nozzle stretch threads across the chasms, putting me in a definite Channel Zero state of mind…

  • Red-bellied Woodpecker: Too Heavy!

    A red-bellied woodpecker landed on the seed feeder, but the flapping tells you something’s not right:

    Red-bellied woodpecker at feeder - closing
    Red-bellied woodpecker at feeder – closing

    After the fluttering stopped, the seeds had vanished:

    Red-bellied woodpecker at feeder - puzzled
    Red-bellied woodpecker at feeder – puzzled

    According to our books, a red-bellied woodpecker weighed 72.5 g = 2.6 oz back in 1952. The feeder counterweight reads 3 oz and that’s confirmed by my pull scale. Perhaps woodpeckers suffer from the obesity epidemic, too?

    The feeder closes with one cardinal (44 g) and two tufted titmouses (2 x 22 g), all of whom seem rather surprised at the situation.

  • Monthly Science: Energizer CR2032 Life Time

    It seems the batch of Energizer CR2032 lithium cells I bought a while ago reached the end of their shelf life:

    Energizer CR2032 - short life
    Energizer CR2032 – short life

    In point of fact, I replaced three CR2032 cells this month, all with anomalously short lives: one month counts as a complete failure. The Energizer date code YA isn’t helpful in determining when they were manufactured or what the shelf life might be.

    Admittedly, I bought that batch in late 2009, so they might have used up most of their shelf life on somebody else’s shelf. There’s no way to know.

    It’s not clear one can buy known-good cells from any supplier these days, as the counterfeiters evidently get genuine holograms from the same factory as the Brand Names.

  • NTC 2.5 Power Thermistor Characteristics

    From a surplus batch, with no provenance, measuring the resistance with current increasing (upper = squares) and then decreasing (lower = diamonds):

    NTC 2.5 Resistance vs Current
    NTC 2.5 Resistance vs Current

    The resistance at a given current need not lie between those bounds, because it depends strongly on the thermistor’s temperature (duh), which depends on heat loss to the surroundings.

    With that in mind, 1 or 2 Ω looks like the right ballpark for these gadgets. Figure around half a watt each at 600 mA; string three in series to get 9 Ω during a cold start and 3 Ω for warm starts. It’s not clear that would solve the transistor killing spike, but it’s a thought.

    Compared to the SCK055 NTC thermistor, they have about the same resistance at the same current, despite starting at half the initial cold resistance. I think that’s because they’re somewhat larger and thus run cooler at a given current.

    The original data and a portrait of the thermistor:

    NTC 2.5 Power Thermistor - measurements
    NTC 2.5 Power Thermistor – measurements

    Anybody recognize the logo? The symbol in the striped triangle is S+M, if that helps.

    It’s from TDK/EPCOS: datasheets.

  • SCK055 NTC Power Thermistor Characteristics

    While pondering the dead ET227 transistors, I dug an inrush current limiter (a.k.a. NTC power thermistor) out of the heap and made some measurements:

    SCK055 NTC Power Thermistor - measurements
    SCK055 NTC Power Thermistor – measurements

    That’s from a bench power supply attached to a meter and the limiter with clip leads, which was entirely too messy for a picture.

    Turning those numbers into a spreadsheet to calculate the resistances:

    SCK 055 NTC Power Thermistor
    5 Ω @ 25 °C
    Imax = 5 A
    Time constant on the order of 90 seconds
    Current mA Initial mV Final mV Initial Ω Final Ω
    36 190 5.3
    65 350 5.4
    95 500 5.3
    124 638 5.1
    153 770 5.0
    180 880 790 4.9 4.4
    210 910 870 4.3 4.1
    242 980 4.0
    260 1025 944 3.9 3.6
    520 1500 1090 2.9 2.1
    710 1430 1066 2.0 1.5
    1010 1320 1050 1.3 1.0
    910 1020 1.1
    709 920 1030 1.3 1.5
    1010 1480 1040 1.5 1.0
    30 52 110 1.7 3.7

    The data sheet recommends a minimum current above 30% of the maximum, which would be 1.5 A. That’s above the motor’s 1 A operating current, let alone the low-speed current limited conditions, but in this situation that just means the resistance will remain around 1 to 2 Ω with the motor chugging along.

    If I had more of ’em, I could put them in series to build up the resistance, but it’s not clear why that would be better than, say, a 6 Ω aluminum-heatsink resistor dissipating a few watts.

  • ET227 Transistor: SOA Violation

    The ET227 transistor (labeled A from the DC gain tests) I’d been using, ever since the very beginning, failed with a collector-to-emitter short when I started it for a data taking run. In most circuits, that would be a catastrophic failure accompanied by arcs & sparks, but the Kenmore 158 simply started running at full speed and ignored my increasingly desperate attempts to regain control.

    OK, those transistors date back to the 1980s (or maybe even earlier), so maybe It Was Time.

    I swapped in ET227-B, buttoned everything up, and continued taking data.

    Two days later, ET227-B failed with a collector-to-emitter short when it turned on.

    Once is happenstance. Twice is coincidence. A third time means I missed the cluetrain.

    Although the ET227 can switch 1 kV and 100 A, the Safe Operating Area plot shows that the DC limit passes through 1 A at 200 V:

    ET227 - Safe Operating Area
    ET227 – Safe Operating Area

    Bearing in mind that peak line voltage hits 170 – 180 V, 200 V looks like a convenient upper limit. Also, those limits apply at 25 °C case temperature and drop as the junctions warm up, although the datasheet remains mute as to the difference.

    The circuit puts the following elements in series across the AC line:

    • 5 A fast-blow fuse
    • Normally open relay
    • Full-wave rectifier block
    • 120 VAC / 100 W universal motor
    • ET227 NPN transistor
    • 25 T x 2 parallel 24 AWG winding

    After screwing around with Spice for a while, I can’t convince myself that the simulation means anything, but the general idea is that closing the relay at maximum line voltage (about 180 V) produces a staggeringly high current pulse through the series capacitances. A small amount of stray capacitance across the motor passes line voltage to the collector, the collector-base capacitance feeds it to the base, the transistor’s gain slams essentially unlimited current against line voltage, and the operating point squirts through the top of the SOA graph.

    I made up a snubber from a 220 nF X capacitor and a 5.6 Ω resistor. That won’t have any effect on the spike, because the various stray / parasitic capacitors remain directly in series across the line, so the snubber looks like an open circuit. The snubber does damp the ringing after the spike vanishes, but that’s not the problem.

    Some scope shots from ET227-C show the magnitude of the problem; it hasn’t blown yet, but obviously this can’t go on. Note the varying horizontal time scales and vertical current scales (all are at 10 mV/div, with the Tek probe providing the scaling).

    At 50 mA/div, the two humps come from the (damped) ringing. This one doesn’t have much of a spike:

    Snubbed power on transient - ET227C 50 mA-div
    Snubbed power on transient – ET227C 50 mA-div

    At 100 mA/div, I must have caught it at a higher point in the voltage waveform:

    Snubber 5.6 ohm  220 nF - 650 mA spike - 100 mA-div
    Snubber 5.6 ohm 220 nF – 650 mA spike – 100 mA-div

    At 200 mA/div, this one looks seriously worse:

    Snubber 5.6 ohm  220 nF - 1600 mA spike - 200 mA-div
    Snubber 5.6 ohm 220 nF – 1600 mA spike – 200 mA-div

    Now, agreed, a 1.6 A spike in a transistor rated for 200 A pulses doesn’t sound like much, but catching the spikes depends on random chance. If the collector voltage starts at 100 V, then that spike comes pretty close to the DC SOA limit; that’s not enough to kill the transistor, but it’s certainly suggestive.

    Putting an NTC power thermistor in series would add some resistance to the circuit and reduce the magnitude of the spike, but they’re really intended for power supplies that draw a constant load, not a sewing machine that starts and stops all the time. If the motor runs for a while, then the thermistor will be hot for the next startup and the relay will close with relatively little resistance in the circuit.

    More doodling seems in order.