New Build in Southern Oregon

I previously posted about doing a kit vs full DIY: https://forum.v1e.com/t/kit-versus-full-diy-with-expert-help/54081

I’ve spent a lot of time considering different options, from not getting a CNC to getting a Parf guide (do everything by hand but with some highly accurate templates), to full DIY, to Maslow variants, Lowrider to Longmill/Altmill (closed loop sounds nice!), to Shaper Origin (accuracy across long distances is hit or miss) and more. Last week, I decided to just go with the least expensive project with bounded time and cost and consistent capabilities.

There are many decisions I haven’t made, but here are a few:

  1. PET-CF for all 3d printed parts, for low creep and high heat resistance; higher rigidity won’t hurt. I have PLA prints in the garage that have warped due to ambient heat; we have peak temperatures of ~115F and my garage is south-facing.
  2. I initially did a long set of cauliflower calibrations (20+ prints across 2 filament types and 2 bed sheets, adjusting this script to do skew correction in slicer post processing because my Mk3S+ doesn’t natively support skew correction).
  3. I’m currently printing using Siraya PET-CF on a Prusa MK3S+ with .6mm diamondback nozzle, based on this config. I’ve printed the z_stub_min and z_nut for a test, the fit was great, the core came out great, and I’ve got another ~5 days of printing to go.
  4. I ordered a kit with Jackpot3, power supply, touch plate, 4x 1/8" bits and 2x extra endstop switches in case of issue. I considered the e-stop and drag knife, but they were out of stock.
  5. I don’t have a wired trim router and eventually ordered an Autospin T1.

I still haven’t decided on machine dimensions or table.

At the biggest, I’ve considered getting a 5x10’ sheet of MDF, then using the lowrider to cut out ribs bracing the bottom plus a bottom sheet (yes, a torsion box requires a bottom; twist a taped cardboard box vs one with an open end) and hoisting it above the car in the garage. That would give a travel area of 49"x108".

I don’t think I’ll go that big, certainly not long-term. But it’s fun to think about limits. Most of the time a smaller machine would be better and more convenient; something able to easily work on 2x4’ or a little larger, so maybe 30"x60", which would require 42x72, a common dinner table size…

Here are my completed parts so far:

These overhangs are great.

Nice design tailored for 3d printing.

I printed the core with 15% infill, one extra perimeter, one extra top, and one extra bottom layer based on the default 0.6mm quality profile. The mass is about the same as a quality 0.4 mm nozzle profile with 30% infill.

I’m hoping to be cutting within 2 weeks, and I’ve realized I need to choose a table size soon.

My current inclination is to start with a single 5x10 MDF sheet on the garage floor, maybe on some 2x4 sticks for leveling, use it for a bit to get the workflow down and see what size table I will ultimately want. I got a quote a few months ago for a 5x10 sheet for around $100 delivered.

just getting my LR4 going. I settled on 60x100cm due to location issues. I’m already wishing for more!

The one thing I would suggest is to make your wiring harness up for the largest gantry size you might want then moving to a larger format is really quite simple, swap out the conduit, table and belts(or move the belt clips) and you’re off to the races.

Have realized anything I will be requiring accuracy & rigidity will be small stuff that could be machined in the corner of the envelope which should solve the rigidity problem. If I were starting today I’d build a 48" capable gantry on a short table and a table extension to run 4x8 material. The extension could be a bit flimsy as the large scale cuts would just be mostly 2d cutting out sheet goods. Any fine details could be setup on the primary accurate portion of the table. I would run the table extension on the end opposite the endstops so adding the extension would not mess up those and resultant squaring of the table.

Cool!

I’m not sure exactly what you mean by a flimsy table extension and it reducing the accuracy? I don’t quite follow. Are you saying make a 2x4 cutting area, then butt up a 6x4 extension and swap EMT to have the full run? It seems that it would be better to have 2 independent surfaces?

This is what I’m currently thinking: build a 49 inch capable gantry, and have 2 “tables” that are sheets with EMT screwed on.

For one, install the EMT short ways on a ~37.5x60.5" (49x25" working area, still considering going out to 30"+?) board I can slide on and off my main 35x70" torsion box work table.

For the other, get a 5x10’ sheet for a 49x97-108" working area that can be put down on the floor.

The 4’ x ~2’ fixed table area would be faced perfectly flat and used for full 3d work that requires z axis accuracy. The 4’ x ~ 6’ extension used for 4x8 sheet work to do 2.5d profiling doesn’t really require super Z accuracy as you can just cut a bit deeper to make sure the profiles are thru the material but might be a mm+ into the spoil board in some areas due the table not being perfectly flat. If you need better Z accuracy a spoil board could be surfaced and it wouldn’t really be “temporary” at that point.

