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.

Tag: Improvements

Making the world a better place, one piece at a time

  • Build Platform Chisel Handle

    My father used a little chisel for some unknown purpose while he was an instrument repair tech at Olmstead AFB during the mid-60s. Its homebrew wood handle eventually disintegrated and I made a quick-and-truly-dirty replacement from epoxy putty and heatshrink tubing, promising that I’d eventually do better.

    Seeing as how I use it to pop objects off the M2’s build platform and being in need of a tall, skinny object to see how PETG works with towers, that chisel now has a nice magenta handle:

    Platform Chisel - PETG handle
    Platform Chisel – PETG handle

    Well, OK, it may not be the prettiest handle you’ve ever seen, but it’s much better than an epoxy turd, as measured along several axes.

    Incidentally, epoxy putty bonds to clean steel like there’s no tomorrow. I had to file the last remaining chunks off and sandpaper the residue down to clean steel again.

    The solid model shows it in build-a-tower mode:

    Chisel Handle - solid model
    Chisel Handle – solid model

    I think at least one rounded end would improve its appearance. Two rounded ends would make it un-printable in that orientation, although a low-vertex polygonal approximation might have enough of a flat bottom to suffice. Given how long it took me to replace the epoxy, that could take a while.

    The central slot fits snugly around the handle, requiring persuasion from a plastic mallet to set in in position.

    Once again, the nozzle shed a small brown PETG booger after the first few layers:

    PETG Chisel Handle - oxidized plastic
    PETG Chisel Handle – oxidized plastic

    I’m beginning to think PETG infill needs more attention than I’ve been giving it: that’s 15% 3D Honeycomb combined over three layers.

    The OpenSCAD source code:

    // Chisel Handle
    // Ed Nisley KE4ZNU - March 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
    
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    
    //-------
    // Dimensions
    
    Shank = [16.0,2.4,59];			// width, thickness, length to arched end
    
    BladeWidth = 27.0;
    
    HandleSides = 8;
    
    //-------
    
    module ShowPegGrid(Space = 10.0,Size = 1.0) {
    
      RangeX = floor(95 / Space);
      RangeY = floor(125 / Space);
    
    	for (x=[-RangeX:RangeX])
    	  for (y=[-RangeY:RangeY])
    		translate([x*Space,y*Space,Size/2])
    		  %cube(Size,center=true);
    
    }
    
    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);
    }
    
    
    
    module Handle() {
    	difference() {
    		scale([1.0,0.5,1.0])
    			rotate(180/HandleSides)
    				cylinder(d=BladeWidth/cos(180/HandleSides),h=Shank[2],$fn=HandleSides);
    		translate([0,0,Shank[2]/2])
    			cube(Shank + [0,0,2*Protrusion],center=true);
    	}
    }
    
    //-------
    // Build it!
    
    //ShowPegGrid();
    
    if (Layout == "Show") {
    	Handle();
    }
    
    if (Layout == "Build") {
    	translate([0,0,0])
    		rotate([0,0,0])
    			Handle();
    }
    
  • LED Bulb in High-Vibration Environment

    The garage door opener just ate another rough-duty bulb, so let’s see how a $7 LED bulb fares:

    Walmart 60 W LED Bulb - garage door opener
    Walmart 60 W LED Bulb – garage door opener

    It has no external heatsink fins and the color temperature looks just like the old-school incandescent bulb it’s replacing, so they’re getting a clue about what’s acceptable to ordinary folks.

    That’s equivalent to a 60 W incandescent bulb, too, at least according to the package:

    Walmart 60 W LED Bulb - package data
    Walmart 60 W LED Bulb – package data

    I love the “Return the package and reciept for replacement or money back” part…

  • MakerGear M2: Slic3r Config for PETG

    Changing from PLA to PETG with a V4 hot end and 24 V power required several slicing adjustments, some of which weren’t at all obvious. It’s not all settled down, but what you see here comes from a bunch of test objects and tweaks that you’ll see over the next few days; this is basically a peek into the future.

    M2 V4 Calibration Objects
    M2 V4 Calibration Objects

    The obvious changes:

    • Extrusion temperature: 250 °C
    • Platform temperature: 90 °C

    Hot PETG seems rather sticky and produces hair-fine strings that aren’t due to poor retraction. Running at 230 °C is possible, but the strings are nasty. The V4 hot end shouldn’t run over 250 °C; fortunately, some tests suggest the stringing doesn’t Go Away at 260 °C, so moah powah! isn’t required.

    Hair spray on glass works well above 90 °C and not at all below 80 °C. A stick of Elmer’s Washable Glue Stick, chosen because it was on the Adhesive Shelf, produced exactly zero adhesion at any platform temperature I was willing to use. Its “washable” nature surely contributed to the failure; you want something that’s gonna stick with you forever.

    The eSun PETG filament diameter varies from 1.63 to 1.72 mm, which seems like a lot compared to the MakerGear PLA I’d been using; I’ve told Slic3r to run with 1.70 mm. In practice, it doesn’t seem to matter; the average over a meter works out to 1.70, I haven’t seen any abrupt bulges, and the objects come out fine. This spool arrived late last year, early in eSun’s production, so perhaps they’ve smoothed things out by now.

    A few iterations of thinwall box building put the Extrusion Multiplier at 1.11, producing a spot-on 0.40 mm thread width at either 0.20 or 0.25 mm thread thickness.

    Infill:

    • Infill overlap: 10%
    • Max infill: 40%
    • Infill pattern: 3D Honycomb
    • Top/bottom pattern: Hilbert Curve
    • Combine infill: 3 layers

    The first attempt at a solid box (left of center, first row) became so overstuffed I canceled the print; the top bulges upward. A few parameter tweak iterations produced the perfect 100% filled solid box to its right, but in actual practice a 40% 3D Honeycomb will be entirely strong enough for anything I build.

    Reducing the overlap from 15% to 10% reduced the obviously overstuffed junction just inside the perimeter threads.

    Cooling:

    • Fan for layers below 20 s
    • Minimum layer time: 10 s
    • Minimum speed: 10 mm/s

    PETG wants to go down hot, but printing a single thinwall box requires that much cooling to prevent slumping. Might be excessive; we shall see.

    Speeds:

    • First layer: 15 mm/s
    • External perimeters: 25 mm/s
    • Perimeters: 50 mm/s
    • Infill: 75 mm/s
    • Travel: 300 mm/s

    Slower XY speeds seem to produce better results, although those values aren’t based on extensive experience.

    The first layer doesn’t work well at higher speeds, with acute corners and edges pulling up as the nozzle moves away. Using the Hilbert Curve pattern not only looks pretty, but also ensures the nozzle spends plenty of time in the same general area. Higher platform temperatures work better, too, and I may goose the 40 V supply a bit to improve the 0.2 °C/s warmup rate.

    The travel speed went up from 250 mm/s in an attempt to reduce stringing, but it may be too aggressive for the Y axis with the new 24 V supply. On very rare occasions, the Y axis stalls during homing, despite not changing the speeds in the startup G-Code, and I’m still accumulating experience with that.

    Bridging isn’t nearly as clean as PLA. After some tinkering, a bridge speed of 25 mm/s and flow of 0.90 seems to work, but some chain mail patches suggest there’s plenty of room for improvement.

    Mechanically, PETG is softer and more resilient than PLA, with a much higher glass transition temperature. Larger objects with 40% infill are essentially rigid and smaller objects are bendy, rather than brittle.

    On the whole, PETG seems like it will work well for the stuff I build, although magenta isn’t my favorite color…

    CAUTION: Don’t use this Slic3r configuration unless:

    The Slic3r configuration:

    # generated by Slic3r 1.2.7-dev on Mon Mar  9 19:51:37 2015
    avoid_crossing_perimeters = 0
    bed_shape = -100x-125,100x-125,100x125,-100x125
    bed_temperature = 90
    before_layer_gcode =
    bottom_solid_layers = 3
    bridge_acceleration = 0
    bridge_fan_speed = 100
    bridge_flow_ratio = 0.9
    bridge_speed = 25
    brim_width = 0
    complete_objects = 0
    cooling = 1
    default_acceleration = 0
    disable_fan_first_layers = 2
    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 X135 Y100 F30000	; nozzle to right, bed front\nM84     	; disable motors\n;-- Slic3r End G-Code ends --
    external_fill_pattern = hilbertcurve
    external_perimeter_extrusion_width = 0
    external_perimeter_speed = 25
    external_perimeters_first = 0
    extra_perimeters = 1
    extruder_clearance_height = 25
    extruder_clearance_radius = 15
    extruder_offset = 0x0
    extrusion_axis = E
    extrusion_multiplier = 1.11
    extrusion_width = 0.4
    fan_always_on = 0
    fan_below_layer_time = 20
    filament_diameter = 1.7
    fill_angle = 45
    fill_density = 40%
    fill_pattern = 3dhoneycomb
    first_layer_acceleration = 0
    first_layer_bed_temperature = 90
    first_layer_extrusion_width = 0.4
    first_layer_height = 100%
    first_layer_speed = 15
    first_layer_temperature = 250
    gap_fill_speed = 50
    gcode_arcs = 0
    gcode_comments = 0
    gcode_flavor = reprap
    infill_acceleration = 0
    infill_every_layers = 3
    infill_extruder = 1
    infill_extrusion_width = 0
    infill_first = 1
    infill_only_where_needed = 0
    infill_overlap = 10%
    infill_speed = 75
    interface_shells = 0
    layer_gcode =
    layer_height = 0.25
    max_fan_speed = 100
    min_fan_speed = 100
    min_print_speed = 10
    min_skirt_length = 15
    notes =
    nozzle_diameter = 0.35
    octoprint_apikey =
    octoprint_host =
    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 = 50
    perimeters = 3
    post_process =
    pressure_advance = 0
    raft_layers = 0
    resolution = 0.005
    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 = aligned
    skirt_distance = 3
    skirt_height = 1
    skirts = 3
    slowdown_below_layer_time = 10
    small_perimeter_speed = 25
    solid_infill_below_area = 1
    solid_infill_every_layers = 0
    solid_infill_extruder = 1
    solid_infill_extrusion_width = 0
    solid_infill_speed = 75
    spiral_vase = 0
    standby_temperature_delta = -5
    start_gcode = ;-- Slic3r Start G-Code for M2 starts --\n;  Ed Nisley KE4NZU - 2015-03-07\n;  Makergear V4 hot end\n; Z-min switch at platform, must move nozzle to X=135 to clear\nM140 S[first_layer_bed_temperature]	; start bed heating\nG90				; absolute coordinates\nG21				; millimeters\nM83				; relative extrusion distance\nM17				; enable steppers\nG4 P250			;  ... wait for power up\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 clear plate, origin in middle\nG92 Y-127\nG28 X0			; home X, origin in middle\nG92 X-100\nG1 X130 Y0 F30000	; move off platform to right side, center Y\nG28 Z0			; home Z to platform switch, with measured offset\nG92 Z-2.07\nG0 Z2.0			; get air under switch\nG0 Y-127 F10000	; set up for priming, zig around corner\nG0 X0			;  center X\nG0 Y-125.0		; just over platform edge\nG0 Z0 F500	; exactly at platform\nM109 S[first_layer_temperature]	; set extruder temperature and wait\nM190 S[first_layer_bed_temperature]	; wait for bed to finish heating\nG1 E20 F300		; prime to get pressure, generate blob on edge\nG0 Y-123		; shear off blob\nG1 X15 F20000	; jerk away from blob, move over surface\nG4 P500			; pause to attach\nG1 X45 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_contact_distance = 0.2
    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 = 50
    support_material_threshold = 0
    temperature = 250
    thin_walls = 1
    threads = 2
    toolchange_gcode =
    top_infill_extrusion_width = 0
    top_solid_infill_speed = 25
    top_solid_layers = 3
    travel_speed = 300
    use_firmware_retraction = 0
    use_relative_e_distances = 0
    use_volumetric_e = 0
    vibration_limit = 0
    wipe = 0
    xy_size_compensation = 0
    z_offset = 0
    
  • MakerGear M2: 24 V Power vs. LED Lighting

    I installed the 24 V white LED panels under the M2’s X-axis gantry, connected it to a 24 V wall wart, and all was good:

    LED Panel - on M2 Gantry
    LED Panel – on M2 Gantry

     

    The red plastic block shows that picture happened before the V4 hot end installation

    Now, with the V4 hot end and fans installed, I popped a 24 V supply brick off the heap and connected another set of Powerpoles:

    M2 - Powerpole connector block
    M2 – Powerpole connector block

    The 24 V supply now powers everything on the RAMBo board, with the platform heater running from the 40 V supply through the DC-DC solid state relay.

    Unfortunately, wiring the LED panels to the RAMBo MOSFET driving the fans didn’t quite work. Turns out that the extruder PWM pulses produce corresponding LED blinks; the V4 hot end draws 1.5 A and that’s enough to flicker the lights. So they’re back on the wall wart and glow steadily again.

    For whatever it’s worth, the panels don’t have limiting resistors, just eight 150 mA LED emitters in series…

  • MakerGear M2: Marlin 1.0.2 Firmware Tweaks

    Given that I’m throwing all the balls in the air at once:

    • V4 hot end / filament drive
    • 24 VDC motor / logic power supply
    • PETG filament

    It seemed reasonable to start with the current Marlin firmware, rather than the MakerGear version from long ago. After all, when you file a bug report, the first question is whether it happens with the Latest Version.

    Marlin has undergone a Great Refactoring that moved many of the constants around. I suppose I should set up a whole new Github repository, but there aren’t that many changes and I’ve gotten over my enthusiasm for forking projects.

    Anyhow, just clone the Marlin repo and dig in.

    In Marlin_main.cpp, turn on the Fan 1 output on Arduino pin 6 that drives the fans on the extruder and electronics box:

    pinMode(6,OUTPUT);	// kickstart Makergear M2 extruder fan
    digitalWrite(6,HIGH);
    

    You could use the built-in extruder fan feature that turns on when the extruder temperature exceeds a specific limit. I may try that after everything else works; as it stands, this shows when the firmware gets up & running after a reset.

    In Configuration_adv.h, lengthen the motor-off time and set the motor currents:

    #define DEFAULT_STEPPER_DEACTIVE_TIME 600
    #define DIGIPOT_MOTOR_CURRENT {185,215,185,185,135}
    

    The Configuration.h file still has most of the tweaks:

    #define STRING_CONFIG_H_AUTHOR "(Ed Nisley - KE4ZNU - Hotrod M2)"
    #define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H
    
    #define BAUDRATE 115200
    
    #define MOTHERBOARD BOARD_RAMBO
    
    #define TEMP_SENSOR_0 1
    #define TEMP_SENSOR_BED 1
    
    #define HEATER_0_MAXTEMP 290
    #define HEATER_1_MAXTEMP 290
    #define HEATER_2_MAXTEMP 290
    #define HEATER_3_MAXTEMP 290
    
    #define X_MAX_POS 136
    #define X_MIN_POS -100
    #define Y_MAX_POS 125
    #define Y_MIN_POS -127
    #define Z_MAX_POS 175
    #define Z_MIN_POS 0
    
    #define HOMING_FEEDRATE {75*60, 75*60, 30*60, 0}
    
    #define DEFAULT_AXIS_STEPS_PER_UNIT   {88.88,88.88,400,424.4}
    #define DEFAULT_MAX_FEEDRATE          {450, 450, 100, 94}
    #define DEFAULT_MAX_ACCELERATION      {5000,2500,2000,10000}
    
    #define DEFAULT_ACCELERATION          10000
    #define DEFAULT_RETRACT_ACCELERATION  10000
      
    

    I missed the max & min position settings on the first pass (they’re new!), which matter because I put the origin in the middle of the platform, rather than the front-left corner. Marlin now clips coordinates outside that region, so the first thinwall calibration box only had lines in Quadrant 1…

  • MakerGear M2: PETG Filament Indentations

    Running some PETG filament through the M2’s new V4 extruder drive produced nice indentations from the drive gear:

    PETG filament indentations - front view
    PETG filament indentations – front view

    The square-looking indentation at the far left came from having the filament sit unmoving for an hour or so. There’s a smaller indentation to the left of that from a partially engaged gear tooth.

    The side view:

    PETG filament indentations - side view
    PETG filament indentations – side view

    That’s with the adjusting screw cranked 1/2 turn inward from what felt like first contact.

    It’s an M4 screw with 0.7 mm pitch, so each turn moves the extruder pressure arm 0.35 mm. However, the bearing actually pressing the filament against the drive gear is 1/3 of the distance from the fulcrum to the screw:

    M2 V4 Filament Drive - front view
    M2 V4 Filament Drive – front view

    Sooooo the bearing should move more-or-less 1/3 as far as the screw, modulo the arm bending, the fulcrum not actually being a pivot, and suchlike: 0.35 mm at the screw should push the gear 0.1 mm into the filament.

    Squinting at the filament through a measuring magnifier says the indentations are 0.30 mm deep, which means the screw moved 1.0 mm after the actual “first contact” with the filament. That’s not surprising: PETG filament seems soft and easily indented, the force required to dent the filament doesn’t amount to much, plus there’s plenty of mechanical advantage from my fingers through the screwdriver to the filament.

    Turning the screw another half turn certainly won’t mash the drive gear teeth another 0.1 mm into the filament, though, because the force increases dramatically as the dent goes deeper into the filament.

    Compare that to PLA filament through the V3 extruder, back in the day:

    M2 extruder - filament embossing
    M2 extruder – filament embossing

    Looks more or less the same to me, but there’s no way to tell at this late date.

    That blue tube anchors the filament guide and keeps the whole affair from thrashing around as the extruder zips back & forth along the X axis.

  • MakerGear M2: 24 V Fans

    My M2 dates back to early 2013 and arrived with a 12 V platform power brick and a 19 V brick for everything else. I replaced the platform with a hotrod version, used a DC-DC SSR to control the high-current path, drove it from a 48 V brick dialed back to 40 V, and left the 19 V brick alone.

    Recent M2s use a single 24 V brick for everything, including the motors and V4 hot end, so I decided to ditch the 19 V supply when I installed the new hot end. The stock 12 V fans depended on PWM to reduce the 19 V supply to something tolerable, but, with 24 V ball bearing fans being cheap & readily available, I replaced all three.

    I bashed a pair of angled brackets from a random heatsink fin to hold the extruder & platform fans together:

    M2 V4 Extruder - 24 V fans
    M2 V4 Extruder – 24 V fans

    All of that hangs from the single screw in the lower left corner of the upper fan, which has worked well enough and never given any trouble, despite my misgivings.

    They’re much quieter than the original fans, perhaps as a result of operating at their rated voltage without PWM trickery. In theory, the fan mounted horizontally in the electronics box should survive longer with ball bearings, but the original sintered-bearing fan didn’t complain too much.