Primo build in Western Canada

Just wanted to say thank you guys for all the help and support with my pre build questions. I have finally had some time to get my build going and overall I am pretty happy with how things are looking so far.

The biggest advise is read the guide from start to end a few times before you start, I am not sure how many times I have had to take things apart while getting ahead of myself. :slight_smile:

Build details:
Work Area: 675mm X , 525mm Y , 85mm Z
Steel Round Tube A500/A513 (Welded) 1.000 X 0.065
Dual Endstop setup
Big Dipper Duet Controller (wish me luck)



Manual Movement

8 Likes

oh man! Small victories but I have the machine moving under its own power!!

6 Likes

A little more winning today, slow and steady progress.
Test file worked out well and all objects measured the right sizes.

3 Likes

Done my crown test and I think it turned out pretty good. Tan at 2100mm/min

4 Likes

And I have my first cut done!!
Thanks for all the help and support from the community, really appreciate it.
Final build volume is 635mm X, 500mm Y and 85mm on Z
Running a Duet 3 as the control board and 3.4 firmware with Dual endstops.
I have an SSR on order for the Router control.
Now that I have my bench space back I hope to do one wide project and then an enclosure for the build and dust collection.

MPCNC First cuts

5 Likes

I’m jealous of your Duet 3.

'Gratz, thats a sweet build there. I think a regular relay should be good for the router, its not like you want to PWM control it, but an SSR won’t hurt.

1 Like

Thank you Dan. I really appreciate your help early on with metal selection and advise.
The Duet 3 has been a great board and not having to recompile to make changes is a life saver.
I do have one issue still with the touch plate that I need to solve. I must have a macro or something causing some inconsistencies as when I try to probe sometimes it moves down and some times it moves up obviously I need it to move down to the work piece and probe. If you have any thoughts or advice I would take it but I hope to be back in the garage this weekend to solve that.

First, I put my Duet in CNC mode, so in the config.g there is the following:

; Tools
M950 R0 C"!exp.heater1" L10000                  ; Spindle 0 uses exp.heater1 as RPM pin and has a max RPM of 10000
M563 P0 R0                                      ; Define the router as tool 0
M453                                            ; Set CNC Mode

; Custom settings
M575 P1 S1 B57600                               ; Enable PanelDUE
G54                                             ; Select Workspace Coordinate 1

Not actually sure that the M950 is still correct with new firmware, but it doesn’t hurt. The important things are the M453 to set CNC mode and the G54 to select the first set of workplace coordinates.

Then under Macros, I have these:

00.1 Probe Work Z.g

; Probe the work, and set the workspace Z coordinate
M291 P"Attach Z Probe" R"Probe Work" S3 Z1          ; Display message with Z jog buttons
G30 S-1                                             ; Probe the work, (report machine position)
M400                                                ; Wait for save to finish
G10 L20 Z0.5                                        ; Set workspace position to 0.5mm
G00 Z5 F450                                         ; Move 5mm above work piece

You don’t need the M291 command if you don’t have a Panel. I almost always have the probe attached and set up at this point, because I’ve probably just homed the machine, and jogged over to the start position, but I only needed to crash a bit into the work once.

00.2 Set Workspace X Y.g

; Set the workspace X and Y to the current machine coordinates
G10 L20 X0.0000 Y0.0000
1 Like

Thank you I will compare against my config and see what I I might have missed.

Do you have any kind of Z endstop or what do you do when you home the machine?

I use the 0.5mm touchplate, which is why the Z is set to 0.5mm in the workspace when the probe stops.

1 Like

This is currently what I am doing, my probe from an old CNC is 14.5mm thick:

