-
Laser Cutter: Focus Ramp Fixture
After figuring out the Ruida focus settings, a focus ramp fixture seemed like a good thing to have around:

Ramp Test Fixture – setup The solid model shows a bit more detail:

Laser Focus Ramp Fixture – solid model Centering the autofocus “pen” = switch on the peg in the back puts the beam dead-center in the fixture, with the notches as comfort marks. The top of the peg is flush with the center notch, so the machine should be properly focused at that level after a focus operation.
Obviously, your laser has a different pen location, as will this one the next time I fiddle with anything around the nozzle.
The general idea is to tape a target to the ramp, with some attention to flattening the paper (tape the edges in critical spots as needed) & putting its zero at the center marks, align the fixture to the laser path along the X axis & secure it with a few magnets, then burn a single line at low power along the length of the scale:

Ramp Test Fixture – laser line The mark will be thinnest in the region with the best focus, which should be centered around the
0.0mark in the middle. In that photo, the thinnest section runs from about-2.0to+1.0, although (at least for me) it does take some squinting to be sure.The ramp has a 1:10 = 5.71° slope to spread 1 mm of vertical focus across 10 mm of horizontal distance. If you’re being finicky, you should rescale the targets to correct the 0.5% cosine error, but IMO it’s irrelevant for this purpose.
A few more tests varying the focus distance by a millimeter:

Ramp Test Targets – 15 16 mm AFAICT, setting the controller’s
Focus Distanceto 16 mm is about right. That puts the focal point 18 mm below the nozzle, as shown in the earlier post, and is pretty much what I’ve been using all along.The OpenSCAD code as a GitHub Gist, along with a simplified target layout in SVG format:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters// Laser Cutter Focus Ramp Fixture // Ed Nisley KE4ZNU // 2024-10-10 FocusPenOffset = [-19,23,0]; FocusPenOD = 10.0; RampHeight = 16.0; RampScale = 10; RampLength = RampScale * RampHeight; Magnet = [5.0,60.0,10.0]; NumSides = 3*4; Protrusion = 0.1; RampAngle = atan(RampHeight/RampLength); echo(RampAngle=RampAngle); Slot = [(RampLength + 2*5.0),10.0,8*RampHeight]; // very tall to cut through everything Body = [(Slot.x + 2*10.0),30.0,3*RampHeight]; // extend Z to reach baseplate FocusPillarHeight = (RampHeight/2) + Body.z/3; // match Z at center of body BasePlate = [(Body.x + 2*Magnet.x + 2*5.0),max(Magnet.y,FocusPenOffset.y + 2*5.0),3.0]; BaseRound = 5.0; //—– Build it difference() { union() { translate(FocusPenOffset) cylinder(d=FocusPenOD,h=FocusPillarHeight,$fn=NumSides); difference() { union() { rotate([0,RampAngle,0]) cube(Body,center=true); linear_extrude(height=BasePlate.z) hull() for (i=[-1,1], j=[-1,1]) translate([i*(BasePlate.x/2 – BaseRound),j*(BasePlate.y/2 – BaseRound)]) circle(r=BaseRound,$fn=NumSides); } cube(Slot,center=true); translate([0,0,FocusPillarHeight]) { cube([0.5,2*Body.y,1.0],center=true); rotate([0,RampAngle,0]) cube([2*Slot.x,0.5,1.0],center=true); } } } translate([0,0,-Body.z]) cube(2*[BasePlate.x,BasePlate.y,Body.z],center=true); } LoadingSorry, something went wrong. Reload?Sorry, we cannot display this file.Sorry, this file is invalid so it cannot be displayed.Contrary to what you might think, the targets are not laser cut, although you could use the crosshairs for LightBurn’s
Print and Cutalignment.