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.

Author: Ed

  • Filament Drive Gear Calculations

    Some equations relevant to indentations produced by a filament drive gear:

    Filament Drive Gear Indentations
    Filament Drive Gear Indentations

    For reference, the smaller indentations are 0.25 mm deep and 1.3 mm across the bottom.

    Variables:

    • d = filament (a.k.a. circle) diameter
    • r = filament radius
    • m = chord depth (inward from circle)
    • c = chord length
    • Θ = angle across chord from circle center, degrees
    • A = chord area (a.k.a. indentation face area)

    The length of the chord at the bottom of the indentation, perpendicular to the filament axis:

    c = 2 sqrt(2mr - m2)

    The chord angle:

    Θ = 2 arcsin(c/2r)

    The chord area, which would be the indentation face if it were perpendicular, which it isn’t:

    A = (r2 / 2) x ((πΘ / 180) - sin(Θ))

    If you measured Θ in radians, the π/180 factor would Go Away.

    Some doodles showing that reducing the indentation from 0.25 to 0.15 reduces the chord area by a factor of two:

    Filament Drive Gear - indentation doodles
    Filament Drive Gear – indentation doodles

    The implication being that you must maintain fairly constant force on the drive bearing against the filament to prevent stripping the indentations.

  • M2 Platform Alignment Check

    Five single-thread thinwall boxes scattered across the platform had an average height of  2.99 mm, with a range of +0.04 mm, -0.06 mm:

    Thinwall open box - 1 thread walls
    Thinwall open box – 1 thread walls

    The wall widths work out to 0.39 mm, with a range of +0.2 mm, -0.01 mm.

    Close enough, given that I can’t recall the last time I tweaked the platform height. I update the filament diameter setting in Slic3r every now & again as the printer gradually works through the spool, but, with one exception, this cyan PETG has been quite consistent and my tweaks didn’t really amount to much.

    Frankly, given that any of the measurements may be off by ±0.02, the best I can hope for is an overall warm fuzzy feeling. When the printed results stop looking good, these results will (probably) provide some indication of whatever just changed.

    The raw measurement data, such as it is:

    Thinwall box measurements - 2016-04-01
    Thinwall box measurements – 2016-04-01
  • Thinwall and Solid Boxes for 3D Printer Calibration

    A revision to my Fundamental Calibration Object adds some variations …

    The classic thinwall open box:

    Calibration Box - open - 1 thread - solid model
    Calibration Box – open – 1 thread – solid model

    A solid box:

    Calibration Box - solid - solid model
    Calibration Box – solid – solid model

    A solid box with text embossed on the lower surface:

    Calibration Box - solid text - solid model
    Calibration Box – solid text – solid model

    You must consider how the slicer settings interact with the solid model parameters, particularly now that slicers can produce adaptive infill for small gaps between perimeter threads. Previewing the slicer’s output will show you what assumptions it makes and prevent surprising results out there on the platform.

    A single-thread wall comes out properly:

    Thinwall open box - 0.40 wall - Slic3r
    Thinwall open box – 0.40 wall – Slic3r

    The results look just like the preview, with firmly bonded layers and no fluff:

    Thinwall open box - 1 thread walls
    Thinwall open box – 1 thread walls

    This wall should be two threads wide, but Slic3r inserts very very thin infill thread:

    Thinwall open box - 0.80 wall - Slic3r
    Thinwall open box – 0.80 wall – Slic3r

    I think that’s a result of forcing the two perimeter threads to sit with their centers exactly one thread width apart, making the (nominal, ideal) inner walls tangent to each other.  Setting the wall to 1.9 mm eliminates the hair-fine infill thread, at the cost of producing an object 0.1 mm smaller than it looks.

    Unfortunately, that fine infill doesn’t produce enough plastic flow for a continuous thread. The PET I’m using accumulates on the nozzle until enough of a glob forms to stick on the previous layer, but hair-fine strands connect those globs to each other and the nozzle, producing awful results:

    Thinwall open box - 2 thread walls
    Thinwall open box – 2 thread walls

    A triple-thread wall allows Slic3r to produce a fatter infill thread that works the way you’d expect:

    Thinwall open box - 1.20 wall - Slic3r
    Thinwall open box – 1.20 wall – Slic3r

    The threads bond firmly in all directions:

    Thinwall open box - 3 thread walls
    Thinwall open box – 3 thread walls

    It’s not obvious from that picture, but the bond between successive infill threads produces a glass-clear vertical plastic slab that relays images from the bottom to the top. The perimeter threads are also firmly bonded, albeit with not quite the same optical quality.

    To use these boxes:

    • Set the OpenSCAD extrusion parameters to match whatever the slicer will use
    • Set the wall height and thickness to whatever you like
    • Compile-and-render, export the result as a solid model in STL / AMF / whatever
    • Feed the solid model into your favorite slicer and save the G-Code
    • Feed the G-Code into your printer, watch it magically create a little box
    • Measure the printed results and compare with the ideal settings
    • Change the slicing configuration and iterate until satisfied

    Verify these measurements before adjusting anything else:

    • Filament diameter: actual vs. nominal will be different
    • Extruder steps per millimeter: mark 100 mm on filament, extrude 100 mm, compare

    Then you can verify / adjust some finicky settings:

    • Extrusion multiplier: does the actual single wall width match slicer’s nominal value?
    • Infill density: 100% infill should perfectly fill the solid box
    • Initial Z offset: does actual height match the model setting?
    • Platform alignment: print five boxes at platform center + corners, verify heights
    • First layer adhesion: if these don’t stick, the platform has weak adhesion
    • Minimum time per layer: if the walls slump, you’re printing too fast
    • Extrusion temperature: good bonding and no delamination along any axis

    The OpenSCAD source code as a GitHub gist:

    // Simple calibration boxes
    // Thin wall open box – verify Extrusion Multiplier
    // Solid box – verify infill settings
    // Ed Nisley – KE4ZNU
    // https://softsolder.com/
    Layout = "Open"; // Open Solid
    Texting = "Text!"; // text message on solid box or empty string to suppress
    //——-
    //- Extrusion parameters must match reality!
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    Protrusion = 0.1; // make holes end cleanly
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    //——-
    // Dimensions
    WallThick = 1.0 * ThreadWidth;
    echo(str("Wall thickness: ",WallThick));
    BoxSize = 20.0;
    echo(str("Overall size: ",BoxSize));
    NominalHeight = 3.0;
    echo(str("Nominal height: ",NominalHeight));
    Height = IntegerMultiple(NominalHeight,ThreadThick);
    echo(str("Actual height: ",Height));
    Rotation = 0; // 45 to exercise X and Y axis motors at same time
    CornerRadius = 2.0;
    CornerSides = 8*4;
    //——–
    module Solid() {
    difference() {
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*(BoxSize – 2*CornerRadius)/2,j*(BoxSize – 2*CornerRadius)/2,0])
    cylinder(r=CornerRadius,h=Height,$fn=CornerSides);
    if (len(Texting))
    translate([0,0,-Protrusion/2])
    linear_extrude(height=3*ThreadThick + Protrusion)
    mirror([1,0,0])
    text(text=Texting,size=6,spacing=1.05,font="ITC Zapf Chancery:style=Italic",halign="center",valign="center");
    }
    }
    module Thinwall() {
    difference() {
    Solid();
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*(BoxSize – 2*CornerRadius)/2,j*(BoxSize – 2*CornerRadius)/2,-Protrusion])
    cylinder(r=(CornerRadius – WallThick),h=(Height + 2*Protrusion),$fn=CornerSides);
    }
    }
    //——-
    rotate(Rotation)
    if (Layout == "Open")
    Thinwall();
    else
    Solid();
  • Road Conditions: 2816 Rt 376 Northbound Sinkhole

    We must dodge this sinkhole on every northbound ride, which means about four times a week:

    Rt 376 2016-01-15 - Northbound milepost 1110 - sinkhole
    Rt 376 2016-01-15 – Northbound milepost 1110 – sinkhole

    It’s been sinking, month by month, ever since I reported it to NYSDOT last July. They dispatched a work crew that did a remarkable job of patching everything around the sinkhole (note the asphalt obliterating the center line), but somehow missed the actual hole on the shoulder, despite the picture I sent. Just before snow season, a second crew patched many small holes along Rt 376 from Red Oaks Mill to Hooker Avenue, but, once again, missed this one.

    If it doesn’t look like much, let’s go for a check ride.

    This section of Rt 376 forms part of NYS Bike Route 9.

  • Road Conditions: Drain Grates on Vassar Road near Red Oaks Mill

    Apart from having a wheel-catcher grid, this one seems survivable:

    Drain grate 1 - 43 Vassar Rd
    Drain grate 1 – 43 Vassar Rd

    You can avoid it as long as you stay alert.

    This beauty, however, stops cars dead in their tracks:

    Drain grate 2 - 35 Vassar Rd
    Drain grate 2 – 35 Vassar Rd

    Drivers who pass cars making a left turn into the strip mall on the other side slam to a stop if they’re lucky enough to see that crater before it claims their right front tire; the grid is about a foot down from grade. The scrapes and scuffs on the far side show that, if it wasn’t for bad luck, some folks wouldn’t have no luck at all.

    Obviously, you can’t bicycle through that one.

    This grate, directly across Vassar Road, would count as a serious pothole in any other context:

    Drain grate 3 - 40 Vassar Rd
    Drain grate 3 – 40 Vassar Rd

    The pavement remains in better shape, because it’s just to the left of the strip mall entrance, but, again, the grate is about a foot below grade. Those scrapes on the far side suggest some folks didn’t notice that in time.

    If I rode any further to the right, perhaps just on the other side of the fog line, my wheels would be on the steep slope from the fog line down to the grid. It’s survivable as long as you expect it and keep a tight grip on the handlebars.

    Vassar Road, formally known as Dutchess County Route 77, forms part of NYS Bike Route 9.

  • Sony HDR-AS30V Camera: Power Requirement

    A recent ride got rained out after 27 minutes:

    Rain Riding - 2016-03-25
    Rain Riding – 2016-03-25

    We didn’t get much more than damp and planned the ride with a bail-out route home, so it was all good.

    The camera ran from STK Battery A, which had gone flat 37 minutes into a recent ride, so I popped it in the battery tester and drained the rest of its charge:

    Sony NP-BX1 - STK A 27 min vs full - 2016-03-25
    Sony NP-BX1 – STK A 27 min vs full – 2016-03-25

    The dotted section says it had 0.85 W·h remaining after 27 minutes. Hand-positioning a copy of that curve against the full charge and discharge curve says the camera required 2.8 W·h. Eyeballometrically averaging the voltage over the leading part of the curve as 3.8 V says the battery delivered 0.74 A·h = 2.8 W·h / 3.8 V, then dividing that by 27/60 says the camera draws 1.6 A. That’s less than the 2 A guesstimate from previous data, but I don’t trust any of this for more than about one significant figure.

    Running the camera for 27 minutes requires 2.8 W·h, meaning 37 minutes should require 3.8 W·h. The curve says that’s the capacity at the 2.8 V test cutoff, suggesting the camera also has a 2.8 V cutoff.

    Looking at the discharge curves from yesterday’s post:

    Sony NP-BX1 - STK ABCD - 2015-11-03 vs 2016-03-24
    Sony NP-BX1 – STK ABCD – 2015-11-03 vs 2016-03-24

    If all that hangs together, the C and D batteries should run the camera for just slightly longer than the A battery, but that doesn’t seem to be the actual result: they’re much better than that.

    More rides are indicated …

  • Monthly Science: Five Months of Lithium Cell Wear

    I’ve marched the four STK NP-BX1 lithium batteries through the Sony HDR-AS30V camera in constant rotation since last November. The A battery drained 35 minutes into an ordinary ride on a pleasant day, so charging and measuring the entire set seemed in order:

    Sony NP-BX1 - STK ABCD - 2015-11-03 vs 2016-03-24
    Sony NP-BX1 – STK ABCD – 2015-11-03 vs 2016-03-24

    The dotted curves come from early November 2015, when the batteries were fresh & new, and the solid curves represent their current performance.

    It’s been a mild winter, so we’ve done perhaps 75 rides during the last 150-ish days. That means each battery has experienced under 20 discharge cycles, which ought not make much difference.

    The B battery started out weak and hasn’t gotten any better; I routinely change that one halfway into our longer rides.

    The A battery started marginally weaker than C and D, but has definitely lost its edge: the voltage depression at the knee of the curve might account for the early shutdown.

    Figuring that the camera dissipates 2.2 W, a battery that fails after 35 minutes has a capacity of 1.3 W·h. That suggests a cutoff voltage around 3.8 V, which makes absolutely no sense whatsoever, because the C and D batteries deliver at least 75 minutes = 2.8 W·h along similar voltage curves.

    The B battery goes in the recycle heap and we’ll see how the A battery behaves on another ride…