The core is assembled! I cut my x belt at 1617mm; 1607mm was called for for 49.5" of travel. I’m not sure how precise the called for belt lengths are. I took the remaining belt and found the middle via interlocking the teeth; apparently that left 2310mm, per the calculator enough for a Y cutting length of 108.5" or 9’ .5".

I’ve also printed 21 labels, 4 for each axis, and 1 for touch.

Next up, YZ plate assemblies!

YZ Plate assemblies are now done. The first one took me about 3 hours, the second one 1 hour.

  • I cracked a Z_Stub (will print and install this evening).
  • The initial wiring was annoying, I had to re-do it a couple of times to get everything through the last hole. I also had to gently pry the wire keeper open to slip in the wires.
  • I was pretty concerned about aligning the linear guides; I tried about 10 times to get it perfect before I decided to not worry so much; it wasn’t binding and the roughness (not that it’s terrible!) could easily be due to slight variations in the plastic mating surface. On the 2nd part I just drove in the bottom screws with the linear guide next to them, ran the guide to the top then to the bottom, and proceeded to drive screws by pair bottom to top.

I wish I had used ironing on the surface for the linear guides, but not enough to reprint and re-assemble. I’m not sure it would change the outcome.

I expect to have the beam parts printed by Monday or Tuesday.

Looks good!

Do you have more pictures?

Very nice work!

One bit of constructive criticism, you’re overthinking this process a little bit. I’ve built an MPCNC Primo and an LR3 (to about 90% before abandoning when the LR4 files dropped) and most recently a full sheet (plus a little) LR4 in the last 5 years. I’ve worked the Primo hard with very few problems and zero complaints. I haven’t run the finished LR4 except some squareness checks and some Sharpie tool paths and it’s extremely accurate. I mention this to preface this…I built the whole thing following Ryan’s build plans, BOM and filament recommendations, precisely. That, and asking questions on the forum which are always answered by the ninja’s of V1 forum!

I went from knowing nothing about the workings of a CNC 5 years ago, to cutting my LR4 plates out of aluminum on my Primo.

Ryan and his cronies did all the heavy lifting already. Follow his build guide and you’re going to end up with a sweet CNC that’ll make PARF guide system seem like a rock tied to stick.

You’re gonna love your Lowrider V4!!

Oh, overthinking is a specialty :slight_smile:

The beam assembly was fast, though I did strip one nut retaining hole; the hex retention holes seem a little oversized compared to the holes on the core and ends.

I still have to print the electronics enclosure, dust shoe and hose guide. I’ll be printing the remaining parts out of PETG for more flexibility and impact resistance.

I feel like I could have a moving machine in just a couple of days!

Slightly off topic, I’ve really enjoyed the PET-CF filament but I’ve had a few issues recently; I decided to print my 3d printer extruder parts with left over filament from this project, and I had 3 max temp failures today, I think due to printing with a .4mm nozzle, .2mm layer height vs the .6mm/.3mm settings I’ve been using for the lowrider. The last failure was after a PID tune at 280; in the end I bumped the print temp to 288 from 290 and the print competed.

I just bought a PT1000 temperature sensor and e3d copper heatblock to allow me to print above 300C; my current preferred nozzle will let me go up to 350C.

I needed to order more PETG to print the electronics enclosure and hooks, that arrived today and the enclosure has been printed.

In the mean time, I moved the gantry out to my work table in the garage, and decided to do a basic setup the easiest way I could; I grabbed a 48"x63" piece of 1/2" plywood left over from a previous project for a base.

I then put a bit in the router and added wood under the runners until the bit would go into a 3/4" spoil board by 1/4" or so; I ended up adding 2 scrap 3/4" boards.

I screwed the boards down, cut pipe to length, and screwed the pipe down with a level as a reference, and installed the Y belts.

This all took a few hours.

I currently have about 2mm of travel after the Y end stops trigger. I had to adjust the front stops just right to allow spare belt to come out the side.

Next up will be electronics.

I have already installed the jackpot3 in its box, and tested the length of the y end stop wires; they make it ~3/4 of the way across the gantry so I’ll be putting the enclosure close to the middle to not have to deal with extending those wires.

One thing I hadn’t considered but turned out to be very convenient, was that having the Y runners on rails let me slightly shift the Y stop blocks by unscrewing the whole rail, moving it, and screwing into new holes.

My initial y stop block locations were off by a half a drill hole (more sensitive than usual because I haven’t cut the y belts).

Initial assembly is complete!

