Duet Wifi independent dual X & Y Axis + Endstops configuration

New Home Forum Mostly Printed CNC – MPCNC Troubleshooting – MPCNC Duet Wifi independent dual X & Y Axis + Endstops configuration

This topic contains 24 replies, has 4 voices, and was last updated by  3DRikat 19 hours, 40 minutes ago.

Viewing 25 posts - 1 through 25 (of 25 total)
  • Author
    Posts
  • #92360

    3DRikat
    Participant

    Hey,

    I’m building a MPCNC and need help with the duet wifi configuration. I have the following hardware:

    2 Motors X + 2 Endstops
    2 Motors Y + 2 Endstops
    1 Motor Z

    I have the latest Duet Wifi v1.04. I have just a basic knowledge and need help how to set up the dual axis in the firmware. I connected the second Y motor to the E0 and the second X motor to the E1 slot on the duet. The same for the endstops.

    Please help me how to set it up correctly. Thanks.

    #92485

    Mike Lincoln
    Participant

    (Sorry if this dual posts, the forum eat my edit!)

    Hey,

    In config.g you need to bond together your pairs of X and Y motors but also setup a U and V axis for the second motor of each pair which we will use later:

    M584 X1:2 Y3:4 Z0 U2 V4 P3 ; Apply custom drive mapping.

    Then if you are running the very latest beta firmware you can remap if your end stops to match. If not you can physically swap them round but that does suck quite a lot so I recommend you upgrade.  When remapping end stops the C parmeter names the drive number as per the pictures on the duet3d website.

    M574 X1 S1 C1
    M574 Y1 S1 C3
    M574 Z2 S1 C0
    M574 U1 S1 C2
    M574 V1 S1 C4

     

    Make sure you setup speeds, accelerations and currents for All axis including the U and V (I’ve not tried it myself or looked at the code but I’ve read this is required.)

    Then when we home we are going to break that bonding of the motors apart and home the motors independently (but both motors on the axis at the same time.).  To do this you need custom homex.g and homey.g files :

    ; Home x

    M584 X1 P5; split x axis
    G1 S1 X-1500 U-1500 F2400 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 X3 U3 F2400 ; go back a few mm
    G1 S1 X-1500 U-1500 F300 ; move slowly to X and Y axis endstops once more (second pass)
    M584 X1:2 P3 ; join x axis

    G90 ; absolute positioning

    ; home y

    M584 Y3 P5; split y axis
    G1 S1 Y-1500 V-1500 F2400 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 Y3 V3 F2400 ; go back a few mm
    G1 S1 Y-1500 V-1500 F300 ; move slowly to X and Y axis endstops once more (second pass)
    M584 Y3:4 P3 ; join y axis
    G90 ; absolute positioning

     

    You could do a home all too and drive all 4 motors at the  same time but I’ve not bothered yet.

     

    I’d strongly suggest you turn down the motor current to the minimum you can get away.  The P3 and P5 parts are important, don’t leave them off they not only affect the access which are displayed on the web interface but I’m pretty sure it doesn’t work without them (but havent retested this since I got it working).

    The duet3d G code documentation is very complete and up date and will do a better job at explaining the specifics than I will so you can look up what all the above means  🙂

    The hardest part is getting the correspondence between the motors switches right but you’. It’s very confusing but you’ll know when it’s wrong!  Make sure your end stops will result in a reasonably square setup before you start!  It should be possible to fine tune squareness from software but I’ve don’t fully squared up my machine yet as I can’t find my framing square!

    Good luck!

    Mike

     

     

    3 users thanked author for this post.
    #92492

    3DRikat
    Participant

    Hey,

    thanks for your response. I got it almost working except for Z and V (second Y axis). The X axis is working fine on both motors. I updated to the latest beta firmware.

    My connection to the board is the following:

    Drive 2 (Z Motor) = Z
    Drive 1 (Y Motor) = Y
    Drive 0 (X Motor) = X
    Drive 3 (E0 Motor) = Y1
    Drive 4 (E1 Motor) = X1

    This is my config.g:

    ; Configuration file for Duet WiFi (firmware version 1.21)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2 on Sat Mar 09 2019 22:37:11 GMT+0100 (Mitteleuropäische Normalzeit)

    ; General preferences
    M584 X0:4 Y1:3 Z2 U4 V3 P3 ; Apply custom drive mapping
    G90 ; Send absolute coordinates…
    M83 ; …but relative extruder moves

    ; Network
    M550 P”MPCNC” ; Set machine name
    M552 S1 ; Enable network
    M587 S”XXXX” P”XXXXX” ; Configure access point and IP addresses. You can delete this line once connected
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; Drives
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S1 ; Drive 2 goes forwards
    M569 P3 S0 ; Drive 3 goes backwards
    M569 P4 S0 ; Drive 4 goes backwards

    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X100.00 Y100.00 U100.00 V100.00 Z1600.00 ; Set steps per mm
    M566 X900.00 Y900.00 U900.00 V900.00 Z12.00 ; Set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 U6000.00 V6000.00 Z180.00 ; Set maximum speeds (mm/min)
    M201 X500.00 Y500.00 U500.00 V500.00 Z20.00 ; Set accelerations (mm/s^2)
    M906 X2000.00 Y2000.00 U2000.00 V2000.00 Z2000.00 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 U0 V0 S1 ; Set axis minima
    M208 X731 Y731 Z108 U731 V731 S0 ; Set axis maxima

    ; Endstops
    M574 X1 S1 C0
    M574 Y1 S1 C1
    M574 Z2 S1 C2
    M574 U1 S1 C4
    M574 V1 S1 C3

    ; Z-Probe
    M558 P0 H5 F120 T6000 ; Disable Z probe but set dive height, probe speed and travel speed
    M557 X15:195 Y15:195 S20 ; Define mesh grid

    ; Heaters
    M140 H-1 ; Disable heated bed
    ;M305 P1 T100000 B4138 R4700 ; Set thermistor + ADC parameters for heater 1
    ;M143 H1 S280 ; Set temperature limit for heater 1 to 280C

    ; Fans

    ; Tools
    M563 P0 D0 ; Define tool 1

    ; Automatic power saving
    M911 S10 R11 P”M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000″ ; Set voltage thresholds and actions to run on power loss

    ; Custom settings are not configured

    And this is homex.g:

    M584 X0 P5; split x axis
    G1 S1 X730 U730 F500 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 X3 U3 F500 ; go back a few mm
    G1 S1 X730 U730 F150 ; move slowly to X and Y axis endstops once more (second pass)

    M584 X0:4 P3 ; join x axis
    G90 ; absolute positioning

     

    homey.g

    M584 Y1 P5; split y axis
    G1 S1 Y-730 V-730 F500 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 Y3 V3 F500 ; go back a few mm
    G1 S1 Y-730 V-730 F150 ; move slowly to X and Y axis endstops once more (second pass)
    M584 Y1:3 P3 ; join y axis
    G90 ; absolute positioning

    Where’s the difference between the x and y axis? Why is x working and y not?

    • This reply was modified 1 week, 4 days ago by  3DRikat.
    #92502

    Mike Lincoln
    Participant

    I assume that’s a typo on the first axis and you mean the Y axis doesn’t work. I can’t see anything obviously wrong with your config. Your motor currents are pretty high but I don’t now what steppers you have or how hot you like them! Keep an eye on driver temperatures, if they shutdown you could have issues.

    Assuming both motors are moving ok you can test the endstops by splitting the axis manually by issuing “M584 Y1 P5” and then going to Settings->machine properties tab. If you poke at the switches you should the endstop hit column change. With the axis split you can also job the motors a mm or two to check you have them wired they way you think.

    It could even be mechanical, trying to force the machine two far away from it’s natural resting “squareness” will result in a running out of torque and motors skipping. If that’s the case, sort out the physical squareness best you can first.

    If that doesn’t reveal the issue try and post a bit more detail about exactly what the symptoms are.

    ~

    Mike

     

     

    1 user thanked author for this post.
    #92511

    3DRikat
    Participant

    Thanks, but unfortunately that doesn’t really help with the problem, so I’ll post more details in the following:

    When I try to home the axis both X Axis (X+U) are working fine. They are moving simultaneously and the endstops are working fine.

    At the Y Axis (Y+V) only one (Y) motor is moving. The other (V) isn’t moving at all. I did a motor test, after that and the motor is working correctly.

     

    I got these motors: https://www.omc-stepperonline.com/de/nema-17-bipolar-1-8deg-65ncm-2-1oz-2-1a-3-36v-42x42x60mm-4-drahte.html

    So I think the current should be ok, what are you thinking? I have an eye on the temperature and if they rise to high I will add active cooling.

     

    I didn’t try the “M584 Y1 P5” command yet, but I’ll try this later and wanted to give you more information first.

     

    The issue with Z is it isn’t moving at all. When I try to home it I just hear the sound of skipping steps. But when I move it by hand, there’s no binding and it’s really smooth.

    I don’t understand why the X axis is working as it should be and the Y axis is not, with the same settings in the config.

    #92521

    Mike Lincoln
    Participant

    Easy one first, your Z-axis steps per mm look wrong they should be 400 if you have a T8 screw like me. At 1600 that motor will be trying to go ungodly fast and running out of torque so it looses steps.

    I notice this difference to my config :

    M350 X16 Y16 U16 V16 Z16 I1 ; Configure microstepping with interpolation

    I configure microstepping for U and V, not sure if that’s bull or not but you are only doing X, Y, Z and E So you’re missing at least one axis there.

    If that doesn’t fix it this is the order I’d attack it in: Disconnecting the belt from the V motor and see if it moves then to rule out binding and try turning the motor by hand.  Failing that, You can check the motor winding with a multimeter I’d do this at the duet end to rule out cable issues too, they should be about 1.6 ohms according to those specs.  From memory the pairs are side by side on the duet connector the notation is confusing on their diagram – If you have your pairs crossed it won’t work or maybe you have a bad connection.  Watch out for the crimp connections, bad crimps are the bane of my life and can be hard to spot.  If that doesn’t solve, try swapping the  Y and V motors, see if the problem moves. If it looks like it’s the port at fault it’s either a config problem I can’t see yet or a dead driver.

    Just in case you’ve not already read this, it’s a bad plan to plug or unplug motors with the board powered because you can (apparently) kill stepper drivers this way. (I’ve killed FETs this way but never a stepper driver)

    As for motor current, those motors are indeed rated to 2.1Amps but that’s normally with the max rated temperature rise which is  80C looking at the specs. The motors should in theory survive at 80C – I doubt your plastic mounts will  :-). I run at 1.3A and don’t find I’m torque limited but whatever people on here recommend really – I’m an MPCNC novice. I test my homing at 0.6A to avoid breaking anything.  You will not have noticed a heat problem so far because you have your idle current set to 30% of your 2A max or 0.6amp when they have been stationary for a few seconds. Once you start making chips they get’ll get hot pretty quick if they are anything like steppers.

    ~

    Mike

    1 user thanked author for this post.
    #92549

    3DRikat
    Participant

    I changed the Z axis steps/mm to 400, but it’s still skipping steps. I found out that no matter which direction I want it to go, it always goes down.

    I also changed the microstepping to M350 X16 Y16 Z16 U16 V16 I1

    I sended a  “M584 Y1 P5” to split the axis and also a G92 to avoid homing. Independently the motors are running, but when I bridge them together only one motor is moving. I also changed the plugs on the duet and the issue is moving with it.

    I didn’t check the pairs and the crimps, because the motor is working. So I think it should be software related.

    Here’s my homez.g if that’s any good:

    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2 on Sat Mar 09 2019 22:37:11 GMT+0100 (Mitteleuropäische Normalzeit)
    G91 ; relative positioning
    G1 Z5 F6000 S2 ; lift Z relative to current position
    G1 S1 Z-113 F1800 ; move Z down until the endstop is triggered
    G92 Z0 ; set Z position to axis minimum (you may want to adjust this)

    ; Uncomment the following lines to lift Z after probing
    ;G91 ; relative positioning
    ;G1 S2 Z5 F100 ; lift Z relative to current position
    ;G90 ; absolute positioning

    #92550

    Mike Lincoln
    Participant

    I don’t think diagnosing two separate issues at the same time is doing us any favors.  Let’s focus on the Y axis for now as that’s the most complex and we’ll come back to Z once Y is working.

    You seem to have contradictory results there, which is very interesting.

    a) You say both motors can be jogged from software if the axis are split. – Which indicates the hardware is all good and this is a software setup issue when axis are combined.

    b) You say if you move the plugs for these motors the fault follows the plug – Which indicates there is faulty wiring and/or motor. (Most likely wiring)

    Am I misunderstanding something ? When you say plug, you do mean the bit attached to the wire ? (Some may call that a socket as it’s female)Is the

    motor that’s not turning vibrating or totally dead ?

     

    What commands are you using to test it ? Are you jogging it around or asking it to home ? Asking it to home requires both the motors and the endstops are setup correctly both physically and in software so just testing with jogging is the best place to start. Once we know we can do simple moves we can attack homing with end stops.

    Almost incidentally, your max instantaneous speed changes for X and Y (and U V) look a little aggressive, even your acceleration is pretty high but my machine isn’t on right now so I can’t double check the exact values I have. I’d suggest halving these while we test, you can always chase speed later. Next time I have my machine on I’ll get my values which I took from the values in the marlin code V1Engineering use.

    I would definitely check the crimp pairs if I where you. If you split the phases you’ll end up with a motor that will vibrate but not rotate! (Don’t ask how I know). The coils pairs should be adjacent on the duet connector.

    ~

    Mike

     

     

     

     

    #92707

    3DRikat
    Participant

    I made a mistake, sorry 😉

    So in the normal setting the Y axis is working, while the V axis isn’t. If I swap the sockets of Y and E0 (V axis) on the board, the V axis is working, while the Y axis isn’t. The issue seams to stay at the E0 drive.

    First I used homing and the endstops were working, then I used a G92 command to ignore homing and used the machine control to move the axis.

    I will check the crimp pairs, but I think they should be fine since both motors are rotating. Could be the issue with Z.

    As long as the Y axis is combined with the V axis the motor of V is totally dead. But when I split them with M584 and ignore homing with G92 both of them are working just fine.

    #92759

    Mike Lincoln
    Participant

    Cool, that makes sense. Agree, Z could be wiring.

     

    Given it looks like E0 seems to be the issue I reexamined your config and noticed you define a drive for an extruder :

     

    ; Tools
    M563 P0 D0 ; Define tool 1

     

    I think you still need to define a dummy tool but don’t give it a drive  – My bet is you can’t use a drive as an axis if it’s already setup as an extruder. With that said it doesn’t seem to be set to the problematic drive but I don’t have time this morning to check the docs. Worth a look.

     

    ~

    Mike

     

    1 user thanked author for this post.
    #92949

    3DRikat
    Participant

    Thank you. I really appreciate your help.

    I removed the drive from the tool, but still wasn’t able to home. There was also a loose crimp on the Z-stepper and also on the socket of an Y-endstop. Everything is working now.

    Estlcam seems not to work with Duet. What program are you using for your CNC?

    #92950

    Ryan
    Keymaster

    Estlcam seems not to work with Duet.

    The firmware will not but the CAM/ Gcode should if you select the correct output type.

    #92951

    3DRikat
    Participant

    Okay, which one is the correct output type for the duet wifi?

    #92952

    Ryan
    Keymaster

    The board does not matter it is what firmware you have on it, if you are not using Marlin I am not sure what you should be using, there is a long list built into Estlcam, just find your firmware.

    #92953

    3DRikat
    Participant

    All I see is the controller hardware. Is it this or where can I set the firmware and what is it for RepRap?

    #92954

    Ryan
    Keymaster

    4th picture down on this page, https://www.v1engineering.com/estlcam-basics/

    I have zero experience with the duet, you need to know what firmware you are running and some of the settings, to make a choice from this list.

    #92962

    Mike Lincoln
    Participant

     

    I use Estlcam, works great just save the g-code, upload it using the Duet web interface and go for it!  You can use marlin settings  (and can even put duet in marlin compatibility mode) if you want. Right now I just use the “Default”  setting in Estlcam and have some custom commands for doing a pause with a message for tool changes etc. but that’s going to get very specific to my machine. To be honest the g-code used by Estlcam is pretty strait forward and duet supports spindle commands (when in cnc mode), curves etc.  I have not had any problems so far.

    I even use z probing and have machine coordinate frame setup which has the advantage that software machine limits work correctly and you can set the work origin on the duet web interface,  but my advice would be to start simple.

    I don’t attempt to control the duet in real time from Estlcam. I use the duet web interface for that.

    ~

    Mike

    1 user thanked author for this post.
    #92963

    Ryan
    Keymaster

    Awesome info thanks Mike!

    #93296

    3DRikat
    Participant

    Ok got it, but when I try to run the gcode I only get errors like “Outside machine limits” or “finished printing in 0h 0m”. I also set the machine in CNC mode with M453. What can I do?

    #93318

    Mike Lincoln
    Participant

    Caution, this will sound sarcastic: You are trying to move the tool outside machine limits 😉

     

    You have limits setup in the config you pasted last week:

    ; Axis Limits
    M208 X0 Y0 Z0 U0 V0 S1 ; Set axis minima
    M208 X731 Y731 Z108 U731 V731 S0 ; Set axis maxima

    You can home x/y with limits easily enough but :

    a) are you homing Z ?

    b) It kind of depends but I bet you your estlcam gcode is moving Z negative – and your lower limit is 0.

    You need to set your lower limit to some sensible  (or crazy huge)  negative number.

    I have my lower z set to something sane (and negative) for my machine. Then I manually home z to “up high”, then home x and y automatically.

    That would kind of work if I left it there but you don’t have a sane 0 for your work piece top surface. Gcode support multiple coordinate systems  and

    I set machine coordinates and then zero workplace with a z-probe and manually set x,y 0 with a web interface button via a macro but IMHO you should walk before you run.

     

    If you have your limits set sanely you can just jog around the machine and move the bit to just touch the surface then set Z to be 0 with a “G92 Z0”  (Please note I haven’t tested this!!).

    Then when you run your gcode it should plunge to the depth you gave estlcam…

     

    You may want to test this with a fake surface “up in the air” so if it falls you have some time to stop it before things get nasty..

    ~

    Mike

    #93335

    MarkM
    Participant

    This is a very useful thread. I will be setting up my Duet hopefully by next weekend. I’m waiting for the motor cable and connectors to arrive. I have been staring at this thing too long, and it needs to start moving 😉

    I have three Duet boards now, so I’m pretty comfortable. So much so that it’s all I will buy. But so far just 3D printing. I bought a Maestro board to free up the WiFi for the CNC. The WiFi has more motor current capacity, and I need the wireless so the CNC can move out to the work shed.

    #93337

    MarkM
    Participant

    I have my lower z set to something sane (and negative) for my machine. Then I manually home z to “up high”, then home x and y automatically.

    Could you by any chance share your config and home files to get me started with mine? It would likely be a big time saver to just tweak an existing setup.

    #93374

    3DRikat
    Participant

    I home Z with G92 Z0

    This is the start of my Gcode from Estlcam:

    ;Project test
    ;Created by Estlcam version 11 build 11,105
    ;Machining time about 00:03:30 hours

    G90
    G00 X0.0000 Y0.0000 Z0.0000
    G00 Z5.0000

    ;No. 1: Gravur 1
    G00 X100.0000 Y100.0000
    G00 Z0.5000
    G01 Z-0.0100 F1200 S1
    G01 Y363.9995
    G01 X364.0001
    G01 Y100.0000
    G01 X100.0000
    G00 Z5.0000

    ;No. 2: Gravur 6
    G00 X100.0000 Y231.9997 Z5.0000
    G00 Z0.5000
    G01 Z-0.0100 F1200
    G01 X364.0001
    G00 Z5.0000

     

    I changed the config to:

    ; Axis Limits
    M208 X0 Y0 Z-100 U0 V0 S1 ; Set axis minima
    M208 X731 Y731 Z108 U731 V731 S0 ; Set axis maxima

     

    I just want to test something, to see if it works and then finetune from there. First I want to draw this picture with a pen to see if its square and later I want to try it with the spindle:

    Estlcam

    After the outer square is done the Z axis rises unreasonably high and I get the error message “G0/G1 outside machine limits”.

    • This reply was modified 5 days, 19 hours ago by  3DRikat.
    • This reply was modified 5 days, 17 hours ago by  3DRikat.
    • This reply was modified 5 days, 17 hours ago by  3DRikat.
    #93623

    Mike Lincoln
    Participant

    Hey There,

     

    There’s nothing obvious there. Maybe if you attach the full file I could take a look?

     

    Looking at the screenshot your (0,0) point (the blue cross) is on the outside square. Try moving that down and left a little to ensure the outside square isn’t  right on the border.

    Also, check what you have in your cancel, pause, resume, etc files. By default I have a feeling some of these move up when a “print” is canceled. I’d start by commenting out everything in those.

    I’ll post my config when I get a chance, but be warned I have things like spindle speed control, feed back from the VFD and a custom version of the firmware with “sticky” spindle speed (so you can restart previous speed with just an M3) and spindle speed correction to remove the non-linearity of my PWM converter.  It’s not going to just run for you without some tweaking but at least it’s a reference.

     

    ~

    Mike

    #94018

    3DRikat
    Participant

    I got it working now.

    There was a endstop set for the z axis

    ; Endstops
    M574 X1 S1 C0
    M574 Y1 S1 C1
    M574 Z2 S1 C2
    M574 U1 S1 C4
    M574 V1 S1 C3

    So I changed it to

    M574 X1 S1 C0
    M574 Y1 S1 C1
    M574 Z0
    M574 U1 S1 C4
    M574 V1 S1 C3

    and now it’s working. Thanks for your awesome help, Mike.

    • This reply was modified 19 hours, 40 minutes ago by  3DRikat.
Viewing 25 posts - 1 through 25 (of 25 total)

You must be logged in to reply to this topic.