Dual Z-axis endstops
-
This me TWO days to figure out why my machine was grinding when homing. Then I realized on EVERY home move the right endstop hit before the left. If I moved the bed down 30MM or more this would happen.
While in this configuration, the motor hooked up to the original Z plug moves faster than the one in the U plug.
Any ideas on why this is happening?
Note: When tested with both motors in Z plug, homes and moves normally. I DID put the jumpers on as for a 1 Z motor hookup.
[[language]] ; Configuration file for Duet WiFi (firmware version 1.17) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool on Sat Mar 18 2017 20:32:40 GMT-0400 (Eastern Daylight Time) ; General preferences M111 S0 ; Debugging off G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M555 P2 ; Set firmware compatibility to look like Marlin ;DUAL Z M584 X0 Y1 Z2:3 U3 E4 M667 S1 ; Select CoreXY mode M208 X0 Y0 Z0 U0S1 ; Set axis minima M208 X300 Y300 Z320 U320 S0 ; Set axis maxima ; Endstops M574 X1 Y2 Z1 U1 S1 ; Define active high microswitches ;M558 P1 X0 Y0 Z0 H5 F120 T9000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds ;G31 P600 X0 Y0 Z0 ; Set Z probe trigger value, offset and trigger height ;M557 X15:285 Y15:285 S20 ; Define mesh grid ; Drives M569 P0 S1 ; Drive 0 goes forwards M569 P1 S0 ; 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 M350 X128 Y128 Z128 E16 I1 ; Configure microstepping with interpolation M92 X800 Y800 Z3200 U3200 E138.4336 ; Set steps per mm M566 X600 Y600 Z24 U24 E300 ; Set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 Z300 U300 E1500 ; Set maximum speeds (mm/min) M201 X2000 Y2000 Z100 U100 E4000 ; Set accelerations (mm/s^2) M906 X800 Y800 Z800 U800 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Heaters M143 S260 ; Set maximum heater temperature to 260C M305 P0 T100000 B4388 R4700 H0 L0 ; Set thermistor + ADC parameters for heater 0 M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1 ; Tools M563 P0 D0 H1 ; Define tool 0 G10 P0 X0 Y0 Z0 U0 ; Set tool 0 axis offsets G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C ; Network M550 PBlack Widow ; Set machine name M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP ; Fans M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on ; Custom settings are not configured
-
What do you have in your homez.g and homeall.g files? Perhaps you still have driver 3 assigned to Z as well as U when you are Z homing.
Edit: i just spotted that your M350 command doesn't set microstepping for the U axis.
-
I'm pretty sure I had it in there before I switched back to 1 Z for testing but I'll add back and test again tonight, just in case.
Here is homez.g. Homeall.g hasn't been updated yet.
[[language]] ;DUAL Z M584 Z2 M854 U3 G1 S1 Z-320 U-320 G92 Z.04 M584 Z2:3
-
M854 in your homez.g file is not a valid gcode, I presume you meant M584.
-
Good catch. I'll report back results.
-
I am really looking forward to the dual z end stops as well how long do you think it will be until the beta release?
-
Have you read the recent posts in this thread to see how you can [probably] do it already?
-
Yes I saw the post have that working but would like to get my NPN probe back eventually if possible.
-
If you mean that you can't connect your NPN probe to the E0 endstop connector because it is used for the second Z homing switch, you can connect your NPN probe to E1 endstop connector or to the Z probe connector instead if you select the appropriate probe type in your M558 command.
-
I got this working fine and will post my setup here soon. There is some oddities when lowering Z after hitting the endstops and only one axis move if I do not add S2 as instructed by David. I did report this as an bug on github as it seems it should not behave like that.
-
I'm working on a big IDEX build. Would the method you guys have described here also work for a Y axis using 2 steppers? It could be nice to tram the X axis at the start of a build.
-
Yes it should be possible to use dual Y homing switches in the same way.
-
Having fiddled with dual Z now for a while I'm not to fond of the extra axis in the UI. Z controls both Z motors but U only controls the one. How can I hide the U axis or at least disable it so I don't accidentally move only one Z motor?
Pretty easy to hit U instead of Z
-
I can think of two potential solutions, both requiring firmware changes:
1. Implement support for multiple Z homing switches directly in firmware, so you don't need to configure additional axes. This is what I had planned before I realised that you could do it using additional axes.
2. Add a facility to specify a number of displayed axes that is lower than the total number of configured axes.
In the meantime, you could avoid the risk of moving only one Z axis by mapping the U axis to a non-existent motor except during Z homing
-
Are there any updates to official firmware that has support for this? If not, would it be possible to use a macro to temporarily reassign drivers, home both sides, then revert back to the assignments in config.g (or manually copy and paste those settings into the macro)?
I'm hoping to avoid the need to have extra axes controls that can be messed with on accident or the need to mod the firmware to mitigate this. Plus, I only intend to perform this action once at startup, not before each print since I want to level my gantry and let my probe handle normal homing. Once current is applied to the motors I shouldn't need to do this again.
-
Firmware 1.19beta6 will support hidden axes. So you will be able to use the U axis for the second motor during homing, but the user interface will not provide a Home U button, nor jog controls for the U axis.
The firmware changes for this are already implemented, but not tested yet.
-
Marvelous! I think I'm on 1.17 so I'm due for an update! I only see the beta5 on github, is there somewhere I can get the latest? Is there any documentation on the new functionality and how to setup?
-
1.19beta6 will be released when I have tested it. The M584 command has a new optional parameter P which specifies the maximum number of visible axes. So if you use M584 to create a U axis but also specify P3 in that command then the U axis will be hidden.
-
Ahh, I'll keep an eye out for that and let you know if I have any questions, thanks David!
-
Is the dual Z-endstops implemented, or going to be implemented in 1.19, or do we use the solution you outlined below?
I'm homing to Z-max using 2 independent motors and want them to "sync up" when homing, as all sorts of things can happen to make them go out of sync.
I expect to implement multiple Z homing switches in firmware 1.19. In the meantime I think you can achieve the same thing as follows:
1. Put this command in config.g:
M584 X0 Y1 Z2:3 U3 E4
This assigns your second Z motor (connected to the E0 motor output) to both the Z and U axes.
2. In your homez.g file, do this:
M584 Z2
G1 S1 Zxxx Uxxx
G92 Zxxx
M584 Z2:3This splits Z into the Z and U axes, homes them simultaneously, and then restores normal Z movement. Fill in the xxx values to suit your machine - see https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_Cartesian_printer#Homing_files.
3. Change the Z homing section of homeall.g to do the same.
4. Connect the second Z endstop switch (the one you use for the U motor) to the E0 endstop input.
Test the above carefully, with low motor current and a hand on the power switch, in case I have forgotten something.