All axes move in the correct direction and home successfully.

My previous comment about the electrical wires lengths was wrong; I hadn’t looked at the instructions or extension cables closely enough to see that they have six conductors, not four.

The electronics need to be cleaned up, but I’ll do that once the strut plates have been installed. I also need to print some TPU bristles and crimp the touch plate.

Do you all have a bundle of wires feeding into extension right above the core? I did it that way so that it matches the YZ plates, but I’m thinking of moving that little bundle of excess wire further down to help the hose lay down properly and not catch when the core moves across the X axis.

I made 4 points with a v-carve bit, and made six measurements. At least one measurement is wrong, probably off by one? Also, given the differences in scaling between x and y I think the belt tension is affecting at least one of those axes. Maybe I can get the belt lengths to match their spec by releasing some tension? M5 thread pitch is .8, so I could try relaxing X by 2 full rotations and Y by 3 or 4 full rotations…

Here are 5 of the 6 constraints input as values assuming a plane, the 6th value is derived and doesn’t match my measurements. This is from Fusion 360 (now just Fusion, I guess).

I’ll return to this on Monday.

Yep, two of my numbers were off by 1mm, probably from reading the tape measure up-side down.

I spent an embarrassing amount of time on software today;

  • trying to make sure STA would work reliably for me (it doesn’t… despite being in LoS of a wired Aruba AP)
  • updating the jackpot3 board (download the full OS zip, don’t use the .elf binaries, use the regular wifi variant)
  • webui
  • trying to save x-steps and y-steps values persist between boots (CLI only command, I guess)
  • figuring out how to use estlcam to generate some gcode
  • using Jason’s z-leveling gcode was helpful, but I think I ran it about 5 times; once because it overshot on the X axis, losing steps, twice because of the presence of a few positive Z height values caused lost steps, once with 3 probes and once with 5 probes; the result was different by .5mm, more than I expected.

Here’s the z-leveling gcode I used:

(LowRider Z Leveling for FluidNC v3.8.2 or higher)

(UPDATE REQUIRED)
#<probeYPos> = 100 (Y position to probe at dependent upon condition of spoilboard)
#<probeXLeftPos> = 0 (Left X position to probe at dependent upon condition of spoilboard)
#<probeXRightPos> = 1200 (Right X position to probe at, should be close to max X)
#<xTotalDistance> = 1256 (Total X Distance - On LR3, this is from left bearing to Y rail)

(UPDATE OPTIONAL)
#<minPulloff> = 4.0 (Minimum pulloff value)
#<jogXYFeedrate> = 1000 (Feedrate for X and Y jogging)
#<jogZFeedrate> = 500 (Feedrate for Z jogging)
#<jogHeight> = -50 (Z height when jogging in X or Y)
#<probeDistance> = -105 (Max probe distance, should be negative)
#<probeFeedrate> = 200 (Feedrate when probing)
#<probeCount> = 5 (Number of times to probe on each side)

(MSG Home All)
$H

(MSG Move to Initial Y Position)
G00 Y#<probeYPos> F#<jogXYFeedrate>
(MSG Move to Initial X Position)
G00 X#<probeXLeftPos> F#<jogXYFeedrate>

