Duet2 Firmware

My Duet2 WiFi just arrived, so I went here to start a config.

But they look all CNC/3D Print specific. What is the best method for ZenXY for a Sand Zen machine with a Duet2 WiFi?

You need to set code xy, and you need to get the steps/mm. Then the acceleration and max feedrates. That’s close to all. Probably also need to sort out the X and Y endstops.

I’ve configured a lot of firmware, but I’ve never had a duet.

I have played with the duet a bit. First do any firmware updates you need. They have a great “getting started” walk through on their website. Follow that to get the firmware up to date before you use the config generator tool. In the config tool you will want to set it up as a CNC by default but then change what you need to make it work for ZenXY. You can easily set the core xy and disable the heaters/thermal controls. End stops are easy as well.

Expect to spend about 1 to 4 hours doing all of this if you are new to duet. The learning curve isn’t difficult but it is very VERY different from marlin. Great system though. I like it a lot.

YouTube helped me with some parts that I got stuck on. Give it a try and ask questions if you run into something.

I’m using a Duet2 WiFi to run my table. I’ve very happy with it. I initially had some issues setting up the endstops, but finally figured it out. Here are a few lines in the config.g file that may be helpful to you. Obviously these settings are specific to my table and motors, and anything referencing temp, extruder, etc. is irrelevant:

Under the Prologue section:
M552 S1
M111 S0 ; Debug off

Under the Movement section:
M669 K1 ; switch to CoreXY mode
M569 P0 S0 ; Drive 0 goes forwards (change to S0 to reverse it)
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S1 ; Drive 2 goes forwards
M569 P3 S1 ; Drive 3 goes forwards
M569 P4 S1 ; Drive 4 goes forwards
M574 X1 S1 P"xstop" ; X min active high endstop switch
M574 Y1 S1 P"ystop" ; Y min active high endstop switch
M906 X1000 Y1000 Z800 E1000 I0 ; Set motor currents (mA)
M201 X800 Y800 Z800 E800 ; Accelerations (mm/s^2)
M203 X18000 Y18000 Z15000 E15000 ; Maximum speeds (mm/min)
M566 X600 Y600 Z600 E600 ; Minimum speeds mm/minute
M208 X990 Y495 Z200 ; set axis maxima (adjust to suit your machine)
M208 X0 Y0 Z-0.2 S1 ; set axis minimum (adjust to make X=0 and Y=0 the edge of the bed)
M350 X256
M350 Y256
M92 X1284 Y1284 Z80 ; Set axis steps/mm
M92 E80:80 ; Set extruder steps per mm
G21 ; Work in millimetres
G90 ; Send absolute coordinates…
M83 ; …but relative extruder moves

I also set up a few macros to override some of the firmware settings (like having to home before each “job”). I run this after each reboot: M564 H0 S1. A macro for homing in a specific sequence is also helpful.

One thing I’m still trying to figure out is how to create a playlist using macros. The closest I’ve come is by using M32 commands to run a track, then G4 to pause the macro in between tracks. Without G4, the first track will run and the subsequent tracks will try to execute before the first is complete causing an error. The problem with doing this is that the G4 pause time is hard to predict. I’ve been setting it for a larger value than necessary, but then the table sits idle before the next track begins for a short time. I wonder if there’s a way to have the next M32 be triggered only when the prior track completes?

Would M400 do the trick?

Thanks for the suggestion. Just tried it and, unfortunately, it didn’t work. Still received an error:
Error: Cannot set file to print, because a file is already being printed

I’ll keep exploring…