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: Laser Cutter

  • Ruida Laser Controller: Home Offset vs. Focus Distance Settings

    Ruida Laser Controller: Home Offset vs. Focus Distance Settings

    The Ruida KT332N controller on my OMTech laser cutter has two settings affecting the final position of the U axis (which controls the platform’s position) after pushing the Focus button on the machine console:

    KT332N Laser Controller display
    KT332N Laser Controller display

    After turning the machine on or pressing the Reset button, the U axis does not automatically home and reports its position as 1000 mm. This allows manual control in either direction with the U↑ and U↓ buttons.

    Pushing the Focus button (then confirming the action by pressing the Ent⏎ button) causes the controller to raise the platform until the focus “pen” (which is really a switch) trips, presumably on the material you intend to cut / engrave. This picture shows the pen and its attachment to the laser nozzle:

    OMTech laser focus pen-switch
    OMTech laser focus pen-switch

    The pen’s position in its clamp has no relation to the laser beam focal point below the nozzle: loosening either of the clamp screws lets you move the pen vertically. You must tell the controller how much to move the platform after the switch trips to properly set the focus, which means you must measure that distance. More on that later.

    The vertical position of the platform when the “pen” switch trips is its Home position. The controller then lowers the platform by the distance in the Home Offset setting and defines that position as U = 0.0 mm.

    The Home Offset can be zero:

    KT332N Home Offset Setting
    KT332N Home Offset Setting

    In which case the platform does not move after the switch trips:

    Focus step gauge - 3 mm
    Focus step gauge – 3 mm

    The step gauge shows the nozzle is 3.0 mm above the material (the first step is 2 mm, because a 1 mm acrylic tab is crazy talk) when the switch trips. Although you can’t quite see the switch plunger through the gauge, it has about 5 mm of travel before tripping, which means it’s firmly pressed against the material and you must not move the nozzle in X or Y to avoid scraping the plunger across the material.

    Setting Home Offset to 15.0 mm lowers the platform by 15 mm after the switch trips, putting the nozzle 18 mm above the material:

    Focus step gauge - 18 mm
    Focus step gauge – 18 mm

    You can (and I have) set the Home Offset so the platform lowers by exactly enough to put the focused beam at the top of the material: push the Focus button and the machine automatically focuses on the material and sets U=0.0 mm at that level.

    Unfortunately, the controller will subsequently not move the platform above that position, corresponding to U axis coordinates below zero. That means you (well, I) cannot move the platform upward to put the focus point into the material, as is sometimes required for a good cut through thicker material.

    The Focus Distance setting defines an additional distance from wherever the Home Offset leaves the platform:

    KT332N Focus Distance Setting
    KT332N Focus Distance Setting

    It’s not 15 mm, because I was fiddling with the focus.

    That value will position the platform 16 mm below the switch trip point. Because Home Offset = 0.0 sets the U axis coordinate to zero at the trip point, the U axis will be at 16 mm when the platform stops moving.

    The key difference is that the controller will now allow the platform to move upward, with decreasing U axis coordinates, until it reaches the switch trip position at U=0. The last 5 mm of travel will occur with the switch actuator pressing against the material, so it’s pretty much useless for actual cutting or engraving.

    So I think the way to go involves setting:

    • Home Offset to the 5-ish mm required for full switch release
    • Focus Distance to the remaining 10-ish mm with the focal point on the material surface

    I hadn’t done that before, because I hadn’t thought this through.

    The Home Offset depends only on the switch travel before it actuates and won’t change when (not if) the pen position changes with respect to the nozzle.

    The Focus Distance defines the additional travel for proper focus at the material surface, so that’s where all the variations due to pen position will go. Unfortunately, that distance cannot be directly measured, because it corresponds to the difference between two positions.

    Today I Learned, etc.

  • Dumbbell Nuts

    Dumbbell Nuts

    Being an Old Guy, I lift dumbbell weights after bike rides for load-bearing upper-body exercise, but need a few more dumbbell nuts (a.k.a. “collars”) to simplify adjusting the weights for each set. Such things are commercially available, but the reviews suggest abysmally bad thread QC and a high return rate.

    Given that I treat my toys carefully, this should suffice:

    Dumbbell Nut - finished
    Dumbbell Nut – finished

    Start with a scan of a steel nut in GIMP:

    Dumbbell Nut - scan
    Dumbbell Nut – scan

    Blow out the contrast, trace it, smooth out some irregularities, get a mask:

    Dumbbell Nut - mask
    Dumbbell Nut – mask

    Select by color, convert the selection to a path, save as SVG, import into OpenSCAD, add a nut with threads from the incomparably useful BOSL2 library, extrude a few features, and this pops out:

    Dumbbell Nut - solid model
    Dumbbell Nut – solid model

    Run it through PrusaSlicer, print on the MK4, and iterate a few times to get everything right:

    Dumbbell Nut - test pieces
    Dumbbell Nut – test pieces

    I naively thought the threads were something standard like Acme, but they’re full-frontal custom trapezoidal. I knew the first pass would be wrong, so the small hex nut on the left started the whole process. Upper left is a revised Acme thread with all the other features, lower middle is the custom trapezoidal thread, and the nut on the upper right worked. Make three more, just like the first one, enjoying the magic of 3D printing.

    Draw the bumper washer in LightBurn based on the dimensions in the OpenSCAD code, cut a set from stamp-pad rubber & adhesive sheet, then assemble:

    Dumbbell Nut - assembly
    Dumbbell Nut – assembly

    As the saying goes, we got nuts:

    Dumbbell Nut - installed
    Dumbbell Nut – installed

    The gray PETG-CF looks black against a white background and gray against black iron.

    With a set of precisely fitting nuts in hand, I discovered one of the four bars in my weight sets is slightly larger than the others, so the code now produces an embiggened root diameter and I have two spares.

    The OpenSCAD code assembles a nut:

    // Dumbbell nut
    // Ed Nisley - KE4ZNU
    // 2024-10-04
    
    include <BOSL2/std.scad>
    include <BOSL2/threading.scad>
    
    ID = 0;
    OD = 1;
    THICK = 2;
    
    NutOAH = 20.0;
    BossOD = 45.0;
    Bumper = [33.0,40.0,2.5];
    
    NumSides = 4*9;
    
    difference() {
        intersection() {
            union() {
                down(NutOAH/2)
                    linear_extrude(height=NutOAH/2,convexity=2)
                        import("Dumbbell Nut - path.svg",
                                center=true);
                linear_extrude(height=NutOAH/2,convexity=2)
                    circle(d=BossOD,$fn=NumSides);
            }
            rotate(180/6)
                trapezoidal_threaded_nut(100.0,26.5,20.0,INCH/4,        // flat size, root dia, height, pitch
                                        bevel=false,ibevel=false,
                                        flank_angle=30,thread_depth=1.8);
        }
    
        up(NutOAH/2 - Bumper[THICK]/2)
            linear_extrude(height=2*Bumper[THICK],convexity=2) {
                difference() {
                    circle(d=Bumper[OD],$fn=NumSides);
                    circle(d=Bumper[ID],$fn=NumSides);
                }
            }
    
    }
    
    
  • Garden Hose Fitting Grip: MVP

    Garden Hose Fitting Grip: MVP

    The garden hose leading from the standpipe / hose bibs outside Mary’s garden to her drip irrigation plumbing has an octagonal fitting requiring more torque than her hand can easily produce. I offered to make a larger grip for the fitting, which amounts to a disk with a grippy rim sized to her hand and an interior opening suitable for gluing to the fitting.

    A couple of laser-cut MDF sizing prototypes accompanied me to the garden:

    Hose Fitting Grip - MDF prototype
    Hose Fitting Grip – MDF prototype

    The springy fingers around the fitting soak up the inevitable distortions found in a battered hose and will eventually be filled with adhesive to lock the grip in place.

    MDF being obviously the wrong material for a permanent installation, the final grip will be 3D printed, with the LightBurn layout modified to produce the internal structure:

    Hose Fitting Grip - LightBurn layers
    Hose Fitting Grip – LightBurn layers

    From left to right:

    • The stacked pieces in order of printing
    • Main grip with springy fingers
    • Spacer keeping the fingers away from the narrower opening
    • Support layer
    • Narrow opening to align the grip with the end of the fitting

    Exporting the SVG images and making a bank shot off Inkscape to create layer names:

    Hose Fitting Grip - Inkscape layers
    Hose Fitting Grip – Inkscape layers

    The ascending layer name + numbers allow a simple OpenSCAD program to extract the SVG shapes by name, extrude them to the proper thickness, put them at the proper height, then combine the result:

    Recenter = [-140,-108,0];
    
    Thick = [0,8.0,1.0,0.2,1.0];
    Level = [0,
             Thick[1],
             Thick[1]+Thick[2],
             Thick[1]+Thick[2]+Thick[3],
             Thick[1]+Thick[2]+Thick[3]+Thick[4]];
    Colors = ["Black","Red","Gray","Yellow","Green"];
    
    union()
        for (i = [1:len(Thick)-1]) {
            color(Colors[i])
                translate(Recenter + [0,0,Level[i-1]])
                    linear_extrude(height=Thick[i],convexity=10)
                        import("/mnt/bulkdata/Project Files/Laser Cutter/Gardening/Hose Fitting Grip/Hose Fitting Grip - Inkscape layout.svg",
                               layer=str("Layer ",i));
        }
    

    The hideous mess generating the Level vector happens because OpenSCAD does not have mutable variables and I hate retyping numbers. One can use a recursive function to add the values, but copypasta makes more sense in this case.

    Which produces this solid model, with garish colors for pedagogic purposes:

    Hose Fitting Grip - top - solid model
    Hose Fitting Grip – top – solid model

    The thin yellow band will be one thread thick to provide support for the green layer with a smaller ID than the springs below it. The gray layer below the yellow is the air gap above the springs.

    Peering inside the bottom shows the (gray) layer providing clearance between the springs and the (yellow) support layer:

    Hose Fitting Grip - bottom interior - solid model
    Hose Fitting Grip – bottom interior – solid model

    Exporting the model as a 3mf file, importing it into PrusaSlicer, and slicing it with suitable parameters (Extrusion Multipler = 0.8) does what you’d expect. This top view shows the internal structure just below the support bridge across the middle:

    Hose Fitting Grip - spring detail - PrusaSlicer
    Hose Fitting Grip – spring detail – PrusaSlicer

    Printing it in gray PETG-CF was uneventful, with the bridging layer coming out surprisingly well:

    Hose Fitting Grip - as printed
    Hose Fitting Grip – as printed

    The springs definitely have an air gap in there:

    Hose Fitting Grip - printed interior
    Hose Fitting Grip – printed interior

    And the support layer cuts out neatly with an Xacto knife:

    Hose Fitting Grip - support removed
    Hose Fitting Grip – support removed

    We’ve had enough rain over the last few days (something to do with a continental-scale storm) to keep me and my adhesives out of the garden, but it hasn’t needed any watering, either.

  • Bathtub Soap Tray V2

    Bathtub Soap Tray V2

    As expected, the adhesive foam strips I used on the bathtub soap tray didn’t survive continued exposure to hot soapy water, so Version 2 includes hooks securing it to the ceramic soap tray and a few other tweaks:

    Bathtub Soap Tray - V2 - LightBurn layout
    Bathtub Soap Tray – V2 – LightBurn layout

    The view from the top:

    Soap Tray V2 - top
    Soap Tray V2 – top

    The hooks are more visible from the bottom, as is the 10 AWG copper wire preventing the whole affair from rotating around the ceramic handle from the weight of the soap bar:

    Soap Tray V2 - bottom
    Soap Tray V2 – bottom

    Ignore the usual crud you’ll find on your ceramic soap tray, too.

    This time I glued things together with Weld-On IPS #3 acrylic solvent.

    The LightBurn layout as a GitHub Gist:

    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  • Converted OttLite Rebasing

    Converted OttLite Rebasing

    The OttLite I converted into a NisLite fell over again and, now having a way to make the long-promised base, this happened:

    Converted Ottlite - cardboard base
    Converted Ottlite – cardboard base

    It’s not particularly elegant, what with being cardboard, but it’s a proof of concept that will determine the final size.

    The top layer is a ring around the lamp pedestal for a bit of stabilization protecting the four M3 screws holding the base to the lamp. Those screws sit on a 60 mm square, offset 1 mm to the front of the lamp:

    NisLite Baseplate - LightBurn layout
    NisLite Baseplate – LightBurn layout

    Which explains why I typically make the first few versions of anything out of cardboard.

    For the record, those inserts look like this:

    Converted Ottlite - brass inserts
    Converted Ottlite – brass inserts

    A pair of very flat-head M3 screws hold the front inserts in place through holes match-drilled in the remains of the bosses I’d long ago epoxied in place. I pressed the rear inserts in place by misusing the drill press, as the lamp is much too tall for the heat setter.

    Then comes the iron base weight:

    Converted Ottlite - iron weight
    Converted Ottlite – iron weight

    And then the steel outer plate:

    Converted Ottlite - steel cover plate
    Converted Ottlite – steel cover plate

    The new base plate gets a ring around its perimeter for clearance under the four pan head M3 screws into the inserts.

    If the cardboard base is stable enough, we’ll do an acrylic version in cheerful primary colors.

    The LightBurn layout in SVG format as a GitHub Gist:

    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  • Scanning Offset Adjustment: LightBurn vs. RDWorks

    Scanning Offset Adjustment: LightBurn vs. RDWorks

    A protracted debugging session on the LightBurn forum produced an interest result, which I must yoink over here so I can recall my thoughts:

    The test patterns will require power / speed tweakage to properly mark cardboard on other machines. The vector boxes are about 1.5 mm wide: these are small differences in small patterns.

    The setup for both LightBurn 1.7 RC-13 and RDWorks 8.01.65:

    • The engraved patterns run at 500 mm/s & 20% power
    • The lines & letters run at 100 mm/s & 8% Min – 9% Max power
    • All on white cardboard, with image contrast blown out

    Scanning offset = 0.2 mm = the usual setting for my machine

    In LightBurn:

    Scanning Offset 0.2 - LightBurn
    Scanning Offset 0.2 – LightBurn

    In RDWorks:

    Scanning Offset 0.2 - RDWorks
    Scanning Offset 0.2 – RDWorks

    The slight shift to the left in the LightBurn results shows LB does not shift the uni-directional pattern to line up with the vector shape as RDWorks does, which is what started the forum thread.

    Scanning offset = 1.0 mm to accentuate the difference, while shredding the bi-direction pattern as expected.

    LightBurn’s uni-directional engraved pattern is still in the same slightly leftward-shifted position relative to the vectors, showing the offset value has not been applied:

    Scanning Offset 1.0 - LightBurn
    Scanning Offset 1.0 – LightBurn

    RDWorks definitely applies the offset in both modes:

    Scanning Offset 1.0 - RDWorks
    Scanning Offset 1.0 – RDWorks

    I do not know why RDWorks did not output the final “l” over there on the right, but it did so on some (not all) of the patterns while setting things up. The jank is strong with it.

    So having LightBurn apply the same offset value for both uni- and bi-directional engravings would fix the (slight) offset in my machine. I think it will also fix the much larger misalignment in [the other] machine in that forum discussion.

    The whole problem seems to arise from the response time of the HV power supply / laser tube: the position of the left & right edges of the scanned output line depend critically on the rising and falling edges of the current applied to the tube and its power output.

    Being me, of course, makes me want a different offset value applied to the uni-directional case, just for fine tuning. Which would require a duplicate offset-per-speed table and that looks like a UX disaster comin’ on strong.

  • Simpleminded Photographic Light Box

    Simpleminded Photographic Light Box

    The general idea of a light box is (wait for it) a uniform background in a box full of bright light:

    Light Box - overview
    Light Box – overview

    Obviously, this is a low-budget light box, but it makes perfect sense if you already have an essentially unlimited supply of moving boxes, 11×17 inch plotter paper, and a couple of photo / video lights lying around.

    A two-layer cardboard ring glued to the top keeps the light from sliding off the box and stiffens the gaping hole letting the light shine through.

    You’d normally use a fabric background to get rid of those ugly gaps around the edges and a larger box would be better, so this is along the lines of a proof-of-concept.

    From the camera’s viewpoint, it looks better than my crusty desktop cutting mat:

    Light Box - gears overview
    Light Box – gears overview

    Those gears would not look out of place in Bowman’s bedroom in 2001: A Space Odyssey.

    In this day and age, you’d normally use a phone camera:

    Light Box - gears overview - DOF
    Light Box – gears overview – DOF

    The lens on my Pixel 6a has a fixed focal length (around 4.4 mm = 27 mm equivalent) and a fixed f/1.8 (-ish) aperture, producing a razor-thin depth of field at the rear of the front gears. Note the fuzzy gears in the background, all of three inches away, and the slightly fuzzy front edge of the front gears. The camera’s digital zoom doesn’t help matters in the least, despite the AI-powered interpolation.

    Keeping things close together helps, although the far end of the wipe towers and the rear of the gears lose detail:

    Light Box - gears stacked
    Light Box – gears stacked

    Looking from above also helps a little, but a top viewing port would reduce the skewed perspective:

    Light Box - gears detail - DOF
    Light Box – gears detail – DOF

    Shallow DOF keeps your attention on the foreground, which is why real photographers use it for portraits:

    Light Box - gears standing - DOF
    Light Box – gears standing – DOF

    The camera, an ancient Sony DSC-H5 with a zoom lens going down to f/8, still does nice work through a 2× macro adapter lens:

    Light Box - gear detail - top light
    Light Box – gear detail – top light

    The DOF is still narrow, but at least the entire front gear is in focus.

    Adding a front light picks out the knurling:

    Light Box - gears detail - front light
    Light Box – gears detail – front light

    The results definitely look better than before, but it’ll take a bit of getting used to traipsing to the Basement Laboratory for every photo …