; Setup
G21												; make sure we’re in mm
G91 											; Incremental mode
M291 P"Make sure the probe is connected to bit and over xyz probe." R"Warning" S3   ; a warning message
G53                       						; Switch to WCS #0
;Probe Z
G38.2 P1 Z-100 F75								; Probe Z downwards 
G1 Z2											; lift 2mm
G38.2 P1 Z-100 F45								; Probe Z downwards
G4 P0.1 			
G10 P1 L20  Z14.5								; Set Current Z  of WCS #1 as [Probe Block Z] thickness (14.5mm)
G91 G1 Z5 F300                  		`		; Back away from touch plate

I’m pretty sure the G38.2 is what’s mucking you up. G30 is a better fir for RepRap Firmware, I get absolutely consistent behaviour using it. G30 S-1 probes down until the probe is triggered, and also reports the position in machine coordinates. This lets me know if I’ve got a reasonable probe. (If I have or am expecting 1/2" material, and it reports 19mm, then something ain’t right. It also means that I don’t have to worry about relative motion mode. I can stay in absolute positioning.

G38.2 is good for probing in X/Y, if you’re doing that.

I also leave my machine in the same workspace coordinate system for probing, and set the G10 L20 offset for whatever set that I’m in.

I home the machine in machine coordinates, so that I can set softstops to limit motion to a reasonable cut into the spoilboard.

Still, can’t see why that should try to move upwards…

1 Like

Thank Dan I am still working to get upto speed on all the CNC GCode stuff so I appreciate the detailed explanation of what might be going on.
I will make some changes to my config and macro and try it out today.

1 Like

So should I do cable chains for wire management or Split loom wire management?

Your choice, really.

I chose drag chains because they constrain the movement to one axis, so it keeps them out of the machine’s path.

Hey Dan,

So I am getting the Z to go in the right direction but it moves for about 2-5 mm and then gives me an:

M98 P"0:/macros/Probe Z "

Error: in file macro line 4: G30: Z probe 0 not found

Here is my full Config:

; Configuration file for Duet 3 Mini 5+ (firmware version 3.3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.10 on Thu Mar 24 2022 08:01:33 GMT-0600 (Mountain Daylight Time)

; General preferences
M550 P"MPCNC01"                                 ; set printer name
G90                                             ; send absolute coordinates...
G21												; Set units to mm

; Network
M552 S1                                         ; enable network
M586 P0 S1                                      ; enable HTTP
M586 P1 S0                                      ; disable FTP
M586 P2 S1                                      ; enable Telnet

; Configure Drives
;M669 K0                                         ; explicitly set Cartesian kinematics, even if I should not need to
M569 P0.0 S1                                    ; physical drive 0.0 goes forwards
M569 P0.1 S0                                    ; physical drive 0.1 goes forwards
M569 P0.2 S1                                    ; physical drive 0.2 goes forwards
M569 P0.3 S0                                    ; physical drive 0.3 goes forwards
M569 P0.4 S0                                    ; physical drive 0.4 goes forwards
M584 X0.0:0.1 Y0.2:0.3 Z0.4                     ; set drive mapping, dual X axis and dual Y axis

; Configure Axis
M92 X100.00 Y100.00 Z400.00				        ; set steps per mm
M350 X16 Y16 Z16 I1                             ; configure microstepping with interpolation
M566 X900.00 Y900.00 Z60.00				        ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z180.00 					; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z20.00					    ; set accelerations (mm/s^2)
M906 X900 Y900 Z900 I70							; set motor currents (mA) and motor idle factor in per cent
M84 S240                                        ; Set idle timeout

; Configure Axis Limits
M208 X0 Y0 Z-85 S1								; set axis minima
M208 X636 Y501 Z86 S0							; set axis maxima

; Configure Endstops
M574 X1 S1 P"io5.in+io6.in"						; configure switch-type (e.g. microswitch) endstop for low end on X via pin io5.in and io6.in on X axis
M574 Y1 S1 P"io3.in+io4.in"						; configure switch-type (e.g. microswitch) endstop for low end on X via pin io3.in and io4.in on Y axis
;M574 Z2 S3

; Configure Z-Probe
M558 K1 P8 C"!io2.in" H5 F100 T3000 			; XYZ Workpeice probe (bitzero) connected to io4 input

; Configure Heaters
M140 H-1										; Disable heated bed
M564 S1 H1 										; Disable jog commands when not homed
M308 S2 Y"drivers" A"DRIVERS"              		; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
M308 S3 Y"mcu-temp" A"MCU"                      ; configure sensor 3 as thermistor on pin e1temp for left stepper

; Configure Fans

; Configure Tools
M950 R0 C"!exp.heater1" L10000                  ; Spindle 0 uses exp.heater1 as RPM pin and has a max RPM of 10000
M563 P0 R0                                      ; Define the router as tool 0
M453                                            ; Set CNC Mode

; Custom settings
M575 P1 S1 B57600                               ; Enable PanelDUE
G54                                             ; Select Workspace Coordinate 1

And I am using your Z Macro.

config.g

; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Apr 20 2021 01:19:12 GMT-0600 (Mountain Daylight Time)
; Monkeyed with by SupraGuy because obviously I know better than the configuration tool, lol!

; General preferences
G90                                             ; send absolute coordinates...
M83                                             ; ...but relative extruder moves
M550 P"MPCNC Primo"                             ; set printer name

; Network
M552 S1                                         ; enable network
M586 P0 S1                                      ; enable HTTP
M586 P1 S0                                      ; disable FTP
M586 P2 S0                                      ; disable Telnet

; Drives
M669 K0                                         ; set Cartesian kinematics
M569 P0 S0                                      ; physical drive 0 goes backwards
M569 P1 S1                                      ; physical drive 1 goes forwards
M569 P2 S1                                      ; physical drive 2 goes forwards
M569 P3 S0                                      ; physical drive 3 goes backwards
M569 P4 S1                                      ; physical drive 4 goes forwards
M584 X0:3 Y1:4 Z2                               ; set drive mapping: X on drives 0 and 3, Y on 1 and 4, Z on 2
M350 X16 Y16 Z16 I1                             ; configure microstepping with interpolation
M92 X100.00 Y100.00 Z400.00                     ; set steps per mm
M566 X900.00 Y900.00 Z60.00                     ; set maximum instantaneous speed changes (mm/min)
M203 X3000.0 Y3000.0 Z180.00                    ; set maximum speeds (mm/min) 5 centimeters per second, lol
M201 X250.00 Y250.00 Z20.00                     ; set accelerations (mm/s^2)
M906 X1200 Y1200 Z1200 I75                      ; set motor currents (mA) and motor idle factor in per cent
M84 S30                                         ; Set idle timeout

; Axis Limits
M208 X0 Y0 Z-12.5 S1                            ; set axis minima
M208 X635 Y940 Z90 S0                           ; set axis maxima

; Endstops
M574 X1 S1 P"^xstop+^e0stop"                    ; configure active-high endstop for low end on X via pin ^xstop+^e0stop
M574 Y1 S1 P"^ystop+^e1stop"                    ; configure active-high endstop for low end on Y via pin ^ystop+^e1stop

; Z-Probe
M558 P5 C"!^zprobe.in" H5 F120 T6000            ; set Z probe type to switch and the dive height + speeds
G31 P850 X0 Y0 Z0.5                             ; set Z probe trigger value, offset and trigger height
M557 X15:615 Y15:915 S100                       ; define mesh grid

; Heaters
M140 H-1                                        ; disable heated bed (overrides default heater mapping)
M308 S2 Y"drivers" A"DRIVERS"                   ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
M308 S3 Y"mcu-temp" A"MCU"                      ; configure sensor 3 as thermistor on pin e1temp for left stepper

; Fans
M950 F0 C"fan0" Q500                            ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1                                  ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"fan1" Q500                            ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H T45                                ; set fan 1 value. Thermostatic control is turned on
M950 F2 C"fan2" Q500                            ; create fan 2 on pin fan2 and set its frequency
M106 P2 H2:3 L0.15 X1 B0.3 T25:60               ; set fan 2 value. Thermostatic control is turned on

; Tools
M950 R0 C"!exp.heater1" L10000                  ; Spindle 0 uses exp.heater1 as RPM pin and has a max RPM of 10000
M563 P0 R0                                      ; Define the router as tool 0
M453                                            ; Set CNC Mode

; Custom settings
M575 P1 S1 B57600                               ; Enable PanelDUE
G54                                             ; Select Workspace Coordinate 1

The biggest difference I see is using P5 for the M558 command, though I guess I also used the G31 to set offsets, not that I really use them.

I kind of laugh that I set up a mesh grid (I’ve never even attempted to use it.) Pin names are different I guess, but otherwise, I can’t see why the G30 command would fail to probe.

I really wanted a Z max limit switch for work flow and just to save my dumb ass from myself.
So I added a limit switch to the nut trap on one of the Z core rails to trip as it moves up.
This is version 1 just to prove it works and I will be making a small impression in the nut trap STL to help hold the limit switch in place, and will post it.

1 Like

Testing the new switch in software.

1 Like

The final version of my end stop setup for Z max height.

3 Likes