M0 (MSG Attach Probe and Probe Left)
#<probeSum> = 0
o100 repeat [#<probeCount>]
  G38.2 Z#<probeDistance> F#<probeFeedrate>
  #<probeSum> = [#<probeSum> + #5063]
  G00 Z-20 F#<jogZFeedrate>
  D#5063 (Z Result of G38 Probe)
o100 endrepeat
#<probeLeftAvg> = [#<probeSum>/3]

M0 (MSG Detach Probe Before Move Up and Right)
G00 Z#<jogHeight> F#<jogZFeedrate>
G00 X#<probeXRightPos> F#<jogXYFeedrate>

M0 (MSG Re-attach Probe and Probe Right)

(MSG Probe Right)
#<probeSum> = 0
o101 repeat [#<probeCount>]
  G38.2 Z#<probeDistance> F#<probeFeedrate>
  #<probeSum> = [#<probeSum> + #5063]
  G00 Z-20 F#<jogZFeedrate>
  D#5063 (Z Result of G38 Probe)
o101 endrepeat
#<probeRightAvg> = [#<probeSum>/3]

(MSG Average Left Z)
D#<probeLeftAvg>
(MSG Average Right Z)
D#<probeRightAvg>

#<zDifference> = [ABS[ABS[#<probeLeftAvg>] - ABS[#<probeRightAvg>]]]
#<xDistance> = [#<probeXRightPos> - #<probeXLeftPos>]
#<zOffsetChange> = [[#<zDifference> / #<xDistance>] * #<xTotalDistance>]

(Get current Z pulloff values)
#<z0Pulloff> = #</axes/z/motor0/pulloff_mm>
#<z1Pulloff> = #</axes/z/motor1/pulloff_mm>

(Calculate New Pulloff Values)
#<z0PulloffNew> = #<z0Pulloff>
#<z1PulloffNew> = #<z1Pulloff>
o102 if [#<probeLeftAvg> GT #<probeRightAvg>]
  #<z1PulloffNew> = [#<z1PulloffNew> + #<zOffsetChange>]
o102 elseif [#<probeRightAvg> GT #<probeLeftAvg>]
  #<z0PulloffNew> = [#<z0PulloffNew> + #<zOffsetChange>]
o102 endif

(Normalize New Pulloff Values to Minimum Pulloff)
#<change> = 0
o103 if [#<z0PulloffNew> LT #<z1PulloffNew>]
  #<change> = [#<minPulloff> - #<z0PulloffNew>]
  #<z0PulloffNew> = #<minPulloff>
  #<z1PulloffNew> = [#<z1PulloffNew> + #<change>]
o103 elseif [#<z0PulloffNew> GT #<z1PulloffNew>]
  #<change> = [#<minPulloff> - #<z1PulloffNew>]
  #<z1PulloffNew> = #<minPulloff>
  #<z0PulloffNew> = [#<z0PulloffNew> + #<change>]
o103 endif

(MSG Old Pulloff Z0)
D#<z0Pulloff>
(MSG New Pulloff Z0)
D#<z0PulloffNew>

(MSG Old Pulloff Z1)
D#<z1Pulloff>
(MSG New Pulloff Z1)
D#<z1PulloffNew>

M0 (MSG Continue to Update Pulloff Values)

(MSG Set Pulloff Values)
#</axes/z/motor0/pulloff_mm> = #<z0PulloffNew>
#</axes/z/motor1/pulloff_mm> = #<z1PulloffNew>

(MSG Save Pulloff Values)
$CD=config.yaml

I did cut out this cardboard fire truck silhouette! Afterwards I noticed a ~2mm difference in cut into the spoilboard from the middle vs. the edge, I’m assuming due to sag from not yet completing the strut plates.

Tomorrow my goal is to validate the belt spacing I calculated, and cut out strut plates!

I got my 1/4" mdf today; the piece I had planned on using yesterday turned out to not be suitable.

I’m going to be tiling because my y axis is shorter than my x axis.

It’s taken me a while to figure out.

Here are some screenshots:

First I modified the struts svg to have 6 additional points:

4 pin holes in a grid a couple inches in from the edges of my cutting area, using a drill bit.

2 locations for “zero” in Estlcam, both the same offset from the pin holes on the left.

I exported that from Fusion using shaper origin’s svg export.

Then import that svg into estlcam, units are centimeters.

Import that into Estlcam, then set zero to the bottom left zero point, in my case circle center because shaper origin’s fusion plugin requires geometry for export.

Next, use estlcam to drill 4 holes, set pauses after the 2 bottom and 2 top.

Use engraving instead of part cut-out. Leave some overlap.

For the top section:

You end up with 2 gcode files:

Start with the gcode for the bottom half, run it with nothing present to drill the 2 holes into the spoilboard. Stop execution, then insert your work piece.

Insert your work piece and re-run your bottom gcode, change your bit after 4 holes have been drilled in the work piece. May as well put some pins in at this stage to help make sure things don’t shift.

I used machine ordering and pauses to reduce error.

Let the bottom half finish.

Now shift the top holes to align with the bottom holes, put in pins and clamp the work piece.

This plan is scheduled for immediate execution.

The plan has been executed.

The principle went extremely well.

The next time I decide to use registration pins I will have separate gcode for their creation; when I changed tools, I used the pin on the router to lock the spindle, and accidentally pushed the core hard enough to skip a couple of steps, requiring a re-home and restart.

I ended up running each of the four major cuts individually; my depths were a bit off and I didn’t want to dig too much into my spoil board.

The plates are great!

Next up, installation of the plates and tidying up wiring. That will include finalizing drag chain endpoints (following Drag chain AND vac hose - #9 by dwkisker ).

I’m also planning on installing @DougJoseph 's Kinematic Mount for drawing etc: https://www.printables.com/model/484825-lowrider-v3-cnc-kinematic-tool-less-quick-change-a/files

But use of that will need to wait until I’ve trammed the spindle (and surfaced the spoil board? Or maybe my Y rails are slightly inconsistent, they are scrap…).