Issues setting up duet wifi with dual x axis motors and endstops
-
I am including my Config G file as a reference
I have a 2 heater bed so be carful with that;******************************************************************************************
;******************************** General preferences**************************************
;******************************************************************************************
M111 S0 ; Debugging off
G21 ; Work in millimeters
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
M208 X-40 Y0 Z-2 S1 ; Set axis minima
M208 X565 Y300 Z280 S0 ; Set axis maxima
;********************************************************************************************
;Endstops****
;********************************************************************************************
M574 X0 Y0 Z0 S0 ; Define active low and unused micro-switches
M307 H7 A-1 C-1 D-1 ; assign heater H5 to servo for probe
M558 P9 X0 Y0 Z1 H10 F200 T4600 A20 S0.02 ; BL touch Z probe, used for homing Z axis, dive height 3mm, probe speed 200mm/min, travel speed 4600mm/min, 2 measure average, tolerance 25µm (assuming mm as the unit)
;G31 P1 X43 Y0 Z2.3; Set Z probe trigger value, offset and trigger
G31 P1 X43 Y0 Z2.05; Set Z probe trigger value, offset and trigger height (lower offset brings it further away from bed)
;********************************************************************************************
;Drives****
;********************************************************************************************
M569 P0 S1 ; Drive 0 goes forwards
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
M569 P5 S1 ; Drive 5 goes forwards
M569 P6 S0 ; Drive 6 goes forwards
M569 P7 S1 ; Drive 7 goes forwards
M569 P8 S1 ; Drive 8 goes forwards
M584 X1:2 Y0 Z3:4 E5 ; Apply custom drive mapping
M350 X16 Y16 Z16 E16 I1 ; Configure microstepping without interpolation
M92 X80 Y80 Z1600 E484 ; Set steps per mm
M566 X1500 Y1500 Z100 E2000 ; Set maximum instantaneous speed changes (mm/min) This is temporary test
M203 X4000 Y4000 Z800 E4000 ; Set maximum speeds (mm/min)
M201 X2000 Y2000 Z25 E3500 ; Set accelerations (mm/s^2)
M906 X1200 Y1200 Z1400 E1000 I50 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
;********************************************************************************************
;Bed Leveling**
;************************************** Bed Leveling 2 Screw ******************************************************
;M671 X-100:730 Y141:141 S5 p2; Z leadscrews are at x(-100:730), y(141:141)
;********************************************************************************************
;Manual Bed Screw Level
;M671 x73:73:533:533 Y305:-5:305:-5 P1.058
;Heaters
;******************************************************** ******* *********************
M143 S280 ; Set maximum heater temperature to 280C
M305 P0 T100000 B3750 C0 R4700 ; Set thermistor + ADC parameters for heater 0 Primary Bed heater
M305 P1 T100000 B3750 C0 R4700 ; Set thermistor + ADC parameters for heater 1 Secondary Bed Heater
M305 P3 305 P1 B4725 C7.060000e-8 R4700
;M305 P3 T100000 B4710 C7.060000e-8 R4700; Set thermistor + ADC parameters for heater 3 Tool 1
; M305 P1 B4725 C7.060000e-8
M570 H3 P40 T40
M570 H0 P500 T40
M570 H1 P500 T40
M140 P0 H0 ; first bed heater is on heater 0 output
M140 P1 H1 ; second bed heater is on heater 1 output;********************************************************************************************
;Tools*
;********************************************************************************************
M563 P0 D0 H3 ; Define tool 0 Drive 0 is master drive 1 is slave
G10 P0 X0 Y0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
;********************************************************************************************
;Network*
;********************************************************************************************
M111 S0 ; Debug off
M550 PMakerSlide ; Machine name (can be anything you like)
;Mac Address 60:01:94:0c:58:84
M552 S1 ; Enable WiFi
M555 P2 ; Set output to look like Marlin
M575 P1 B57600 S1 ; Set auxiliary serial port baud rate and require checksum (for PanelDue)
;********************************************************************************************
;Fans
;********************************************************************************************
M106 P0 S1 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
M106 P3 S1 I0 F500 H3 T60 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
;M106 P3 S1 I0 F500 H4 T60; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
; Custom settings are not configured
;M280 P3 S90 I1 ; retractprobe
;*******************************************************************************************
;Miscellaneous
;***************************************************************************************
T0 ; Select first tool
M555 P2 ; Set output to look like Marlin
M140 P0 S80
M140 P1 S80 -
@Veti
i dont recall changing that but will check right now. Also, when i said nothing is working i mean it powers up but move commands do nothing now... it makes the sound like its moving but it doesnt... its weird... -
@percar
why do you have a -40 in your x min axis setting? other than that the only thing i see is your not defining an extra axis for the extra x motor... i was told to assign it to U. so you have
M584 X1:2 Y0 Z3:4 E5 ; Apply custom drive mappingand i have
M584 X0:4 Y1 Z2 E3 U4 ; drivers 0&4 for x, driver 1 for y, driver 2 for z, driver 3 for ExtruderDo i not need to assign it to U... i want each post to have its own endstop... i could easily reconfig it back to so both are working again without tieing them together but then they both home on one endstop, i want them to home independently on their own endstop so if one gets slightly out of sync it can realign the next time its homed.. if that makes sense..
all ive ever used before now is marlin and honestly it setup pretty straight forward and i've not had to touch it in two years, but i want this duet working as it will be more of what i need going forward.
-
@wingtip said in Issues setting up duet wifi with dual x axis motors and endstops:
M584 X0:4 Y1 Z2 E3 U4 ; drivers 0&4 for x, driver 1 for y, driver 2 for z, driver 3 for Extruder
For dual motors on a single axis, define the motors as you have for X. As you intend to home each X motor individually, setting up the U axis for driver 4 is also correct. However, this axis needs to be hidden except for when you home X. So you need to add 'P3' to the M584 command, which makes the firmware show the first three defined axes (excluding the extruder drives). eg
M584 X0:4 Y1 Z2 E3 U4 P3 ; drivers 0&4 for x, driver 1 for y, driver 2 for z, driver 3 for Extruder
I think without adding P3 you won't be able to move the X axis, as the U axis also uses the same driver.
You'll need to make some changes to your homing files; there's a guide here that covers this, though it's related to the Z axis: https://duet3d.dozuki.com/Guide/Independent+Z+motors+and+endstop+switches/18
I had a look through the rest of your config.g and couldn't see any show stoppers! Though I think you're using the default thermistor settings, which are unlikely to be correct.
Ian
-
@droftarts
thank you for the reply and i had originally had the p3 in my config but was told to remove it... I will put it back. And i have read that article you posted so again im just at a loss on why i cant get either motor to move now... they make the sounds like theyre moving but they just sit there and thats only when i do an M564 H0 command to allow moving before being homed... if i dont do that they just sit there and hum a little when asked to move.... could my issues be that i have things out of order compared to the example given above? or does that matter? -
-
Still looking for some answers .... Thank you
-
You have
M264 H0 ; allows movement without being homed first
in your config. M264 is not a valid gcode. It should be M564. Perhaps that's why it's not moving when you expect it to? -
lol that was an error on my part and me being lazy... but even when i take that out nothing is moving... i may just start back over and do it the way i had it working with just one endstop since nobody on the actual duet forums has a clue to why its not working...
-
How's are you trying to move the motors? Are you trying to send a G1 command? The jogging controls? Homing macro?
We need some more info.
If it was working before what did you change to stop it working?
The dual endstop thing could explain it but we need some more detail. If you send m119 to get endstop status what does it say?
-
as i said , when i started tweaking the script as demonstrated in the video link i provided to do a dual motor setup properly is when things stopped working. more specifically the combine axis command x:4 and assigning the U4....
-
when doing M119 i get this:
Endstops - X: not stopped, Y: not stopped, Z: at min stop, U: not stopped, Z probe: at min stop
cause the vertical posts are near mid travel and just sitting
-
The only difference I can see between your config and the example config from @percar is that you have the U axis defined in config.g whereas he does not.
M584 X0:4 Y1 Z2 E3 U4 ; drivers 0&4 for x, drivers 1 for y, drivers 2 for z, drivers 3 for Extruder, P shows home for U
M584 X1:2 Y0 Z3:4 E5 ; Apply custom drive mapping
So perhaps you'll have better luck emulating his setup. It should still work to split the axis for homing as you do in homex.
-
Actually, I think this is your problem. The weird formatting of your config.g.
; Miscellaneous M911 S10 R11 P" M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
The powerloss command has been split up onto multiple lines, so the command M913 X0 Y0 is now it's own command not conainted within the quotes of the M911 command. M913 X0 Y0 is setting your motor currents to nothing.
To verify, send M913 by itself in the console. It should reply with the motor current percentage. Then send M913 X100 Y100 to set it to 100 and try to move again.
-
that was mentioned above and i have since quoted those commands out as instructed. but when i get home from work this evening i will try removing the u axis as you suggest but doesnt that nullify that endstop as well?
-
ok i couldnt wait till after work and i tested this before leaving for work and its moving again!!!!! I didnt remove the U drives and just checked the motor currents as you suggested even though i had them quoted out and sure enough they were zero... unfortuneatly i smashed the x2 motor endstop again when i asked it to home x lol.... so i need to tweak the settings there..
im not sure why that power off setting command has x0 and y0 as ive never messed with it
-
I just ran your original config.g and get these errors in the console:
M98 P"/sys/TEST/config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled Warning: M264 command is not supported Error: GCodes: Attempt to read a GCode unsigned array that is too long: M350 X16 Y16 Z16 U16 E16:16 I1 Error: M911: No power fail script provided Error: G0/G1: insufficient axes homed
As @Phaedrux has already pointed out, and I missed earlier, M264 is incorrect, and should be M564. And really shouldn't be in config.g anyway, as leaves the machine in a potentially vulnerable state at start up. Delete, or change to:
M564 H0
The M350 error is because you're setting the microstepping mode for two extruders, when only one is defined. The command is being ignored. However, x16 with interpolation is the default anyway. Change to:
M350 X16 Y16 Z16 U16 E16 I1
The problem with M911 has already been covered, and sorry for missing that, too. Make sure to edit it back to one line, or comment all the moves out. I expect it was the M913 command setting the motor currents to zero that really caused your problems. Make sure ALL those last 5 commands are commented out, or write it as:
M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
I've also just tested having a U axis defined as you had it. It doesn't cause any problems for me. If I send
M584 X0 Y1 Z2:3 E4 U3
(which suits my machine) I get an extra U axis in the console. After runningM564 H0
I can jog any axis. Jogging Z, both motors move, jogging U, one Z motor moves; as @fcwilt said, hiding/showing it doesn't stop the combined axis moving. I can't see why having the U axis in your config.g would cause the printer to stop. I would hide the axis as standard, though, and only unhide it for homing, so you don't accidentally move it and get your axis out of sync. You do need to have the U motor settings in your config.g, so you may as well define the axis there, too, just hide it. So try changing M584 to:
M584 X0:4 Y1 Z2 U4 E3 P3
Some other minor things:
In the network section, comment out or delete M587 (Add WiFi host network to remembered list). As it says in the Gcode dictionary: Important! Do not use M587 within config.g. As well as being a security hazard, writing the access point parameters to WiFi chip every time you start the Duet may eventually wear out the flash memory. Also, the wifi module does not get enabled until the end of running config.g. It is better to use a macro to send M587 (source: https://forum.duet3d.com/post/42798)You don't need the M111 S0 (Debug) or M555 P1 (Set compatibility) codes.
Thermistor settings: you are using the default values,
M305 P1 T100000 B4138 R4700
, which are probably incorrect.I'm not sure where all the extra spaces in your config.g came from. Did you edit it in a text editor that converted the line endings to two returns? Or just spaced it out for your visibility? It's not a problem, but just make sure when you do this that you are breaking the lines in the right place! All lines need to start with either a gcode, or a comment mark ";".
Hope that helps. It's been good for me to test some of these things out!
-
@droftarts
Thank you so much for your input. A few of those issues have already been addressed but I will post an updated config file later this evening. I will also certainly address some of the other issues you mentioned.
Most of the script was auto generated but I did insert/edit some changes from the video I linked earlier that showed their code for a dual x setup.The next issue is figuring out why the x2 motor endstop isn’t working. Which is technically u4 endstop
-
@wingtip said in Issues setting up duet wifi with dual x axis motors and endstops:
The next issue is figuring out why the x2 motor endstop isn’t working. Which is technically u4 endstop
The U endstop should be connected to the E1 endstop connection, like the U motor is connected to the E1 motor driver. If you have a known-working endstop, swap it over, and test by pressing each one and see if it's registering in DWC (Machine-Specific tab, Endstops).
I think the U axis has to be defined by M584 in config.g, and the U axis be visible in DWC, for the endstop to be seen, and it might even be that you need to split the axis (ie M584 X0 U4) for each X axis endstop to register. Otherwise it will only be seen in the homing script, where again, you have to split out the axes. I haven't tested this as I don't have a machine set up with an axis made up of two motors with endstops for each; I have a IR probe on the Z axis of my Cartesian machine.
Ian
-
Thank you all for the help so far... currently the motors are moving again. here is my current config file. the current issue is with an endstop. I temporarily have everything unhidden so i can check the endstop status in machine properties and make movements to the x or U (my x2 motor).
If i do an x move say +10, BOTH POSTS MOVE. Ok no biggie at least they're in sync...but if i do a U movement only the x2 moves. Ok no biggie that one will be hid later.
if i hit home x, both motors start moving together and heading towards home as they should. However, if i manually hit the x1 endstop with my finger the x1 motor stops and the U/x2 motor keeps coming as it should.. but when i trigger the endstop for that one the motor keeps coming until i have to E stop or power off before it tries to smash another endstop.
Ive confirmed in the machine status window the endstop works and will trigger but no matter which way i configure the endstop high or low etc it just ignores it so it has to be something elsewhere in the config...
So for reference:
x1 motor plugged into the x channel aka drive 0, this endstop plugged into the x slotx2 motor plugged into the E1 channel aka drive 4, which is remapped as U4, this endstop is plugged into the E1 endstop channel.
config.g